Find which past customers to contact first. Drop in a CSV from your CRM and get a prioritized list of reactivation targets scored by recency, revenue, and loyalty.
Built for service businesses (HVAC, plumbing, landscaping, cleaning, etc.) but works with any customer list.
# Download
git clone https://github.com/wearnur/customer-reactivation-analyzer.git
cd customer-reactivation-analyzer
# Run on your customer export
python3 reactivate.py your_customers.csv
# Get a markdown report
python3 reactivate.py your_customers.csv --format markdown --output report.md
# Get JSON for automation
python3 reactivate.py your_customers.csv --format json --output report.jsonNo dependencies. Pure Python 3.6+. No pip install needed.
- Auto-detects your CSV columns — Customer name, email, phone, last service date, revenue, service count
- Scores each customer 0-100 based on three factors:
- Recency (0-40 pts): Sweet spot is 3-18 months since last service
- Value (0-35 pts): Higher lifetime revenue = higher priority
- Frequency (0-25 pts): Repeat customers are more likely to return
- Categorizes into tiers:
- 🔥 Hot (70+) — Contact within 48 hours
- 🟡 Warm (45-69) — Contact within 1 week
- 🔵 Cool (25-44) — Include in next campaign
- ⚪ Cold (<25) — Low priority
🔍 Analyzing customers.csv...
✅ Analyzed 847 customers
🔥 142 hot leads | 🟡 289 warm leads
💰 $1,247,300 potential revenue at risk
Rank Customer Score Tier Last Revenue Top Reason
─────────────────────────────────────────────────────────────────────────────────
1 Brown Residence 95 🔥 Hot 10.2mo $5,600 Lapsed 10 months — good candidate
2 Clark Estate 95 🔥 Hot 9.4mo $6,700 Lapsed 9 months — good candidate
3 Garcia Property 88 🔥 Hot 5.0mo $3,200 Prime reactivation window (5 months)
...
The tool auto-detects columns. Your CSV just needs headers that roughly match these:
| What | Accepted Headers |
|---|---|
| Customer name | Customer, Name, Client, Contact |
Email |
|
| Phone | Phone, Mobile, Cell |
| Last service | Last Service Date, Date, Last Visit, Completed |
| Revenue | Revenue, Total, Amount, Spent, Value |
| Service count | Count, Visits, Jobs, Orders, Services |
Works with exports from Jobber, ServiceTitan, Markate, HouseCall Pro, and most CRMs.
python3 reactivate.py customers.csvpython3 reactivate.py customers.csv -f markdown -o report.mdGenerates a professional report with summary stats, prioritized table, and recommended actions.
python3 reactivate.py customers.csv -f json -o report.jsonMachine-readable output for integration with other tools.
python3 reactivate.py customers.csv [OPTIONS]
Arguments:
file CSV file with customer data
Options:
--top N Show top N customers (default: 50)
--format FORMAT Output format: table, markdown, json
--output FILE Save report to file
--version Show version
The scoring model is based on RFM analysis (Recency, Frequency, Monetary value), the gold standard in customer reactivation:
- 3-6 months lapsed is the prime window — customers still remember you but might be shopping around
- High-value repeat customers are 5-7x more likely to return than one-time buyers
- After 24 months, reactivation probability drops below 5% for most service businesses
This tool tells you who to contact. ReachBack does the rest:
- 🤖 AI-generated personalized messages for each customer
- 📱 Automated text & email campaigns
- 📊 Response tracking with hot/warm/cold lead scoring
- 📅 Smart scheduling that spaces out contacts
- 💰 ROI calculator: See how much your past customers are worth →
MIT — use it however you want.