The Problem
HubSpot Starter costs $20/month. For a small team managing a pipeline of 30 to 50 active deals, most of what HubSpot Starter does is: store contact records, track deal stages, and send a follow-up email reminder when a deal goes cold.
We were not using the marketing automation, the ad attribution, or the reporting dashboards. We were using it as a glorified spreadsheet with a kanban view and email reminders.
We asked: what would it take to build exactly what we use?
What We Built
A lightweight CRM using Python, Flask, and SQLite. It stores contact records, tracks deals through a configurable pipeline, and sends a daily digest of deals that have not been touched in more than five days.
How We Did It
Stack: Python, Flask, SQLite, SMTP, HTML/CSS/Jinja2
Estimated time: 180 minutes
Build Steps
- [done] Step 1: Design schema — contacts, deals, pipeline stages, activity log (Python, SQLite) – 20min
- [done] Step 2: Build contacts CRUD — add, edit, view, search (Python, Flask, Jinja2) – 30min
- [done] Step 3: Build deals CRUD with stage tracking — create deal, move through stages (Python, Flask, SQLite) – 35min
- [done] Step 4: Activity log — record every stage change and note with timestamp (Python, SQLite) – 20min
- [done] Step 5: Stale deal digest — daily script identifies deals with no activity in 5+ days, sends email summary (Python, SMTP, SQLite) – 25min
- [done] Step 6: Pipeline view — one-page kanban-style HTML view of all open deals by stage (Python, Flask, HTML/CSS) – 30min
- [done] Step 7: Test full workflow: add contact, create deal, move stages, trigger digest (Flask, SMTP) – 20min
Results
- Steps completed: 7/7
- Total build time: 180 minutes
- Completion: 100%
- Verdict: COMPLETE
Build vs Buy
| Buy (HubSpot Starter) | Build (Custom) | |
|---|---|---|
| Cost | $20/month | Time investment only |
| Stack | Managed SaaS | Python, Flask, SQLite |
| Setup Time | Hours (data import, field mapping) | 180 minutes |
| Ongoing Cost | $20/month | $0 (self-hosted) |
Limitations of the Rebuild
- No email open/click tracking
- No built-in meeting scheduling or calendar integration
- No mobile app — browser only
- No third-party integrations out of the box (Slack, Google Workspace)
- Search is simple — no fuzzy match or advanced filtering
- Scales poorly beyond a few hundred contacts without schema optimization
Verdict
The rebuild is complete. A CRM covering our actual daily use case took 180 minutes to build using Python, Flask, and SQLite. The ongoing cost is $0.
For a small team managing a modest pipeline without needing marketing automation, this covers the full use case.
Want us to build this for you?
We help small teams replace expensive SaaS tools with AI-assisted custom builds. If you are paying for a tool you barely use, we can probably rebuild it for less.
Free giveaway: Every month we give away one free rebuild to a qualifying team. Reply to this post or DM us to enter.
Leave a Reply