Back to notes

August 24, 2026 · 5 min read

The CRM Data Model Nobody Designed, We Just Inherited It

Nobody sat down and designed this CRM's object model. It accreted, field by field, team by team, over six years, and untangling it took longer than the original project did.

CRMPostmortem

The project brief was simple on paper: build a reporting dashboard on top of the client's CRM. Three days in, I'd found eleven custom fields all effectively storing the same piece of information — 'lead source' — under slightly different names, populated inconsistently depending on which team or integration had created the record. There was no dashboard problem. There was a data model problem wearing a dashboard problem's clothes.

How a data model accretes without anyone deciding to let it

Nobody sets out to build this. A sales team needs a field, adds it. A marketing team, unaware the field exists, adds their own version with a slightly different name because searching the existing field list wasn't part of their workflow. An integration with a new tool creates a few more fields automatically on setup. Six years and four reorganizations later, nobody left at the company has the full picture, because nobody ever had it all at once — it was always distributed across people who've since moved on or changed roles.

Nobody designed this data model. Six years of reasonable individual decisions designed it by accident, and now it belongs to nobody in particular.

What untangling it actually required

  • A full field-by-field audit mapping every custom field to who created it, when, and what it was apparently meant to capture — this alone took a week.
  • Interviews with long-tenured staff to recover institutional knowledge about why certain fields existed that wasn't written down anywhere.
  • A consolidation map merging duplicate fields, with a migration plan for historical data rather than a clean break that would have orphaned years of records.
  • A written data dictionary, the first the company had ever had, explicitly to prevent the next six years from repeating the same pattern.

The dashboard was the easy part

Once the data model was actually consolidated, the dashboard itself took three days to build — it had been technically simple the entire time, blocked only by the data underneath it being an accidental archaeology project. If you're ever quoted a timeline for a reporting project that assumes the underlying data model is clean, ask to see it first. It almost never is, and the gap between 'build a dashboard' and 'build a dashboard on six years of undesigned data' is where every timeline like this actually goes to die.