Danny Morris
← Back to work Case study · Technical build · August to October 2026

Find Catering Engineers

A UK directory of 941 commercial catering and refrigeration engineers, built from public company records by an automated data pipeline, with search, engineer accounts and paid plans. The directory and the payment flow worked. The sales side never got going, and I closed it in October 2026.

Role · Solo builder, directing Claude Code Time · About four weeks, alongside other work Status · Closed, October 2026
58,261candidate companies screened to find the engineers
941engineers listed across 458 UK towns
1,015pages built, one for each engineer plus location, equipment and guide pages
10 daysfrom the first line of code to launch (9 to 19 August 2026)

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.

Step 1Companies HouseActive UK companies pulled by industry code and by name
Step 2Score and filterWritten rules decide who counts as a commercial catering engineer
Step 3Google matchRating and reviews, only when the name and place agree
Step 4Website readEquipment and declared accreditations from each firm's own site
Step 5BuildStatic pages and a search index

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.

The Find Catering Engineers homepage with a real registry record and counters for engineers, towns and Google reviews
The homepage. The registry card is a real listing, and the counters were calculated from the data when the site was built.
Search results for Manchester, filtered to refrigeration, showing 135 engineers ranked by distance
Search for Manchester and refrigeration: 135 engineers within 50 miles, nearest first, with filters for response time and declared accreditations.

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”.
A listing page showing the company name, Companies House number, incorporation date and Google rating in a registry card
A listing. The Companies House number, incorporation date and Google rating sat in a registry card beside the description.

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.

Free£0A verified listing with phone number, area and equipment
Pro£9 a monthWebsite link, photos, an About section, a callout form with email alerts and basic analytics
Featured£19 a monthTop placement in search, more photos and fuller analytics
Multi-siteCustomFor groups with several branches

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.

The pricing page with Free, Pro at 9 pounds a month, Featured at 19 pounds a month and a custom multi-site plan
The pricing page: free to claim, Pro at £9 a month, Featured at £19, and a custom plan for groups.

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.
The admin dashboard showing 358 profile views, 4 contact clicks, 1 new sign-up and no recurring revenue
The admin dashboard for the 30 days to 12 October: 358 profile views, 4 contact clicks, 1 new sign-up and £0 recurring revenue.

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

  1. Line up ten conversations with engineers before writing code, and build only what they ask for.
  2. 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.
  3. Schedule the data refresh. Company status, ratings and reviews were correct in August and haven't been updated since.
  4. 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.
  5. 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.

← Wealth management pipeline Next case study: AI shorts pipeline →