The game · Five minutes, one song
Unwritten Stars
A five-minute action game set to one song. Run the road before the Blight eats it.
Play Unwritten StarsML engineer · Coframe · San Francisco
I build the machine learning that decides what you see next.
Recommendations, search and feeds at Coframe, end to end. Father of two.
The game · Five minutes, one song
A five-minute action game set to one song. Run the road before the Blight eats it.
Play Unwritten Stars
Found the best stick
Rings, in order, eventually
Saturday groceries
The four of us
Cold start: Jonathan’s picks. Press anything and it re-ranks.
Turn on JavaScript and these buttons do real things.
Side A · Three songs
Game night
Guess the number. Price the room.
More asks
01 — The shelf
A real recommender, running in this tab. Every drawing on this page sits somewhere in five topics. Play with one and the shelf updates what you seem to like, scores everything against it, keeps rows from turning into an echo chamber, saves one slot for exploring, and reorders itself. It learns only from what you deliberately open or play. Nothing is stored and nothing leaves your browser.
Cold start: these are Jonathan’s picks.
| Step | On this page | At Coframe |
|---|---|---|
| What gets ranked | Twelve drawings | Live product catalogs |
| What it learns from | The drawings you open and play | Real shopper behavior, from the first visit |
| The model | A Dirichlet over five topics | Learned embeddings and rankers |
| How it stays fresh | Updates after every open | Updates after the next product view and retrains on schedule |
| Where it runs | Your browser, in a fraction of a millisecond | A production ML API, fast enough to add no visible wait |
| How we know it works | You watch it move | Every model ships as an A/B test against what was already there |
Coframe uses AI to optimize and personalize websites. I run two connected programs there. The first puts machine learning on client storefronts: recommendation and ranking models for product pages, carts, search and first visits, each one an experiment against the store’s own page. The second is the platform those models move onto, where every client’s use case is configuration instead of custom code. I build both with a fleet of AI agents, and people make the decisions. Each machine below runs the real idea. Press its buttons.
Rails that rank themselves.
“You may also like.” “Complete the look.” “Recommended for you.” Rails that personalize from a shopper’s first visit and update after their next product view. Each purpose gets its own model (explore, substitutes, complements), and what a shopper viewed or bought is an input to the model, never a pin or a filter.
Words in. The right products out.
Models that rerank results by what a shopper means, trained on how people actually search and click across many stores.
Every grid, ordered for one person.
Collection pages and homepages ordered for each visitor. One product view and the grid reorders toward their taste.
Raw events in. Live models out.
Events, features, training, evaluation, publishing and serving in one place. Every model trains on the goal of the experiment it serves, usually revenue per session. A client’s full ML stack is a routine launch, and models retrain on schedule.
Live shoppers decide.
Every model ships as an experiment against what was already on the page, including established personalization vendors in their own slots. A new model replaces an old one only when it at least ties it, a gain inside the noise doesn’t count, and a model has to beat the best simple rule.
Every experiment feeds the next.
Every test, won or lost, teaches an engine that proposes the next ideas for every client. Agents build them; people review them.
The platform the models move onto, and the way all of it gets built.
Every use case is configuration, not code.
The new serving platform under the models. Each client’s use case is a row in one registry plus shared engine parts: where its items come from, how often they refresh, and the shape of the answer. Clients stay walled off from each other. A model runs in shadow first, answering beside the old stack without showing, and a surface flips only after it passes a gate, with the way back written down before the flip.
A fleet of agents. People hold the decisions.
I build all of this with a fleet of AI agent sessions. A command center plans one ordered graph of work, about eighty lanes each own a project, builders take the rows, and an advisor audits the plan and tests the builders. Every finding is checked against a second source before it reaches me, work lands one tested merge at a time, agents never touch a working live slot, and the person who owns a launch makes the launch.
One loop, run for every client, every day. Raw events come in, live models go out, the experiment says whether they won, and the result feeds the next model. A surface only counts as live once a fresh visitor actually sees the model’s items on the page.
Songs made with Suno. The picture show is drawn live in your browser, in ink.
Now playing
Follow the stolen ship for one song.
A five-minute action game set to “Three Hearts Inside a Stolen Ship.” Run an unwritten road through a hollow world while the Blight eats it behind you. Your weapons fire by themselves; every level is a choice that branches and evolves, so no two runs play the same.
Play Unwritten StarsKeyboard, touch or gamepad · Sound on
Game night
Guess the number. Price the room.
A trivia game for friends who think they know things. Everyone locks in a guess, the guesses become an odds board, and you bet on whoever you think is closest without going over. Play at a live table now, or start a room and text the link so everyone plays on their own phone, with voice chat and AI guessers who explain their terrible reasoning in the group chat.
Play Priced InMost of what I believe about learning, I believe more since becoming a father.
Not ranked.
Some things you don’t optimize.
From “help me” to “I do it.”
The best sound in parenting is “help me” turning into “I do it.” A balance bike gets there faster than any lecture.
The little boat is Maggie.
On the walk home along the water, every boat gets a job in the family. The little boat is Maggie. The fat boat, I am told, is Daddy.
If it rolls, it gets studied.
Monster trucks, fire trucks, trains, cranes. If it has wheels, it requires investigation, ideally from very close up.
Five is the largest reasonable number.
Five books, every night, because five is currently the largest reasonable number in the universe. So far, the books are winning.
Five little ducks, in Mandarin.
Our home runs in Mandarin and English. The songs we sang to our kids, they now sing back to us.
He mixes. She eats the cheese.
He mixes the batter with great seriousness. His little sister supervises and handles the cheese.
A walk home from preschool can take three hours. Every boat, fire truck and unusual machine requires investigation.
Pay attention. Try things. Keep what works. Change your mind when reality disagrees. Leave room for surprise.
The same rule, at work and at home.