Ask three different reports "how many leads did Campaign X actually convert?" and you'll often get three different numbers. Not because anyone lied — because each report matched the same lead to a call, an outcome, and an invoice using slightly different logic.
This is the Attribution Gap: the same customer journey gets re-resolved independently every time a new measure needs to know "what happened to this lead." Small differences in matching logic — a different date window, a different tie-breaker — compound into KPIs that quietly disagree with each other.
This is the exact problem we solved while building DataArcus Pulse, our anonymized automotive CRM intelligence model. The fix is a pattern we call Resolve Once, Hydrate Many, and it changed how every downstream measure in the model behaves.
The Problem: Five Reports, Five Different Answers
In a dealership CRM, a single lead can touch dozens of records: multiple calls, several statuses, and eventually — maybe — an invoice. The natural instinct is to let every report answer its own question independently: the Sales report looks up the invoice, the Call report looks up the last call, the Qualification report looks up the latest status.
The problem is that "independently" means inconsistently. If the Sales report resolves a lead to its journey using one join condition, and the Qualification report uses a slightly different one, the two reports can disagree on whether the same lead is even the same journey — especially once a lead has multiple call attempts spread across days.
Multiply this by 410 measures and 24 tables, and you get a dashboard where every page is individually correct but collectively untrustworthy. Executives stop asking "what's the number" and start asking "which report's number."
Resolve Once: A Single Source of Truth for Every Lead
The fix isn't a smarter join — it's fewer joins. We built one column, a Matched Journey Key, whose only job is to resolve each lead to exactly one call journey, using one consistent set of tie-breaking rules.
Before replacing the old, scattered logic, we validated the new key against every existing measure that depended on lead-to-journey matching: 54,403 out of 54,403 leads resolved to an identical journey under both the old and new logic. Only after that exact match did the old logic get retired.
That single validation pass is what makes the pattern trustworthy — not just for us, but for anyone reading the model later. One resolved key, proven correct once, is worth more than a dozen independently "probably correct" joins.
Hydrate Many: Reusing the Resolution Everywhere
Once a lead's journey is resolved, every other measure that needs to know something about that journey — status, terminal reason, invoice, agent, outcome — becomes a thin LOOKUPVALUE read off the Matched Journey Key, instead of its own independent matching logic.
This has a second benefit beyond correctness: it turns 400+ measures into documentation. Reading a downstream measure's DAX tells you exactly which single source of truth it depends on, instead of hiding a re-derivation of matching logic inside every formula.
The result in DataArcus Pulse: 54,574 leads, 113,321 calls, and 72,013 call journeys that agree with each other across every page — from Executive Overview to Sales & Attribution — because they all trace back to the same resolved key.