Field notes · Building in the open

The Moat Is the Plumbing

What building a marketing automation platform taught me about the “smart” features everyone wants to demo.

When I started building my marketing automation platform, the vision was the smart stuff. Lead scoring that tells you who is worth your time. AI that recommends the next best action. A system that feels like it is thinking alongside you.

That is the part you put in the demo. It is also, it turns out, the easy ten percent.

What I did not budget for

The honest surprise was not the AI. Modern language models make “generate five subject lines from this brief” a single API call. You can wire that up in an afternoon.

The surprise was everything underneath it. Before a smart feature can be smart, it needs something true to reason about:

  • A CRM that actually holds clean, structured contact and company data.
  • Event tracking (opens, clicks, page views, form submissions) that is accurate, not approximate.
  • Attribution you can trust across multiple touch models.
  • A reply pipeline that captures and classifies every response, not just the easy ones.
  • Deliverability that keeps you out of spam folders and rate limits.
  • Permissions and ownership that hold up the moment a second person logs in.

None of that demos well. All of it took months. And every hour of it was the precondition for the features I actually wanted to build.

Why the boring part is the moat

Here is the reframe that changed how I think about it.

Anyone can connect a model to a text box. The substrate underneath is the hard part, and the part worth owning.

The intelligence everyone is excited about is, increasingly, a commodity. What is not a commodity is the clean, owned, integrated data that makes a prediction mean something.

Take lead scoring, the canonical smart marketing feature. A good score is built from four inputs, and every one of them maps straight back to foundation work:

What a lead score actually needs

  1. Activity — how engaged is this person? (needs your event pipeline)
  2. Intent — are they showing buying signals? (needs events plus reply sentiment)
  3. Data completeness — how much do we actually know? (needs a real CRM with custom fields)
  4. Lifecycle stage — where are they in the journey? (needs a stage engine)

The scoring “brain” is almost trivial once the substrate exists. Without the substrate it is impossible, and worse, it is dangerous.

Garbage in is worse than nothing

A lead score sitting on dirty or incomplete data is not neutral. It is harmful, because people act on it. They call the wrong prospect, ignore the right one, and trust a number that was never trustworthy.

This is why I built the foundation to production quality from day one, even on a project that started as a passion build. Not because it was fun (it was not always), but because the smart layer is only ever as believable as the data beneath it. Build the foundation flaky and the AI just launders the noise into confident-looking nonsense.

The encouraging flip side

If you are in the long, unglamorous middle of building something like this, here is the part worth holding onto: the foundation being done means the smart features are suddenly close.

The platform can already write campaign copy, generate nurture sequences, suggest segments, and triage inbound replies by sentiment. The next layer (scoring, next best action, send-time optimization) is no longer a distant dream. It is a few focused builds on top of a base that finally holds weight.

The boring work was not a detour from the vision. It was the vision, wearing work clothes.
Build the plumbing right, and the clever stuff gets easy.