← projects

[Effective Recovery]

Lead Enrichment & ROI

Recovery and ROI of the queue that finds valid phone numbers for leads — where “phone found” isn't success.

● In productionProduct & FrontendCompany↑ Analytics Dashboards HubReactPostgresSQLTypeScript
01 /context

Leads with a missing or invalid phone go through a cascade of enrichment providers. Each lookup costs money; the question was whether it pays back.

02 /my role

Built the dashboard and the ROI model, validated against the analyst's manual monthly report.

03 /problem

ROI was reported on a naive “recovered” count, and the monthly report took hours by hand.

04 /how it works
  1. 01 · Effective recovery

    A lead counts as recovered only when the number is valid — proxied by the SMS platform accepting it.

  2. 02 · Two tabs

    Recovery (cascade, queue latency, outcome per channel) and ROI (per source per day, plus a monthly table).

  3. 03 · 7-day attribution

    Sales are attributed to an enriched lead by e-mail within 7 days, deduplicated by transaction id.

  4. 04 · The manual guide as oracle

    The analyst's monthly method (queries, CSVs, dedup rules) was archived and used to validate the automated numbers.

05 /architecture
01
Invalid-phone leads
02
Enrichment cascade
03
Platform acceptance
04
Effective recovery
05
ROI per source
06 /results
ROI by source available every day instead of once a month.
07 /what broke and what I changed
  • ! brokeFully refunded sales counted as sales with near-zero net, inflating ticket and conversion while revenue looked right.

    → changedOnly sales with positive net count, refunds capped at price — locked by three new invariants, tested red before green.

  • ! brokeAfter the source changed its ID format, the call-center mirror kept every version of a transaction and inflated call-center ROI by more than half.

    → changedA prune step removes versions that no longer exist at the source.

08 /related