Inspiration
My wife is launching a personalized photo-magnet business. Orders will come through Shopify and Instagram ads. Production happens at our dining table with a heat press. And between those two worlds sits the spreadsheet every maker ends up with, the one that never talks to the store.
During a trial run I watched her print a test photo, press it onto a magnet, and only then discover it was too blurry to gift anyone. Wasted material and a reprint, and that was with zero customers. The store side had software. The production side had hope.
When you run a one-person factory, Shopify handles the store beautifully, but the physical half, what is printed, pressed, ready, or late, stays messy. I decided to build the production layer before opening day instead of after the mess. Shopfloor is that layer.
What it does
Shopfloor is the production line behind a Shopify store. It pulls in every order, and before anything prints, GPT-5.6 inspects each customer photo the way a human would, judging whether it will survive being printed at 50mm: sharpness, resolution, exposure, faces that a square crop would cut. Flagged photos trigger a warm, plain-Spanish message and a secure one-tap re-upload page for the customer. The owner (my wife) runs her whole day from a single queue, tapping orders through print, press, and ship. Underneath, Datadog tracks the business itself: cycle time per stage, backlog age, rejection rates. And when production breaks, Shopfloor doesn't send a notification nobody reads. It speaks: a GPT-5.6 incident copilot reads the live queue and recent events, writes three plain sentences on what happened, the likely cause, and what to do, and an ElevenLabs voice reads them to her out loud.
How I built it
Codex built this system with me end to end, from the FastAPI and SQLite skeleton to the QC worker, the re-upload flow, and the chaos switches I use to break things on demand. I stayed in a single Codex session all week so the collaboration itself is auditable. The stack is deliberately small: FastAPI, SQLite, server-rendered pages with htmx, one asyncio worker, Datadog for observability, deployed on Render. My job was product judgment: what a real maker needs, what the prompts should say, and what to refuse to build.
One rule I held throughout: when AI inspection is unavailable, photos stay visibly pending instead of silently passing. Fail closed, never fake.
Challenges I ran into
The hardest part was not writing code, because Codex writes code fast. It was that the vision kept evolving as fast as the product did. Every time I saw the thing working I understood the problem better, and I iterated far more than I planned. What AI does not bring to that loop is taste: the criteria for whether something is actually useful, and the judgment to call a result wrong. Two days in I fed the queue a blurry photo and one that was badly cut, and both passed. The code was running fine. The product was lying. Catching that, and deciding the gate must fail closed rather than fake a verdict, was a judgment call no amount of code generation replaces.
The second challenge was knowing when I was gold-plating. When building is this cheap, features want to sneak in endlessly, and every one of them is another failure point and another thing for the user to misunderstand. Mid-week my wife proposed a personalization-approval workflow that was genuinely good, and the discipline was saying: roadmap, not now. Multi-tenant, delivery tracking, and support automation got the same answer. A tight product that does its core job beats an impressive one that breaks in more ways.
What I learned
Where to draw the AI line. You can build anything with AI, but daily operation is a different question: every AI call costs money and adds a way to fail. So the rule became deterministic code everywhere it can do the job, and AI only where it does something deterministic code never could. In Shopfloor that is exactly two places: looking at a photo the way a human would, and explaining an incident in plain language.
I also learned that observability is not just for servers. A solo maker deserves to know where her Tuesday went the same way a platform team does. And the best interface for someone whose hands are on a heat press is not another dashboard. It is a voice telling her what happened and what to do next.
What's next for Shopfloor
Configurable production stages for any craft, not just magnets. Delivery tracking. And "where is my order?" answering itself. My wife's shop is customer zero. Every maker with a spreadsheet next to their store is customer one.
Log in or sign up for Devpost to join the conversation.