One address in Zelzate, findable in thirty-six towns
CASE REPORT — 2026
A locksmith is only ever hired twice: the night you are locked out, and the week you decide the front door is not good enough any more. Both searches are local, both are urgent, and neither forgives a slow page. Slotenmaker 9060 works out of a single base in Zelzate and covers two provinces — so the site had to earn the local search in towns the van visits, without ever pretending to have a branch there.
One van, two provinces, no branches
Slotenmaker 9060 is named after the postcode it works from — Zelzate, on the canal between Gent and Terneuzen. From that single base the van covers Oost- and West-Vlaanderen: the student streets of Gent, the coast at Knokke-Heist and Oostende, the quiet villages around Assenede and Kaprijke.
The brief had three parts. Be findable in every town the van actually reaches, without inventing offices that do not exist. Earn trust at two in the morning, when the person searching is standing outside in the cold. And get the daily work — the call, the intervention, the stock, the invoice — out of a notebook and into something that remembers.

Thirty-six towns, each written once
The reach is the whole commercial argument, so it got the real work. Thirty-six towns have their own page, split across two provinces and sorted into two tiers: the cities that carry the volume — Gent, Brugge, Kortrijk, Oostende, Roeselare — and the smaller places around them.
Each town also carries a profile, because a locksmith page for a student city is not the same page as one for the coast. A studentenstad talks about shared front doors and lost keys in September. A kust page knows half the buildings are holiday rentals with code locks. A landelijk page is honest about travel time. Thuisbasis is Zelzate itself, and says so.
No page claims a branch. Every one of them says where the van leaves from.


Six services, priced before the van leaves
Six things get done: opening a door after a lockout, replacing locks, emergency repair after a break-in attempt, fitting SKG security cylinders, opening cars, and key plans for landlords and businesses.
Each one is a page rather than a bullet, because each one is a different search at a different moment. The promise repeats on all of them and never moves: a fixed price on the phone before anyone drives out, damage-free opening attempted first, a numbered invoice afterwards.


Rendered on the server, not in the browser
HTML that exists before JavaScript does. Dedicated functions render the core pages, the town pages, the service pages and the blog as real HTML on the server. A crawler gets the content on the first request rather than an empty shell.
A sitemap built from the data. The sitemap is generated from the entities, so a new town or a new post is listed the moment it exists — nobody maintains an XML file by hand.
Reviews as records. Google reviews and the rating summary live as entities and render into the page, so the social proof is part of the HTML instead of an iframe a crawler ignores.
Local structure. Every town page carries its own title, description and canonical, plus nearby towns and local anchors — enough to be specific, never enough to imply a branch.

From the phone call to the invoice
Behind the login the same job appears again, this time as work. The pipeline runs from Inbound — a form filled in, urgency flagged — through contact, quote, planned intervention, payment and completion. Dragging a card is the whole status update; the moment it lands, the change is written and logged as an activity.
The dashboard is the morning screen: what came in overnight, what is out on the road today, what is still unpaid.


What was fixed, and what is left in the van
An intervention records more than a date. It carries the priority — Spoed, Vandaag, Gepland — the time slot, the amount, how it was paid, and a written note of what was actually done: *schadevrij geopend met slagsleutel, cilinder versleten, vervangen door SKG** 30/35*. That note is what the follow-up email quotes back, and what settles a question three months later.
Stock is counted in two places, the van and the shelf, and every item carries a minimum. Anything below it is a reorder, which is a question the assistant can answer without anyone opening a spreadsheet.


Landlords, syndics and key plans
The other half of the work never calls at 2am. Letting agents, landlords, syndics and companies get their own records: how many properties, whether there is a master key plan, what was agreed on price, and whether the account is still active.
It is the least dramatic screen in the build and probably the most valuable one — a cylinder swap between tenants is a small job that happens forty times a year, and the terms should not have to be renegotiated each time.

Meet Milan
Milan is the CRM's assistant, and the brief for him was mostly restraint. He answers in Dutch, in at most eight lines, with no preamble and no closing pleasantries. He only uses what is in the records; if it is not there, he says so in one line.
Two questions carry most of the value. *Wat moet ik bestellen?* returns only the stock below its minimum — item, count against minimum, where it lives. *Wat moet ik doen vandaag?* returns the urgent inbound leads nobody has answered, today's interventions, overdue tasks and anyone still owing money.
He also drafts the follow-ups, quoting what was fixed, and signs them properly.

Under the hood
Workflows. A new inbound lead becomes a follow-up task straight away — the rule is two hours, and urgency is flagged on the record rather than remembered. A completed intervention triggers a review request. Milan writes a short daily briefing before the first coffee.
Roles and indexing. The public site is one app, the CRM sits behind a login with an admin check, and everything behind that login is noindex.
Honest reach. Thirty-six town pages, one address, and no page that implies otherwise. The van leaves from Zelzate and every page says so.
Vindbaar worden in elke stad waar je komt?
Same approach, whatever the trade: pages that earn the local search, and a back end that keeps the work out of your inbox.