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.
“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.
Models that rerank results by what a shopper means, trained on how people actually search and click across many stores.
Collection pages and homepages ordered for each visitor. One product view and the grid reorders toward their taste.
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.
Fig. 06Head to head
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 test, won or lost, teaches an engine that proposes the next ideas for every client. Agents build them; people review them.
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.
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
- Shopper events
- Features & embeddings
- Candidates
- Ranking
- Serving
- Experiment
- Retrain
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.