CRM refresh: what we shipped in May

CRM refresh: what we shipped in May

Nineteen changes shipped in May, all driven by the same complaint from our own team: I cannot answer that question without exporting to a spreadsheet. Better lead tracking, custom fields on deals, twelve standing monthly reports, and the query performance to make all of it usable. Here is what we did and why it mattered.

DSC CRM after the May refresh — pipeline and lead tracking in one view.

The problem

Our CRM worked until client volume made three gaps painful every week:

  • Lead source was opaque. Marketing wanted attribution; sales wanted channel performance. Answers lived in notes and memory, not the system.
  • Deals were too thin. Expected close dates, evolving values, and stage probability lived in spreadsheets beside the CRM.
  • Reporting meant export. Conversion by stage, monthly revenue, and velocity questions required manual spreadsheet work for every leadership review.

The May refresh closed all three without bolting on a second tool.

Lead tracking

Every lead now records origin at creation — source, optional campaign detail, and timestamp — and stage changes log automatically.

  • Source options: organic search, paid ads, referral, event, partner, direct outreach, and other.
  • Stage-to-stage conversion rates compute in the CRM (where leads stall shows up without a pivot table).
  • Filters by source and campaign answer questions like “did Q2 webinar leads convert better than paid?”

Deal tracking

We added a custom-field framework so each deal carries what our sales process actually needs:

  • Expected close date, win probability, next action, stakeholder count, budget confirmed.
  • Probability updates by stage (e.g. proposal → 50%) so reps are not re-keying the same field.
  • Deal value history — every revision logged with reason, so we can see how often deals grow or shrink through negotiation.

Reporting

Twelve standing monthly reports replaced the export-and-rebuild cycle. Leadership can pull any of these without leaving the CRM:

  1. Pipeline health — deals by stage at month end
  2. New leads — created by source
  3. Lead conversion — stage-to-stage rates
  4. Opportunity creation
  5. Proposal volume
  6. Proposal → negotiation conversion
  7. Negotiation activity
  8. Closed won — revenue and count
  9. Closed lost
  10. Average deal size
  11. Deal velocity — average time in stage
  12. Revenue forecast — pipeline × probability

Performance

Indexes on stage, pipeline+stage, open date, and close date dropped common queries from sub-second to tens of milliseconds. Report generation moved to a background job with caching so the UI stays responsive while heavy aggregates run.

  • Deals in stage: ~890ms → ~45ms
  • Pipeline overview: ~1.2s → ~78ms
  • Date-range filters: ~620ms → ~32ms
  • Lead source filter: ~410ms → ~28ms

What shipped (19 items)

Lead tracking (5): source attribution, source detail, stage history, source filters, conversion-by-source report.

Deal tracking (4): custom fields, auto probability by stage, value history, next-action field.

Reporting (6): pipeline health, lead conversion, monthly revenue, deal velocity, forecast, plus the twelve-report bundle above.

Performance (4): indexing, query optimization, report caching, background report generation.

All nineteen shipped in a three-week sprint and are in production today.

Results

  • Lead source is always on the record — marketing attribution questions answer in seconds.
  • Deal health lives in the CRM — no parallel spreadsheet for close dates or probability.
  • Monthly reviews run from built-in reports, not exports.
  • The app feels fast enough that people actually use it during calls.

The May refresh was foundational—CRM that leadership can query without exports. If your team is still reconciling spreadsheets around pipeline truth, describe what you need to decide.