Mac app · 2026

Facet

Game design is one of my personal passions, and that’s where Facet started. It’s a Mac app I designed for running AI coding agents on big projects, and it works on any kind of project, not just games. You break a project into parts, say what good looks like for each one, and Facet sends Claude or Codex off to improve them. Nothing changes until you’ve seen the before and after.

What I did
Designed it, wrote the spec and tests, directed the build
Built with
Electron, React, TypeScript; Claude and Codex
Status
In use on my own projects; Mac only, not released
Facet two hours into a run on Do Not Disturb, showing before and after pictures and the rounds of work so far
A two-hour run on Do Not Disturb, a co-op horror game I’m building in Unreal Engine. Facet is on round three. A round is only kept if the project’s checks pass and the before and after pictures show nothing else broke.
  • 206,079lines of code in the game, split into 11 parts
  • 46automated checks that guard those parts
  • 32things it scores out of 10, like how doors move
  • ~47,000lines of TypeScript in Facet itself

Why I built it

I was using Claude and Codex to build games, and “make it better” wasn’t working. The agent would change a bit of everything, say it had all improved, and I couldn’t tell what had actually got better or what it had broken along the way.

I wanted to point at one part of a project, say what good looks like, and get proof back. Facet is the tool I wanted.

Games are what I use it for most, but nothing in it is specific to games. It works on any project that can be split into parts and checked, like a website or a data pipeline.

Facet's overview of Do Not Disturb: 11 parts, scores, the run in progress and the parts that need work most
The overview. Facet read the game and split it into the parts I’d talk about (the Guest, the hotel, sound, doors), each with its own score and its own checks.

How it works

  • It maps the project. Facet reads the code and docs and splits the project into parts in plain English. It then checks every file belongs to one of them.
  • It scores each part. An AI judge looks at pictures and listens to sound and gives each aspect a score out of 10 with the evidence. The overview shows the weakest parts first.
  • You agree a contract. Every request comes back as three lines: what will change, how it will be judged, and what must stay the same. Work starts when you say go.
  • The work happens in a copy. The agents work in a separate copy of the project, so nothing changes in yours until you press Keep, and the project’s own tests run first.
  • It can run for hours. You can hand a part over for an afternoon. Claude does the work and Codex reviews it every hour. If one subscription hits its limit, the job moves to another account with the whole conversation and carries on.
Three cards showing the weakest parts: the staff lift at 3 out of 10, how the Guest gets round the hotel at 3.8, how doors move at 4.6
Where to start. The weakest, most visible and cheapest parts to fix come first.
A before and after slider comparing pictures of a character from the same camera
Before and after, from the same cameras, for every change.
The list of rounds in a run, each with what changed and why it was kept
Each round says what changed and why it was kept.

How I built it

I wrote the spec, the design rules and the tests it had to pass. Claude and Codex wrote most of the code. My job was deciding what it should do, checking what came back and sending it back when it wasn’t right.

I’m applying for analyst jobs, not engineering ones. I’ve put Facet first because it shows how I like to work: break a problem into parts you can measure, decide what good looks like before starting, and don’t accept a result without evidence.