How We Built Pipedash: An Attribution Engine that Argues with Itself | Upside
/meta; at runtime SEO.tsx sets<br>document.title imperatively. This is only the pre-JS fallback. --><br>Upside – Revenue Attribution & Intelligence Platform
Sign InRequest Demo
Product
How We Built Pipedash: An Attribution Engine that Argues with Itself
July 30, 2026
13 min read
Share
Everyone has a love/hate relationship with attribution. Mostly hate. I was the CMO of Branch and I built a multi-touch model there that was directionally useful, not truly right. It over-credited what was easy to measure (late-stage clicks, form fills and email) and under-credited what actually created the deal (content, referrals, events, the dark funnel). For the past two years at Upside we’ve been building the data layer to fix that, and a few months ago Alex Bauer (Branch early employee, now my co-founder at Upside) built something on top of it that I think is truly new: an attribution engine that runs a panel of independent LLM analysts on every deal, argues with itself, and produces a zero-sum credit allocation where every dollar is accounted for.<br>This post is the technical overview of how it works. The part that most marketers will be surprised by, but eventually agree with: demo request forms (and all form fills and customer actions) get exactly 0% credit. I’ll get to why.<br>Why B2B attribution was never actually solved<br>One thing I have learned while working on attribution at Upside and at Branch is that there is no attribution model that can be applied to every problem. The tagline “all models are wrong, but some are useful” applies to attribution models, and most of what this article explores is the concept of applying a zero-sum credit allocation to the activities that led to sourcing a complex B2B deal.<br>The market currently agrees that there is no accurate model to solve this and instead uses time-based heuristics: first-touch, last-touch, U-shape, W-shape. These are just weighting curves over timestamps. The first or last touchpoint might not matter at all, but the curve doesn’t know that, because the curve doesn’t read the emails.<br>Our thesis is that finding a more accurate B2B attribution model failed for two reasons, and neither of them is “attribution is conceptually impossible”:<br>The data was never complete enough. A huge fraction of what creates pipeline (a coffee meeting, a peer referral, someone seeing your billboard) never becomes a CRM record.<br>B2B has the worst possible shape for statistical modeling. Thousands of touchpoints per deal, and a limited number of deals. You cannot fit a credible causal model on 40 deals with 2,000 touchpoints each; there is not enough signal to get a statistically accurate causality model. Some companies like Paramark are tackling this problem, but they only do it for actions that have significant volume and distinct touchpoints, like ads, not the whole deal.<br>Prerequisite: 24 months of unglamorous data work<br>The first version of an attribution model was a more complex weighted model — give weights to all the touchpoints involved based on rules: emails take less effort and should get less weight than webinars.
To know if this kind of model was right we decided to manually look at hundreds of complex customer deals ($1M+) and understand what actually drove them. We found two things:<br>There were many touchpoints that were mostly irrelevant — many marketing and sales emails, sometimes other marketing touchpoints that never led to any real engagement.<br>The real story was sometimes found inside unstructured data: email forwards that were never logged, SFDC call notes, call transcripts. But finding it felt like forensic digging — sometimes two of us would look at the same deal and only one would find a buried relevant touchpoint. Someone was referred by an existing customer or a partner and mentioned it on a call, but they showed up as a direct website visit. Someone attended an event and asked for a demo after but never registered, so the demo form was getting all the credit.<br>In most cases the real story of the deal was completely different from what an attribution model showed, because any model would only look at structured data.<br>So before any of the interesting agent stuff, we spent about two years building the boring part: pulling CRM, email, calendar, call transcripts, and web activity into one place, then healing it. Identity resolution (the same person with two emails across two systems becomes one person), buying group detection, activity deduplication across systems, and extracting touchpoints that only exist inside unstructured text. The output is an account-level timeline that is the cleanest, most complete version of “what happened” we can reconstruct.
That gets you a great audit console but does not tell you what worked. Some of our customers’ deals run 18+ months with thousands and even tens of thousands of touchpoints....