Petal Party LDN.
An AI assistant and forecasting platform I built for Petal Party, the small flower business I run on the side and my own lab for AI-assisted delivery: the model chooses the stems, server code sets every price.
Taste from the AI, maths from the server
Ask it to plan a spring bouquet for Friday. The AI reads what the wholesaler has in stock, picks the stems and explains the choice; the server then prices every stem and checks the margin. AI models are good at taste and bad at arithmetic, and a wrong price costs real money, so the model never touches one.
0% failed in the verification run
AI models sometimes return an answer in the wrong shape. On the assistant's test set, a fixed set of requests covering every kind it takes (recipes, stock questions, knowledge answers and open-ended planning), 32% of attempts failed that way. I built a four-step recovery into every structured call, and in the verification run on the same test set 0% failed: 20% still came back malformed the first time, and every one was recovered. Before release, the assistant also had to pass a scored test set graded by a second AI model; a release that scores below the bar does not ship.
1 · Capture
Catch the malformed answer instead of showing an error.
2 · Repair in code
Fix it in code, with no second AI call. Recovered 5% of requests in the verification run.
3 · Retry once
Ask the AI again, telling it exactly what was wrong. Recovered 15% of requests in the verification run.
4 · Safe fallback
Give a safe, knowledge-only answer rather than an error. Needed by 0% of requests in the verification run.
What will sell, and what won't
Three forecasts, kept deliberately simple so every number can be explained. They run on a schedule as a separate batch job, and the app only reads the saved results, which keeps the platform inside a £0 infrastructure budget.
Next price
A weighted average of recent wholesale prices that trusts the latest most (EWMA).
Demand
Starts from the latest demand and carries it forward (a persistence forecast).
Clearance risk
Scores which stock is at risk of going unsold.
The business it runs
Petal Party LDN is a London flower business I founded in 2025 and run end to end: buying stock from a Dutch flower-auction wholesaler, pricing it, and selling it three ways.
Pop-up retail
Flowers sold direct to customers at Petal Party's own pop-up shops.
Events
Flowers designed and arranged for events.
Bouquet-making workshops
Workshops where people learn to make a bouquet of their own.
Stock that dies
Flowers are the hardest kind of stock: they wilt within days, and wholesale prices change every day. Buy too much and it ends up in the bin; price too low and there is no margin. I was working it out in spreadsheets, so I built a system to do it.
Live wholesale stock
Pulls what the wholesaler has in stock, and what can be pre-ordered, into one catalogue.
Prices and margins
Turns each wholesale cost into a breakeven price per bunch and a projected margin.
Product details
AI fills in each flower's product details, audited for quality across 6,646 flowers.
Built with Claude Code, under rules it can't break
Petal Party is my own business, so every layer is my work: the product decisions, the code and the operations. I built the platform spec-first with Claude Code, with GitHub Copilot's coding agent contributing under my review.
- Wrote every feature as a spec first, then built it with Claude Code: 10 features taken from written spec to shipped code, each traceable from requirement to commit.
- Blocked the AI coding agent from running database migrations or reading cloud secrets at the permission level. A prompt asking an agent not to do something is a request; a permission block is a control.
- Delegated work to GitHub Copilot's coding agent, reviewing and merging every change it made personally.
- Coded the Express, Prisma and PostgreSQL backend and the React and Vite frontend.
- Kept the assistant portable across five AI model providers behind one SDK, so switching provider is a runtime decision rather than a rewrite.
- Run OWASP Top 10 security reviews as a standing practice, triaging and closing findings by severity.
Tech stack
Say hello.
Message sent.
Thanks for getting in touch.