CASE STUDY 15 / 16AI-POWERED BUSINESS PLATFORMFOUNDERPRODUCT LEADERSHIPHANDS-ON ENGINEERING

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.

MY PART
Set the product direction and coded the platform, reviewing every change its coding agent made.
BUSINESS
Pop-up retail, events and bouquet-making workshops
BUILT WITH
Claude Code, in production
FIG.01 · ILLUSTRATIVE INTERFACE, NOT A SCREENSHOT
0%Assistant requests that failed in the verification run, down from 32% before the fix
£0Infrastructure cost to run the platform
3Ways the business sells: pop-up retail, events and workshops
10Features taken from written spec to shipped code with Claude Code
01THE ASSISTANT

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.

FIG.02 · HOW ONE REQUEST IS ANSWERED, SIMPLIFIED
02RELIABILITY

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.

03PREDICTION

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.

FIG.03 · FORECASTING, SIMPLIFIED
04THE BUSINESS

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.

See the flowers on Instagram@PetalPartyLDN ↗
05WHY I BUILT IT

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.

06HOW I BUILT IT

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.
07TECH STACK

Tech stack

[a] FRONTEND
React 18ViteTypeScript
[b] BACKEND
Node.jsExpressZodpg-bossPython (forecasting)
[c] DATA
PostgreSQL 16PrismapgvectorAWS RDS
[d] AI & CLOUD
Claude CodeVercel AI SDKFive hosted model providersAWS S3AWS EventBridge SchedulerAWS CDKCloudflare R2GitHub ActionsVercel

Say hello.

LINKEDINlinkedin.com/in/danielgorgonia

Hidden from bots until you click.

LOCATIONLondon, United Kingdom
LOCAL TIME--:--