CRM Rescue / Local-first internal tool

Making messy sales data reviewable instead of magical

CRM Rescue transforms a CRM CSV into a validated, deduplicated, prioritized, human-reviewable pipeline without automatically contacting anyone or modifying a source CRM.

Release evidence

What the build actually proved.

These are release facts from synthetic fixtures and verification—not claims about customer results.

01 / signal24synthetic input rows
02 / signal22active output records
03 / signal6 / 6candidates resolved
04 / signal0tested axe violations

System path

A legible input-to-output boundary.

The useful part is not the tool list. It is knowing what enters, what the deterministic core changes, and what remains available for review.

01 / INPUTSynthetic CRM CSV exportscaptured with source context
02 / COREValidate · review · confirmrules and gates stay explicit
03 / OUTPUTAudited local exportsreviewable before action

Build notes

From operational problem to verified release.

Each layer records what changed, what did not, and where a person still owns the decision.

01

CONTEXT

Problem

CRM cleanup involves more than formatting. Exports can contain inconsistent headers, malformed contact fields, duplicate records, missing owners, stale activity, and unclear next actions. Silent merges or opaque “lead quality” scores can make the data less trustworthy.

02

BUILD LAYER

Solution

The application guides a user through column mapping, deterministic validation, duplicate review, pipeline-health checks, attention scoring, confirmed decisions, reproducible exports, and local deletion. Invalid or uncertain records remain visible instead of disappearing.

03

BUILD LAYER

Architecture

React and TypeScript review UI → FastAPI and Pydantic decision layer → SQLite local state and audit trail → reproducible CSV and JSON exports

Nginx serves the interface and proxies the API behind one loopback origin. Docker Compose packages the local application and data volume.

04

BUILD LAYER

Safety boundaries

  • Candidate scores create review items; they never authorize a merge.
  • Every merge and keep-separate decision requires confirmation.
  • No AI, analytics, CRM writeback, email, SMS, enrichment, or automatic submission exists.
  • Runtime CSVs, SQLite files, and generated exports remain local.
  • Spreadsheet values that could execute as formulas are prefixed and audited.

05

RESULT

Verified outcome

The deterministic demo processed 24 invented records from Salesforce-style, HubSpot-style, and generic CSV fixtures. Six duplicate candidates were explicitly resolved, leaving 22 active records and no pending decisions. These are demo results, not claims about customer data or sales performance.

Product evidence

Real screens from the verified release.

Synthetic or sanitized fixtures only. The screenshots show the review surfaces and boundaries described above.

artifact://crm-rescue/screen-01VERIFIED
CRM Rescue duplicate candidate review screen
01Evidence is visible and each candidate requires a confirmed decision.
artifact://crm-rescue/screen-02VERIFIED
CRM Rescue field mapping and import review
02Source columns are mapped before any transformation begins.
artifact://crm-rescue/screen-03VERIFIED
CRM Rescue results, audit, and export interface
03Review results, audit history, and reproducible exports share one workflow.