← Back to Projects

Phone Sniffer

Demo

Enrichment tool that takes lead lists, standardizes formatting, dedupes, scores, and outputs clean CSVs for outreach.

What It Does

  • Phone normalization + validation
  • Duplicate detection + clean CRM export formatting
  • Enrichment pipeline with quality scoring

What I Built

  • Python script with pandas for CSV processing and transformation
  • Phone validation logic using libphonenumber for international formats
  • Duplicate detection algorithm with fuzzy matching on name and contact fields
  • Quality scoring system based on field completeness and validation results
  • Command-line interface with progress tracking and error reporting

Common Use Cases

Sales Teams

Clean messy lead lists before loading into HubSpot, Salesforce, or outreach tools. Remove duplicates, format phone numbers consistently, and score leads by data completeness.

Marketing Campaigns

Normalize contact lists from multiple sources (webforms, trade shows, purchased lists) into a single clean dataset ready for email or SMS campaigns.

Data Migrations

Clean up legacy CRM data before migration. Identify duplicates, fix formatting issues, and flag low-quality records that need manual review.

How It Works

1. Upload CSV: Drag and drop your lead list with contact fields (name, phone, email, company). Supports common CRM export formats.

2. Validation Pass: Each phone number is validated against libphonenumber's database to check if it's a real, callable number. Invalid entries are flagged.

3. Normalization: Phone numbers are converted to E.164 standard (+1XXXXXXXXXX). Names are title-cased. Emails are lowercased.

4. Duplicate Detection: Compares records using fuzzy matching on name fields and exact matching on phone/email. Keeps the most complete record.

5. Quality Scoring: Each record gets a score based on field completeness, validation status, and duplicate status. High/Medium/Low ratings.

6. Export Clean CSV: Download the cleaned dataset with a new column showing quality score and any flags (duplicate, invalid, incomplete).