Selected work

Eight systems, and the problem each one solved.

Undocumented, outgrown, or never built at all. Every entry names what the fix cost.

Sectors
Commerce · Health · Retail · Content · Industry
Length
4 weeks to multi-year
Role
Built alone · led as the studio · inside the client’s team

In production

Bare metal · managed cloud · edge

Industry · In production

Twenty years of undocumented systems, made searchable

A multi-country industrial group had to replace an ERP nobody held a complete picture of any more.

A telecommunications patch cabinet with its cables running in every direction, unlabelled and crossing over one another, no route through them traceable by eye.
Problem
Two database servers, twenty years of business logic added one change at a time, and no documentation of any of it.
Decision
Map it before moving any of it, and make the map something you can search: 72 databases, roughly 3,000 tables, 753 stored procedures, 1,435 views.
Trade-off
Mapping first pushed the first migration back by weeks. It also found 826 tables no process ever writes to.

Shipped

  • One searchable map across both database servers
  • 111 scheduled jobs mapped and classified across four hosts
  • The same map opened to AI agents, read-only, every answer cited
  • Deno
  • Zod
  • DuckDB
  • MCP

Problem

Decision

Trade-off

01 · Retail · In production

Eight websites replaced by one

Autocorner, a Swiss dealer group selling Audi, Škoda and BYD, ran a website per location.

The Autocorner website, a vehicle search panel standing open over a night photograph of a mountain range.
Problem
Eight codebases in one place, drifting apart, and no way to change something once and have it apply everywhere.
Decision
One application for all of them, with each location’s own content — branding, hours, team — held separately.
Trade-off
One release now reaches every location. So does a bad one.

Shipped

  • One application, one deploy, one content record per location
  • AutoScout24 client generated from the published API description
  • Per-location branding, hours, team and sync interval
  • Next.js
  • Sanity
  • tRPC
  • OpenAPI

02 · Industry · In production

Finding out about failures before customers do

Production failures were reported by telephone, by whoever noticed first.

A control room with instrument panels covering the walls from end to end, a clock set among them, and the desks and chairs left empty under a lit ceiling.
Problem
Mixed machines including one past end of life, several databases, and no route out to reach a monitoring service.
Decision
Run the monitoring inside the network, on machines the client already owns.
Trade-off
The monitoring is now one more system somebody has to keep running.

Shipped

  • Collectors across mixed hosts, including Windows Server 2008 R2
  • Dashboards, and alerts that reach a person
  • 23 GB freed on a critical database, backed by a write-frequency matrix
  • OpenTelemetry
  • Self-hosted
  • Windows
  • No egress

03 · Industry · In production

Modern software onto Windows servers with no internet

The machines ran Windows Server 2008 R2 through current versions, with no code hosting, no build server and no internet.

A control console bolted to the side of a machine tool on a shop floor, its screen and keypad set above a red emergency stop, the machine enclosure and its window behind.
Problem
The people who run these machines are Windows administrators; they have to install and restart it themselves.
Decision
Compile the whole application into one Windows program, with nothing to install underneath it.
Trade-off
Updating means replacing one file and restarting the service: a short gap rather than none.

Shipped

  • Single-binary services and scheduled-task workers
  • Local buffering, so a machine survives losing the network
  • Proper MSI installers, so an update is repeatable
  • Deno
  • oRPC
  • .NET Aspire
  • WiX

04 · Commerce · Delivered

A marketplace selling to the public and to companies at once

Kooko, a Swiss marketplace for food from local vendors, sells to shoppers and invoices companies from the same shop.

The Kooko website, a plated meal photographed beside the offer to deliver it to an office.The Kooko website, a plated meal photographed beside the offer to deliver it to an office.
Problem
Company buyers need quotes, an approval step and one invoice at the end of the month. The platform underneath supported none of that, and allowed one shop per installation — a rule written into its database.
Decision
Change the platform we already had, rather than buy a marketplace product and start again.
Trade-off
Changing a platform’s data model makes every future upgrade of it our job.

Shipped

  • Store tenancy retrofitted: request-scoped service, store id per user
  • Two migrations whose only job is to allow a second store to exist
  • Quotes as draft orders, payment reconciled in one transaction
  • Medusa
  • Strapi
  • Twint
  • Self-hosted

05 · Retail · Building

One place to plan what every location can take on

Autocorner again, second mandate: appointments, capacity and handovers in one system every location works in.

A parking deck marked out into bays and standing empty, the white lines running away between the pillars under a line of ceiling lights, a number stencilled on the concrete in the foreground.
Problem
Each location plans in its own spreadsheet, so nobody can see what the group can take on this week.
Decision
Reach the system each location already runs through one connector, so a second brand is configuration rather than a project.
Trade-off
Building one connector costs more than wiring up the first system. It costs less than wiring up the second.

Being built

  • One shared view of capacity and bookings across locations
  • Slot and resource planning, configured per site
  • The system each location already runs, kept in place behind one connector
  • Convex
  • Sanity
  • Reactive
  • Vendor connector

06 · Health · In production

A practice that updates its own website

Cabinet des Alpettes, a neuropsychology and psychotherapy practice, wanted to add a service or change a page themselves.

The Cabinet des Alpettes website, its services listed beside a photograph of a consulting room.The Cabinet des Alpettes website, its services listed beside a photograph of a consulting room.
Problem
The practice has no in-house developer, and a website is not a reason to hire one.
Decision
Give the clinicians blocks they arrange themselves, rather than templates only a developer can change.
Trade-off
We host the content system, so keeping it running is on us.

Shipped

  • Eight page blocks, arranged in any order on any page
  • Click to edit, on the live page itself
  • Private preview before anything is published
  • Astro
  • Directus
  • Zod
  • Self-hosted

07 · Content · Recurring

Websites and shops built on content the client owns

Not one project but work we repeat: a fast public site over a content model that stays with the client.

Printed sheets stacked deep under a bank of inspection lamps, one sheet standing proud of the pile and another lying open in the light.
Problem
Marketing teams inherit a site that publishes one shape of page, and needs a developer for anything else.
Decision
Structure the content first, then publish pages already built before anyone asks for them.
Trade-off
A published page appears a minute or two after the edit, not instantly.

Shipped

  • Structured content model with review states
  • Multilingual routing and localised URLs
  • Performance and accessibility as acceptance criteria
  • Astro
  • Sanity
  • Shopify
  • Static-first

Policy

Why there are no logos here.

Client names and figures stay confidential until the client clears them. Three above are named because they did. Yours would be too.

Next step

Recognise yourself in any of these?

Tell us what is not working. You will get an assessment back, not a sales call.