The problem
A restaurant whose fridge or oven fails needs an engineer that day. General trade directories mix domestic and commercial firms and rely on firms listing themselves, so they're thin and hard to trust. The trade bodies list suppliers, not repair engineers. I couldn't find anything that served commercial kitchens well.
I compared ten UK niches before writing any code, and commercial catering repair came first. Every limited company is on the public register, so the directory could be useful before a single firm signed up. The niche is business to business, with no sensitive personal data. I also had a backup niche ready in case this one failed.
What I built
Five steps turn the public register into a searchable directory.
The pipeline scores each company and drops anything that isn't a commercial catering engineer. One sweep of the register produced 58,261 candidate companies, and the scoring and checks cut them to 941 listings.
The site had 1,015 static pages: one for each engineer, 25 location pages, 9 equipment pages, 19 repair guides and the site's own pages. Search ran in the browser. A visitor could type a town or postcode and it ranked engineers by distance, for any UK place, with no search server to pay for.
A firm could sign in, claim its listing and edit it, and changes went live straight away. On a paid plan it also saw how many people viewed its page and clicked to call.
Stripe took the payment and a webhook switched the plan on. Every feature gate on the site read from one rules file, so an upgrade, a downgrade or a cancellation changed every profile feature at once.
On a paid listing, a restaurant or pub could request a callout. The engineer got an email and saw the lead in their dashboard. An admin dashboard showed members, revenue, cancellations with reasons and site-wide analytics, and could hide any listing.
How the data was checked
My rule from the start was to never make anything up.
- Every listing started from a Companies House record: an active, incorporated company, checked in August 2026 and shown with its company number. Sole traders were left out, because their records are personal data.
- Ratings and reviews came from Google, and a firm was matched only when its name and location agreed. Reviews appeared word for word, or not at all, and long ones were cut at 600 characters. I never wrote or edited one.
- Gas Safe and REFCOM badges showed only where a firm declared them on its own website. I didn't check the official registers, so the site said “where declared”.
- Every number on the site was counted from the data when the site was built. Anything I couldn't verify was left blank, so a response time nobody stated showed as “not stated”.
I reviewed the listings in batches and caught what the filters missed: a domestic heating firm in the expanded list and a homepage figure that didn't match its own page. Four clean-up passes removed more than 80 firms that had slipped through, such as domestic heating firms and food caterers.
How it would make money
Every firm got a free listing without asking. The plan was to let firms claim their listing first, then offer an upgrade.
I launched with one paid tier at £49 a month. In the first outreach, firms said they couldn't see the value of paying to top a page with few listings and no proof of traffic. I grew the directory to 941 listings, built accounts with analytics, and on 1 September moved to a £9 middle tier and a £19 top tier.
Results
- 941 engineers across 458 UK towns, with 12,073 Google reviews behind those firms. 2,499 of the reviews were shown on the site, unedited.
- 1,015 pages built. Ten days from the first line of code to launch with 103 listings, then 941 listings within a week.
- Two firms created accounts and one claimed and edited its listing. No firm paid for a plan.
- The payment flow worked end to end. I tested it with a real payment on my own card.
- The admin dashboard showed 358 profile views in the 30 days to 12 October, down from 1,068 in the 30 days before, with 4 clicks on a call button. In those last 30 days three quarters of visitors typed the address in and one in five came from Google search.
- Running costs were a domain, one business mailbox at about €8 a month, and Google data calls. Hosting was on a free plan.
Why it closed
The directory and the payment flow worked. A partner handled outreach while I built, and that side never got going. A directory like this earns nothing until engineers are contacted one by one and shown what they get. With one claimed listing and no paying firms, I chose to put my time into my career and closed it in October 2026.
What I learned
I had a working product in ten days. Finding ten firms willing to pay would have taught me more than the next three weeks of building.
Growing from 103 to 941 listings made the site look bigger. It didn't answer the question engineers asked, which was whether the site would send them work.
On deploy day the Go Pro button sent people to the contact page. The pages looked right and the build passed, and nobody had clicked through the button. Since then I don't call anything finished until I've used it the way a customer would.
The data became trustworthy once I wrote the rules down: what counts as a commercial engineer, what to do when a field is unknown, and never to invent a number. Claude Code followed them, but I had to write them.
What I'd do differently
- Line up ten conversations with engineers before writing code, and build only what they ask for.
- Start with the people who need an engineer. The site listed engineers well but did little to bring in the restaurants and pubs that need them, so there was no traffic to sell.
- Schedule the data refresh. Company status, ratings and reviews were correct in August and haven't been updated since.
- Finish each paid feature end to end. A paid plan switched profile features on at once, but moving a firm up the search order needed a rebuild of the site. Nobody paid, so it never showed.
- Verify who is claiming. Claiming a listing was instant and unchecked, and a code sent to the company's registered contact would be safer.
Role and tools
I chose the niche, wrote the brief, set the rules and the review points, and made every product and pricing decision. I directed an AI coding agent, Claude Code, which wrote the code. I reviewed what it produced, tested it, and set up and ran every account myself.
The site is Astro, TypeScript and Tailwind CSS, hosted on Netlify. The data comes from the Companies House API, the Google Places API and Postcodes.io. Accounts and the database run on Firebase Auth and Firestore. Payments use Stripe Checkout, the Customer Portal and webhooks, through five Netlify serverless functions. Email goes through Resend, maps use Leaflet with OpenStreetMap, and analytics are Google Analytics 4 plus a cookie-free event log of my own.