Skip to content
The lab

The lab: what the studio builds for itself, in public.

Client work carries names and numbers. Lab work carries neither — it is the studio using its own tools on itself, and everything here runs live on this site.

Why a lab exists at all

The publishing rule that governs client work — a name and an agreed figure, or it does not go up — is the right rule, and it has a cost. It means a young studio can be doing its best work and have almost nothing to show, because the best work belongs to someone who has not cleared it yet. The lab is the answer to that. There is no client to ask, so the constraint disappears and the technique can be shown at full strength.

One condition keeps it honest: nothing counts as a lab piece until it runs in production. Not a prototype, not a demo reel, not a shot of something that worked once. Both pieces below are load-bearing parts of this site — one answers your message, the other is the ground you are reading on — so what you can judge is not whether the studio can build them, but whether they hold up while you use them.

MK Growth Concierge

An intake agent on Cloudflare Workers and Durable Objects: it receives a brief, matches it to a service, drafts the first response and hands off to a person. The diagram on the homepage illustrates that intake flow, and the form on the contact page feeds the agent behind it.

Read the case

Signal Terrain

The WebGL field behind the entire homepage: a contour terrain in the brand's gold and navy that swells on arrival, rises toward the cursor, and turns with the page's three acts — night, paper, night — as you scroll. One shader on one triangle, loaded only where a GPU can carry it.

Read the case

Next: an authored WebGL piece

In progress for autumn 2026: a piece authored for its own sake rather than lifted from a client build, and the first thing here that will not also be doing a job elsewhere on the site. It lands in the lab before it lands anywhere else. Until it runs in production it stays an empty slot, because that is the rule above and this row is where it would be easiest to break it.