Case notes

A €2k project that turned into five years of work

A real-estate lead-gen client, anonymized. It didn't start as a "platform." It started as a small fixed-price job, and then it never stopped changing for five years. This is what that actually looked like - including the annoying parts.

How it started

The first job was small - about €2,000. Roughly: a webhook to capture incoming leads, a simple admin tool to spin up landing pages for different campaigns, and the basic Laravel app around it (login, payments, the usual). A scoped project. Delivered. Done. That was supposed to be it.

How it grew

It didn't grow to a plan. It grew because the business kept needing the next thing. Roughly in order, over five years: structure to manage projects; incoming leads tied to those projects; campaigns as their own managed thing; more lead sources (Unbounce came in); outward connections into clients' own CRMs, automated; better tracking; a credits system; exports for admin and for clients themselves; automated imports of leads and of projects. Each one shipped because the operation needed it that month, not because it was on a roadmap.

What got removed, not just added

Half the honest story is subtraction. Card payments were ripped out completely - the business moved to invoice billing. Self-serve onboarding was replaced by fully manual, hand-done onboarding. Features got built, used for a while, then removed when the business pivoted. Five years on one system also means five years of un-building parts of it. First real lesson: you'll build a lot that turns out not to be needed, and part of the job is deleting your own work without ego about it.

CRMs are the hard part

The single most annoying thing over five years was integrating with clients' CRMs.

Every CRM models the world differently. "Lead", "contact", "deal" mean different things in every system, and the relationships between them differ too. There's no clean shared model to map onto.

Worse: clients use their CRM differently from each other, and differently from how the CRM intends. Some live in deals, some only ever touch contacts, some run lifecycle stages, many ignore all of it and bend the CRM into something it wasn't built for. Some have a proprietary system, or a very specific custom setup in their preferred CRM, that needs an exact data shape on our side - sometimes custom code per client to match it. And there's often a non-technical "CRM consultant" in between, which is its own special kind of slow.

What makes it survivable: keep the data inside our own platform strict and consistent. If our side is clean, the mapping and output to each client's CRM stays clean too. Once an integration is set up and working, it tends to run for years without real trouble - even with a high, messy variety of leads coming in - precisely because the mess gets normalized before it ever reaches the CRM boundary.

Real-estate data is messier than it sounds

"A project" is not one thing. Sometimes it's a single building for sale. Sometimes four different unit types in different sizes, many units each. Sometimes one specific existing house. Data needs and amenities vary enormously by country. Lead-intake forms vary just as much - per client, per project - which makes matching a lead to the right project its own ongoing problem.

Then volume: a 100k+ email list, segmented on project data, lead data, and lead behaviour. Sending, queues, bounce and feedback handling, keeping segmentation in sync - none of it is hard once; all of it needs careful design to stay correct at that size over years.

What it actually shows

Not "I architect grand platforms." It shows the thing that's actually rare: a €2,000 job can become a five-year operational relationship if someone stays, keeps the system matching the business as it pivots, normalizes the mess so the integrations keep working, and removes their own work when it stops earning its place. That's the shape of engagement I do - and the kind of client I'm looking for one or two more of.


More notes from production

Get in touch

Got a workflow that needs to survive longer than a quarter?

Send me a short note about what you're trying to build and where it keeps breaking. I'll reply within a working day.