A catalogue that updates itself
Dealer storefront · data pipeline, site, operations
The dealer had close to a hundred cars on a listings platform and no storefront of their own. Now there is a site in three languages where stock syncs every half hour and nobody on staff enters a card by hand.

How it worked before
Every car would have been entered by hand: sold one, remember to remove it; took one in, remember to add it. The storefront would have sat permanently behind the real stock.
What made it hard
An external source that can return junk, return nothing, or fall over. A naive parser will one day publish an empty catalogue — and the dealer will hear about it from a customer who drove over for a car that was already sold.
Engineering decisions
- 01
A plausibility check before publishing
A separate module decides whether to trust the new extract; if stock has collapsed, the site stays on the last good state.
- 02
Cover photos are picked by a banner detector
A script rejects photos carrying advertising overlays so the grid holds clean frames.
- 03
No server and no image storage
The parser lives in a scheduler and commits the data; the site is static and the photos are served from the source.
- 04
101 tests on the normalisation logic
Not on buttons — on what turns someone else's markup into predictable data. That is always the part that breaks.
Where it stands
A sync every 30 minutes, three languages, and counters in the header reading the real stock. Nobody touches the site by hand.
- A multi-tenant restaurant platform: app, back office and three workers45,000
- A travel agency: its own catalogue, booking in three steps27,000
- Water delivery, end to end22,100
- A clinic: 52 pages, an assistant and a smile simulator14,500
- An outreach automation engine11,000
- A relationship CRM with an AI assistant10,400
- Direct-message sales run by an AI4,800
- Daily quests with an AI game master3,700
- A catalogue that updates itself3,300
- A platform for authored training programmes3,300
- A funnel that qualifies the lead itself2,900