Back to the work
Flagship · 12 of 21

Repair My Phone

An Australian phone repair directory, built programmatically.

What it is

A comparison directory for phone repair across Australia. Every state. Every suburb. Every device (brand and model). Every repair type (screen, battery, back glass, camera, water damage). All cross-referenced into URL combinations that saturate the long tail of search.

Why I built it

My phone screen cracked on a Tuesday. By the time I'd found a repair shop, a price, and a location that matched what I needed, I'd opened seventeen tabs.

I closed all of them and opened a repo instead.

Phone repair is one of those categories where Google Maps has the listings but there's no authoritative comparison site. Individual shops have their prices buried in their own websites. The two pieces of information — which shops exist and what they charge — have never been stitched together in one place. It's a classic programmatic SEO opportunity.

How it works

Apify's Google Maps scraper pulls the shop listings. A Playwright scraper visits each shop's own site, pulls the pricing page, and hands the raw HTML to Claude — which extracts device, repair type, and price into structured rows.

The URL architecture is where the real work is. The site renders programmatic pages for every meaningful combination:

Next.js App Router generates these statically at build time, with ISR handling updates. Postgres stores the normalised data across shops, locations, devices, repair types, and prices tables. The database is small. The front-end is enormous.

Programmatic SEO isn't "generating lots of pages." It's deciding which combinations of dimensions actually match search intent, and then generating only those.

What I learned

A /state/suburb/repair-type page is useful. A /state/suburb/repair-type/brand/model/year/colour page is noise, and Google treats noise exactly how you'd expect.

Getting the price data right is the whole game. Anyone can generate a directory. Very few can generate a directory that's also a comparison tool. The price extraction pipeline is the moat.

Where it's at now

Phase 1 live. Indexed across Australia. Traffic growing on long-tail queries. Phase 2 — a lead-gen quote-comparison flow where users describe their broken phone and get back price quotes from multiple local shops — is the next build. Phase 3 is a marketplace where the shops pay to handle the fulfilment.

Coming soon
A build walkthrough

A longer write-up on the Repair My Phone build — the URL architecture decisions, the price extraction pipeline, and what programmatic SEO actually looks like when you do it with intent instead of volume. Drop your email on the main page if you'd like to know when it's up.