Sample data · import your own to see yours

One real leak, proven.

Computed from 595 leads, 237 jobs and 411 calls by deterministic rules — no AI touches the number. This is the full loop: find it, prove it, fix it, measure it.

Sample recordsEvery figure below is computed from these records, and every assumption it rests on is printed with it.
Your CRMImported
595 leads237 jobs415 quotes
Your accountingImported
318 invoices
Your call logImported
411 calls
  1. Import
  2. Normalize
  3. Calculate
  4. Prove
  5. Act
  6. Measure
critical

Quotes are going stale without a decision

57 quotes worth $82,779 have sat more than 30 days without being accepted or marked lost — no decision was ever recorded. Quotes you do work to a decision close at 75% in your own data.

$31,300/mo at stake
Estimated, not a guarantee.

The math

high confidence

$41,961 stale quote value/mo × 75% close rate = $31,300/mo

Every term in the formula above, with its value
Quotes open > 30 days57
Value sitting in stale quotes$82,779
Going stale per month$41,961
Close rate by value on quotes that reached a decision74.6%
Close rate by count (not used in the total)74.0%
Aged quotes that reached a decision219
aging_quotes@1.0.0 · window 2026-04-01 → 2026-05-30

Records behind this number

57 records
The individual records this finding was computed from
QuoteSentDays openAmountStatus
Q72026-04-0190$1,064sent
Q182026-04-0388$1,724sent
Q272026-04-0487$1,915sent
Q432026-04-0884$973sent
Q442026-04-0784$1,821sent
Q462026-04-0784$1,090sent
Q472026-04-0784$1,989sent
Q482026-04-0784$1,743sent
  • A quote is "stale" when more than 30 days have passed since it was sent and it is still marked sent — neither accepted nor expired.
  • The close rate is measured on your own aged quotes only (162 accepted of 219 that reached a decision), not an industry benchmark.
  • That rate is weighted by amount, not by count: it multiplies a sum of dollars, so a $50,000 quote and a $500 quote must not count the same.
  • Assumes a stale quote worked to a decision would close at that same rate.
  • Amounts are what you quoted, not collected revenue — a closed quote can still be discounted or written off.

Every formula, this run

5 findings
Every finding this run produced, with its formula and result
FindingFormulaResult
Quotes are going stale without a decisionaging_quotes@1.0.0$41,961 stale quote value/mo × 75% close rate = $31,300/mo$31,300/mo
Leads wait too long for a first callbackslow_lead_response@1.0.070 slow leads/mo × 28% booking gap × $1,517 avg job × 78% completion = $23,000/mo$23,000/mo
AI-booked jobs collect less cash than jobs your team booksai_booked_job_audit@1.0.038.1 AI-booked jobs/mo × ($1,342 − $1,086 collected per booking) = $9,800/mo$9,800/mo
Past customers have gone quiet and nobody followed updormant_customers@1.0.075 dormant customers × 10% late-return rate × $1,493 avg repeat job ÷ 1.6 mo return cycle = $6,800/mo$6,800/mo
Work you have done and not been paid foruncollected_invoices@1.0.0$10,195 overdue/mo × 14.3% never-collected rate = $1,500/mo$1,500/mo

Detectors that did not find enough signal this run print nothing — a claim below the confidence bar is worse than no claim. Formulas are versioned; the version above is pinned in the report.

Accept this action

Chase every quote older than two weeks, and set a decision date on new ones.

Loupe re-runs this detector on your next export, so the same number comes back computed from newer records.

Recover this revenue

Send the people behind this leak a ready-made email — you personalise and send it.

Karan PatelGrovistra · the analyst named on every paid report
Sample report · demo data

Want this on your own numbers?

The demo above runs on sample records. Your report runs on yours.

$2,500 one-time — credits 100% toward month one if you continue within 60 days.

Prefer to do it yourself? Create a free workspace and import your own records → Same detectors, same arithmetic, no card.