← back

Case study · 2026

Muse Mirror

Your taste, made scalable. A creative engine that studies a founder's own references and then art-directs new work that still reads as theirs.

Role
Product, creative systems, front end
Stack
Next.js, Three.js, Vercel
Payments
Circle user-controlled wallet, OKX x402
Shipped
Live at musemirror.app

What it had to do

Founders do not lack image generators. They lack a generator that knows what they would have chosen. Every tool on the market takes a prompt and returns something competent and anonymous, which is the one outcome a brand cannot use.

So the product was never “make images”. It was: read a person's existing work closely enough to extract the rules underneath it, then apply those rules to briefs they have not written yet.

The decision that mattered

The obvious build is style transfer: take the reference, copy its look. That produces work that is recognisably derivative of one image rather than recognisably the founder's.

Muse Mirror extracts the rules, not the skin: hierarchy, rhythm, spacing, colour logic, tone, how type behaves, how image and text relate. It holds those constant while varying format, crop, metaphor and scale. Same taste, different outcomes. That single choice is what separates it from a filter, and it set the shape of everything downstream: the system has to recommend a medium and a hook before it generates anything.

What I built

A Next.js product with a landing page built around a living proof wall, and a dedicated Studio route where the direction happens. The hero feed is not hand-curated: approved outputs are converted to timestamped WebP and read from disk at build time, so publishing new work is one command rather than a code edit.

Payment runs on a Circle user-controlled wallet with OKX x402, so the product can charge an agent as easily as a person. The consumer path is a real wallet gate, not a mock.

What happened

It shipped and is live at musemirror.app, listed on OKX.AI Genesis as an A2MCP service provider.

The most useful failure came late. Asked for images from a reference, it returned a document describing an invented product instead. The cause was an ordering bug in intent: finding the creative direction ran first, so the instruction's filename became the brief and the export became a strategy report rather than pictures. The fix was a distinct from the reference path where the image is the brief, generation starts immediately and instruction filenames are stripped.

It is a good illustration of the actual risk in agent products: not that the model produces something bad, but that it confidently answers a question nobody asked.