Your contact count jumped from 2,000 to 4,100 in six months. At first, you thought it meant you were winning. Then your sales manager asked why pipeline forecast last quarter was $2.3M but actual revenue closed was $650K. A three-rep team each has "Acme Corp" entered three ways. Your top deal sits in the pipeline untouched for four months. Forecasting feels like fiction because your data is. The problem isn't the CRM tool. It's the data inside it. Duplicate contacts, orphaned deals, and deals stuck in stages create phantom pipeline that inflates forecasts and kills visibility into what's actually closable. Fixing this isn't a one-time cleanup—it's a systematic audit and then ongoing discipline. Here's how to rebuild pipeline data so forecasts reflect reality. Why duplicates wreck forecasting (and how widespread they are) When you have three contact records for the same person at the same company, your pipeline math breaks in ways that don't immediately hurt: Deals get split across duplicates. One deal sits on Contact A, another on Contact B. You see two separate opportunities instead of one customer with two needs. Forecast shows $500K × 2 instead of one $500K opportunity. Sales reps work the same contact twice. Rep A calls Contact A. Rep B emails Contact B. Neither knows the other is working it. You lose deal velocity and double-count effort. Close date and stage are inconsistent. Contact A's deal shows "Discovery" next month. Contact B's deal shows "Negotiation" two months out. Forecast uses the most optimistic date, inflating near-term certainty. Historical data becomes unusable. You can't measure win rate, sales cycle, or deal size because you're measuring noise instead of signal. In a 50-rep organization, duplicates account for 15–30% of contact volume. At 200 reps, it's often higher. Not all are obvious ("John Smith" vs. "John Smith"). Many are subtle: middle initials, nickname variants, old vs. new title, or records created because a rep didn't find the existing one. The three-stage audit checklist Stage 1: Find the duplicates (automated + manual) Automated detection. Most CRMs have a duplicate finder. Run it first. Look for: Exact name matches with different email addresses (likely the same person with multiple emails or a data entry error). Same email, different names (typos, nickname vs. legal name). Same phone number across different names and companies (watch for this—it catches reps who manually typed the same number twice). Manual scanning. After the automated run, scan by company. Pull a list of all contacts at your top 20 accounts. Read the list out loud. You'll spot duplicates the algorithm missed: "Acme Corp" vs. "Acme Corporation" vs. "ACME CORP" created by three different reps. Deal audit. Filter deals by close date in the next 90 days and stage. Scan the contact name on each deal. If you see the same company twice at the same stage, you've found a duplicate pair. Stage 2: Merge or delete (merge first, delete second) Merge, don't delete. When you find duplicates, merge them into the record with the most complete data. Keep the merge history if your CRM tracks it. Never delete without merging first—you'll orphan deals. On merge: Choose which email is primary (prefer work email over personal; prefer recent over old). Consolidate all phone numbers and notes into the primary record. Move all deals associated with the duplicate contact to the primary contact. Update the owner. If Rep A owned the duplicate and Rep B owned the primary, assign the merged record to whoever is actually working the account. Delete only orphans. After merging, scan for contacts with no email, phone, company, or deal attached. These are either old imports, test records, or incomplete data entry. Delete them. But don't delete duplicates by assuming one is orphaned—verify each deal first. Stage 3: Close dead deals and unstick stalled ones While merging contacts, look at their deals. A contact merge often reveals deals that should be closed or moved. Identify dead deals. Pull all deals in these stages: "Discovery" or "Qualification" older than six months with no activity in 60+ days. "Negotiation" or "Proposal" older than three months with no recent updates. Any stage with last update older than 90 days. For each one, ask the deal owner (or their manager if they've left): Is this real? Do we want to win it? If yes, when? If no, close it as "Lost" and note why: "Budget delay," "Competitor won," "No longer a fit," etc. This data becomes your win/loss analysis. Unstick stalled deals. Deals that sit in one stage for weeks tend to stall forever. For every deal over 30 days in the same stage, require the rep to update the next action and new close date, or move it to "Lost." No ghosting in the pipeline. This is where a CRM with flexible pipeline views helps: you can see which deals are aging in each stage and flag them for review without waiting for a forecast call. Build a repeatable cleanup schedule The first audit is the h