Product notes · v0.1 · 7 October 2026

How I built Pipeline Truth

The problem, who it's for, the spec, where AI helps and where it doesn't, and how I'd know if it's working. I wrote this the way I'd write it for an engineering and design team.

1. The problem

A sales forecast is only as good as the CRM data under it. Most teams already suspect theirs isn't good:

So the gap I went after is the one Gartner points to: teams don't measure their pipeline data quality. A RevOps lead can feel that the forecast is shaky. What they usually can't do in five minutes is put a number on it, show it in money, and point to the deals and owners behind it.

Problem statement: RevOps and sales leaders have no fast, trustworthy way to see how much of their open pipeline sits on stale or missing data before a forecast call.

2. Who it's for

These are my working hypotheses. Discovery conversations are meant to confirm or kill them.

UserJob to be doneWhat they need from the tool
RevOps / Sales Ops lead
Primary user
"Before Monday's forecast call, show me where the data is lying to us."A score they can track week to week, the specific deals to fix, and something to send to managers.
Front-line sales manager"Tell me which of my reps' deals to inspect in 1:1s."An owner view and a fix list sorted by money at risk.
CRO / VP Sales"How much of the commit should I believe?"One number for commit exposure and a short written brief.

Main adoption barrier: trust and privacy. Nobody uploads a real pipeline to a stranger's server. That drove the most important design decision: everything runs in the browser.

3. Discovery

v0.1 is built from public research and how Salesforce reports are structured. The next step is talking to the people who'd use it. I'm running short conversations with RevOps practitioners and will publish what changes as a result. Findings will be added here only from real conversations, with permission, and anonymised.

Interview guide (20 minutes)

What I want to learn: (1) which checks matter most, (2) whether value-weighted or count-based scoring is more useful, (3) whether teams would rerun this weekly, and what would make them.

4. Spec for v0.1

Goal: In under two minutes, a RevOps lead goes from a Salesforce export to a money-weighted view of pipeline data quality and a list of deals to fix.

Out of scope for v0.1: connecting directly to Salesforce (OAuth); predicting win probability; storing results; HubSpot and other CRMs (the column mapping works, but I haven't tested their exports).

Story 1: Get a result from my own export

As a RevOps lead, I want to drop in my Opportunities export and get a result without setup, so that I can try it before a meeting.

  • Given a CSV with Stage, Amount and Close Date columns under standard Salesforce labels, when I drop it in, results render with no manual mapping.
  • Given non-standard column names, I can map any field from a dropdown and results update immediately.
  • Given dates where every value fits both MM/DD and DD/MM, a warning says which format was assumed and how to change it.
  • No request containing file contents leaves the browser.

Story 2: See the risk in money, not just counts

As a CRO, I want to see how much pipeline value sits on deals with data issues, so that I know how much of the forecast to discount.

  • The score is the share of open pipeline value on deals with no flagged issue, from 0 to 100.
  • Each issue shows the number of deals and the value affected.
  • If a Forecast Category column exists, Commit and Best Case exposure are shown separately. If not, the tool falls back to deals with probability ≥ 50%. If neither exists, it says which column to add.
  • Checks that can't run because a column is missing are listed as "not measured", never silently counted as passing.

Story 3: Know who to talk to and what to fix

As a sales manager, I want a fix list and an owner view, so that I can run focused pipeline reviews.

  • The owner table is sorted by flagged value, largest first.
  • The fix list shows the 15 largest flagged deals, each with its issues and a suggested first fix. A CSV download includes all flagged deals.

Story 4: Get a brief I can forward

As a RevOps lead, I want a short written summary for my CRO, so that I don't have to write it from the charts.

  • The brief is generated only when I click. Before that, I can see the exact JSON that would be sent.
  • The payload contains aggregates only. Rep names are replaced with labels and swapped back in the browser.
  • If the AI service is unavailable, the rest of the page keeps working and a clear message is shown.

5. AI decisions: where it adds value and where it's noise

Not AI The checks themselves

Flagging a past close date or a missing next step is a rule, not a judgement. Rules are explainable, give the same answer every time, and can be argued with in a pipeline review. An AI score for "data quality" would be harder to trust and impossible to audit. The method is public so anyone can check it.

AI Turning numbers into a brief

Charts take interpretation, and a CRO wants three sentences. Writing a short, specific narrative from structured numbers is where a language model is genuinely useful. The prompt restricts it to the numbers provided, rep labels only, and a fixed shape: headline, actions, biggest single fix.

AI, with limits Privacy by design

The model never sees deal names, accounts or rows. Rep names are replaced before sending. The server also strips the payload down to small, plain values, so the endpoint can't be used as a general chatbot.

Rejected AI win-probability per deal

It's tempting, but without historical outcomes and activity data it would be guesswork presented as confidence. In other words, noise. It's worth doing only with outcome data, and it isn't the problem this tool solves.

Later "Chat with your pipeline"

Useful only once the underlying data is trustworthy, and it would need the raw rows sent to a model. That reverses the privacy promise that makes people willing to try the tool. It's parked until there's a clear user need and a private way to do it.

6. How I'd know it's working

The site deliberately has no analytics today. Here's what I'd instrument with privacy-friendly, count-only events (no file data) if this were a product:

MetricDefinitionWhy it matters
Activation% of visitors who run a check on their own file, not just the demoShows the privacy promise and export guide are enough to get real data in.
Time to first resultSeconds from landing to results, for own-file runsThe goal is under two minutes, including the export.
Mapping friction% of own-file runs where the user changed a column mappingHigh means auto-mapping is failing for real exports.
Action taken% of runs that download the fix list or generate a briefSeparates "interesting" from "useful".
Weekly return% of users who run another check within 14 daysThe real test: does this become part of the forecast routine?

7. Method: how the score works

A deal is open if its stage isn't marked as closed. Stages containing "closed", "won", "lost" or "disqualified" are marked closed by default, and you can change this. Each open deal gets checked against the rules below, as of the date you choose:

CheckFlagged whenNeeds column
Close date already passedClose Date is earlier than the as-of dateClose Date
No next stepNext Step is blankNext Step
No recent activityLast Activity is blank or older than N days (default 30)Last Activity
Stuck in stageDays in the current stage exceed N (default 45), taken from Stage Duration or calculated from Last Stage Change DateStage Duration or Last Stage Change Date
Amount missingAmount is blank or zeroAmount

Health score = open pipeline value on deals with no flags ÷ total open pipeline value × 100. It's weighted by value because a stale $500k deal matters more to the forecast than a stale $5k one. Deals with no amount add nothing to the value, so they're also shown as a count. The bands (80+ healthy, 60–79 needs attention, below 60 at risk) are my own rule of thumb, not an industry benchmark.

Limits. The checks measure data hygiene, not deal quality. A deal can pass every check and still be lost. The thresholds are defaults you should tune to your sales cycle. Checks whose columns are missing are reported as not measured, so the score can only be optimistic, never pessimistic, when columns are missing.

8. What's next

Changelog

Sources

  1. Gartner, "Gartner Says Less Than 50% of Sales Leaders and Sellers Have High Confidence in Forecasting Accuracy", press release, 12 February 2020 (State of Sales Operations Survey). gartner.com
  2. Salesforce, "Sales Statistics" from the State of Sales report (2026): "Sales reps spend 60% of their time on non-selling tasks." salesforce.com