The business
Preventing parking tickets for repair crews
In the Netherlands, gas, water and telecoms cables all run under the ground. When one breaks, a repair crew has to park a van or a mini excavator somewhere that's normally forbidden, on footpaths, on kerbs, or past road signs that say no.
The Dutch government grants companies an exemption for this. Every vehicle and every mechanic using the exemption has to be registered and traceable. What the customer wants is simple, a physical card on the dashboard they can show a police officer.
Maarten got the idea while working for a contractor. His employer paid an outside firm to handle this admin, and the firm kept getting it wrong. He asked if he could take it over instead, and his employer said yes, if he could do it better for the same price.
He built it as a side business. He had a full-time job, a mortgage and two kids, so the company lived in his evenings and weekends.
The work never stops because the data never stops changing. Mechanics join and leave, vehicles get replaced, leases end, and every change has to be processed, checked and reprinted.
Workflow 01 / 03
From seven Google Forms and a laminator to an app that refuses bad data
Before
He was the validation layer
He started manual on purpose. His view was that if you automate a process you don't understand yet, you automate the wrong thing.
So for five years the whole business ran on seven Google Forms, one Google Sheet, Stripe and Gmail.
- Data in. Customers typed into one of seven forms, one per process, covering company onboarding, driver and vehicle onboarding, plate changes, offboarding, renewals, objections and an eligibility check. A form accepts whatever you type into it.
- Checking. He read the sheet line by line and corrected errors by hand.
- Invoicing. At the end of each month he counted each company's vehicles and adjusted the quantity in Stripe himself.
- Customer changes. He processed every driver and vehicle change as it came in.
- Printing. He emailed a CSV to a printing company.
- Final check. When the cards came back from the printer, he checked and laminated every one at his kitchen table.
Mistakes turned into physical objects in the post. A typo in a licence plate meant a card that didn't match the vehicle, which is the one thing the card exists to do. A wrong address meant a card posted somewhere that didn't exist. He once overcharged a customer because his vehicle count was wrong, which he said felt stupid.
He added what validation Google Forms allows, like forcing phone numbers to be 10 digits. It helped a little. It could not tell him whether a plate belonged to a real vehicle or an address to a real building.
Checking also got less reliable as the volume grew.
"I spent a lot of time checking all my data line by line, correcting it by hand. But after a certain volume it becomes harder, and you're getting so used to checking everything's right that you're going too quickly yourself."
Being the validation layer also meant being available. He answered every request the day it came in, seven days a week. On one family holiday he told his family he'd stay at the house for the morning, then worked the afternoon instead.
What changed
A tool arrived that made the rebuild possible
He knew the setup was wrong and had a backlog of things to fix. He tried to rebuild in a no-code tool, did two courses, and struggled for months. Learning a new platform at ten at night after a full day of work didn't work for him.
Then Claude Code came out at the start of 2026. He installed it on a Thursday, and by the end of that day it had built the things he'd been stuck on for months. Within a week, everything on his backlog board was working code.
What he built
The same six steps, with the checking moved to the front
- Data in. A custom app replaces the forms. Licence plates are checked against the RDW, the Dutch roads authority, so when you type a plate the app shows the make and model for the customer to confirm. A typo returns the wrong car or no car at all, and the customer corrects it themselves. Addresses are checked against a Dutch address database, and formats are enforced on entry.
- Checking. This is gone as a separate job, because the system refuses data it can't verify.
- Invoicing. Invoices are generated in the app from the live vehicle count, and payments come in through Mollie and are matched automatically.
- Customer changes. Each company now gets a dashboard to manage its own drivers and vehicles, and drivers get their own dashboard too if their company allows it, with permissions set per role. His largest client arrived with 800 vehicles and 800 drivers, so he built a CSV import for them. Local authorities have their own view of which plates hold an exemption.
- Printing. He chose a new print supplier, ADDI, because it has an API. Data goes out, and status comes back as printed, in progress or dispatched.
- Final check. This one is gone too, because the new supplier laminates the cards as well.
Claude Code makes it much faster to add new features. A client asked him to stop drivers editing their own vehicle details, because the company runs a leased fleet. The feature didn't exist, and he said he could turn it on for them anyway. He put the phone down, prompted Claude Code, and called back fifteen minutes later to say it was done.
The steps, before and after
Data in
Before, 2020 to 2025PersonCustomer types into a Google Form
After, 2026Agent, person approvesApp looks the plate up, customer confirms
Checking
Before, 2020 to 2025PersonHim, reading the sheet line by line
After, 2026GoneBad data refused at input
Invoicing
Before, 2020 to 2025PersonHim, counting vehicles into Stripe at month end
After, 2026AgentGenerated from the live count, Mollie matches payments
Customer changes
Before, 2020 to 2025PersonHim, processing every change
After, 2026Agent, person approvesCustomers self-serve, limited by role
Printing
Before, 2020 to 2025PersonHim, emailing a CSV to the printer
After, 2026AgentAPI out, dispatch status back
Final check
Before, 2020 to 2025PersonHim, laminating at the kitchen table
After, 2026GoneSupplier laminates, validation caught errors earlier
Six steps, and he personally did four of them. After the rebuild he does none. The two steps that disappeared are the two where he was the safety net.
Stack
What each tool replaced
- CClaude Code
Job:Building and maintaining the app
Replaced:Years of not getting round to it
Job:Database and logins
Replaced:The Google Sheet
Job:Hosting
Replaced:Google Forms
- MMollie
Job:Payments and reconciliation
Replaced:Stripe, and his month-end checks
- RResend
Job:Transactional email
Replaced:Gmail, partly
- SSentry
Job:Error monitoring
Replaced:Him noticing
- RRDW open API
Job:Licence plate lookup
Replaced:Manual retyping and reformatting
- DDutch address database
Job:Address validation
Replaced:Nothing, addresses went unchecked
- AADDI
Job:Printing, laminating, dispatch status
Replaced:A CSV emailed to a printer, and his laminator
- MMailShield
Job:Email deliverability
Replaced:Nothing
Job:Marketing site
Replaced:Nothing
The total comes to about €354 a month, plus the Claude Max plan.
Effort
A week to build, six weeks to migrate
Build time. He started on a Thursday, and everything on his backlog was working code within a week. Migrating five years of spreadsheet data and testing took another six weeks before a single customer touched it.
Difficulty, hard. This is a full custom application with logins, payments, per-role permissions, two government API connections and a supplier integration, and it holds other people's personal data. It is not a weekend project.
What he already had matters more than the difficulty rating. He'd spent five years running the process by hand, so he understood every step of it, and he had an existing paying customer base, so the rebuild had a known spec instead of a guess. His country has free public APIs for plates and addresses, which not every country does, and he switched print suppliers to get one willing to offer an API.
Result
Half the hours, and a month away to prove it
- Operations take about 4 hours a week, down from about 8. These are his own estimates from the call, nobody was timing anything in either period.
- Customer questions take almost none of that time, he says.
- He took four weeks off this summer. He did about 3 calls a week and roughly an hour of email, he didn't open Claude Code once, and anything that occurred to him went on a list for when he got back.
- Live since the start of 2026 and still running, on a customer base that includes an 800-vehicle fleet.
- Run cost about €354 a month, plus a Claude Max plan. The figure comes from his own billing. He thought it sounded high and offered to check it, so treat it as an upper estimate.
The rest of his working time now goes on improving the platform and growing the business.
The revenue picture. His revenue has grown significantly since the switch, to around €300,000 a year. The business was growing anyway, so the platform doesn't get all the credit. It does get some though, because a professional self-service product helped him win bigger, more established clients, and the operations time it freed up now goes on sales and marketing instead of admin. Sales is now the only part of the business that still needs him, and when he paused outbound over his summer holiday, growth paused with him.
The checks
Not needed once bad data can't get in
For five years he checked everything by hand because mistakes came through constantly, and laminating every card at his kitchen table was his final look before anything reached a customer.
The rebuild removed the reason for the checks rather than just the checks. A wrong plate or address can't get into the system anymore, because everything is validated at entry against official databases and the customer confirms their own details on screen. The check moved to the front of the process, where a computer does it better than he ever could by eye.
He didn't take that on faith either. He kept having the printed cards sent to him at first, and only stopped once the new system had run long enough that he stopped finding mistakes. It has held up since going live in January.
Security
The part you have to take seriously
If you're non-technical and building something that holds customer data, security is the part to take seriously. The risk is real, because AI-written code is code you can't judge yourself, and Maarten is blunt about it.
"It's an easy tool, it easily fools you."
His answer is a regular review process. Every week he has Claude go back over the codebase and check that it's still solid, still secure and that it scales, and he runs the review again whenever a new model comes out. He usually finds something to improve, and fixes it. He also runs Sentry, so errors reach him rather than waiting for a customer to notice. His reasoning is simple, a data leak would end the business.
He's not guessing at how to do this either. He spent a decade of his employed career working to ISO 27001 security policies, so he knows what good practice looks like, and he's confident the app is secure because of these regular checks. His view is that anyone building with AI and holding sensitive data should make this a routine, not a one-off.
Your first step on security. Point whatever AI you build with at your own codebase and ask it to review for security problems. It takes an afternoon, and it's better done before you have customers rather than after. If you hold anyone's personal data and you've never done this, do it this week.
His advice
What he'd tell someone still on Google Sheets
Three things, in his order.
Get the process right before you automate it. He ran on Google Forms for five years on purpose. If you automate a process you don't understand, you make the wrong thing faster.
Don't build the spaceship. His phrase. If you keep adding features, it never flies. Start with the one process that's costing you most.
Solve the customer's problem, not yours. His customers wanted a correct card on the dashboard. They didn't care that he laminated it in his kitchen. Making life easier for himself came later.
And one more from the call. If he started the same business today, he'd go straight to Claude Code on day one.
Case studies are published to help readers understand how other organisations approached a problem. They are not endorsements of a tool or a vendor, and one company's result is not a forecast of yours.
Create With Plus · 2 more workflows from this case
6 min moreThere's more to this one.
Two more workflows from this case sit behind the wall, in full. How he rebuilt customer support so every email and phone call arrives with the reply already drafted, and how a six-week data migration became an audit that found customers he'd never billed. Everything above stays free.
Workflow 2 of 3
Customer support, from writing every reply to reading every draft
Enquiries. He wrote every reply from scratch, in Gmail. Calls. His mechanic customers like to ring rather than email, and whatever was said on a call existed only in his head afterwards. Follow-ups. Anything he promised on a call was his to remember and write down. History. Context from a conversation months ago was gone unless he'd happened to note it, and he describes himself as a goldfish.
Workflow 3 of 3
The data migration that turned into an audit
Everything lived in one Google Sheet, maintained by hand since 2020, with no rules on any field. He knew there were errors in it, but not which ones or how many.
Everything above this point is free on every case study we publish.


