Selected work

Five builds, described in full.

Each entry says what existed before, what was built, and what it replaced. What none of them says is who it was for.

The first one turned a £1,000 invoice and a week’s wait into a few minutes of compute, on every product page that retailer launches from now on.

01 Retail · Shopify

Product pages that write themselves

A Shopify retailer was paying an outside agency around £1,000 for every new product page, and waiting a week for each one. Every launch carried the same invoice and the same delay.

The cost was not the design. The pages already followed a house layout. The cost was that someone had to assemble each one by hand: pick the right images from the product shoot, place them in the right slots, and write commentary that actually described this product rather than reading like the last one with the name swapped.

The build does the whole assembly. Given a product, it generates the complete page: the layout populated, the correct imagery selected and placed, and copy written specifically to that product throughout. Not a template with gaps filled, but a page that reads as though someone sat down and wrote it. New pages are produced in minutes rather than a week, at the marginal cost of running the workflow.

Before
Per-page fee to an agency. A wait between deciding to launch a product and being able to sell it. Copy quality varied with whoever was on it.
After
Pages generated in-house on demand. The per-page invoice stops. Launching a product is no longer a procurement decision.
ShopifyContent generation Asset selectionWorkflow automation

£1,000

Agency fee, per page

Before

1 week

Lead time, per page

Before

Minutes

Lead time, per page

Now

02 Dental practice

A voice receptionist for a dental practice

A front desk can only be on one call at a time, and the busiest hours for the phone are the busiest hours for everything else.

The system answers the phone and handles the full booking lifecycle by voice: taking new appointments, cancelling, and rescheduling against the practice’s live calendar. It answers the questions a practice fields all day, from the practice’s own answers rather than a generic script: opening hours, parking, what a treatment costs, whether the practice is taking NHS patients, what to do about a broken tooth at the weekend.

Its knowledge is the practice’s knowledge: it is built on the clinic’s own documents and FAQs, so there is no list of “supported questions”. Anything the practice has an answer to, the agent can answer.

It does not queue, it does not close, and it does not get less patient at 5pm. Calls it cannot resolve are escalated with a summary rather than dropped, so the human picking it up starts halfway through rather than at the beginning.

Before
Calls missed during clinical hours and outside them. Every missed call is a booking that either rings back or rings a competitor.
After
Every call answered, at any hour, with bookings written straight into the calendar and escalations arriving pre-summarised.
Voice AICalendar integration Booking · cancel · rescheduleFAQ

24/7

Answering hours

No queue, no voicemail

03

Booking actions handled

Book · cancel · reschedule

03 Trade supply

Stock monitoring and vendor research

Reordering is two jobs pretending to be one: noticing that something is low, and finding out what it should cost this week.

The first job gets done late because nobody is watching continuously. The second barely gets done at all. The order goes to the usual supplier because comparing vendors for every line item is a day’s work nobody has.

The build watches stock levels and fires when a line crosses its threshold. It then researches that item across multiple vendors, compares live pricing and availability across five of them, and recommends the cheapest viable source, with the alternatives and their prices attached, so the recommendation can be checked rather than trusted. The purchase decision stays with a person; the research that used to make it too expensive to check does not.

Before
Low stock noticed on the shelf, often late. Reorders placed with the habitual supplier because comparing was not worth the hours.
After
Threshold breach detected automatically, arriving as a priced recommendation with the market compared and the workings shown.
Stock monitoringVendor research Price comparisonProcurement

05

Vendors compared per item

Set at five, not a ceiling

47

Lines monitored

Continuously

Five is the setting, not the limit Ten or twenty vendors is the same build and a longer run. The ceiling is how wide you want to shop, not what the system can do.
04 Multi-department SMB

Departmental bots that answer in seconds

Asking a question inside a business is expensive in a way that never appears on any invoice.

You ask someone. They stop what they are doing. They open two systems and a spreadsheet. Some hours later they come back with a number they are not quite sure about, and the cost was two people’s attention plus the delay before anyone could act on it.

We built a set of bots, each one expert in a specific area of the business and sitting on that area’s actual data: operations, finance, routing and others. You ask in plain language and the answer comes back in seconds, drawn from the source rather than from someone’s recollection. Because each bot is scoped to one domain rather than trying to know everything, it can be held to the data it actually has, and say so when a question falls outside it.

Before
Ask an employee. Wait hours. Receive an approximate answer, and interrupt someone’s day to get it.
After
Ask in a message. An accurate answer in seconds, from the system of record, without taking anyone off their work.
OperationsFinance RoutingNatural-language queries Internal reporting

Seconds

Time to an answer

Previously hours

One bot per domain Operations, finance and routing among them. Each is scoped to that area’s own data rather than trying to know everything.
05 Consumer · Subscription

A personalised illustrated story, every week, unattended

A weekly product where every copy is different is a production problem disguised as a creative one. Written by hand it does not survive its own subscriber growth.

The build produces a complete, original illustrated story for each child on a weekly cycle. It is personalised on what is actually known about that child: their name, their age, the things they are currently interested in. So the story is written for them rather than assembled from a template with substitutions.

Illustrations are generated alongside the text and kept consistent with it, so characters and settings hold together across the pages of a single story rather than drifting. The whole cycle runs unattended: the week’s stories are produced, illustrated and delivered without anyone opening a document.

Before
Personalised content that has to be written by a person for every subscriber. The cost of the product scales exactly with the number of customers.
After
Every subscriber gets their own story every week, produced automatically. Adding a subscriber costs a run, not an afternoon.
Long-form generationImage generation PersonalisationScheduled delivery

Weekly

Delivery cycle

Unattended end to end

Per child

Personalisation

Name · age · current interests

Why this one is here It is the hardest test of a generation pipeline on this page: coherent text and matching images, held together over a long output, with no one checking it.
Next step

Recognise your own problem in one of these?

Book thirty minutes and you will leave knowing what the same problem is costing you, and what it would take to put it behind you.