Imagine spending hours daily cleaning phone numbers and sending 1,000 WhatsApp messages by hand. That was my reality last year, juggling lead follow-ups for 20+ clinics.
Then I had an idea: what if I could automate it all in one place?
This is the story of Konquista โ how I went from manual chaos to a full-fledged SaaS using Google Sheets, Flask, and Django, boosting response rates by 30%. Hereโs how it happened.
The Problem
We had just onboarded SocialHub to manage communication across 20+ clinics using multiple WhatsApp numbers via their API.
Leads were flowing in โ but the process to follow up with those who didnโt schedule was messy:
- Extract leads from the partner platform
- Clean phone numbers (+55, 11, (11), -, etc.)
- Match leads with internal ERP data
- Use VLOOKUP in Excel to compare both sides
- Send messages manually ๐ซ
It was repetitive, error-prone, and wasted hours every day.
The Insight
After a few days of chaos, I asked myself:
โWhat if I could centralize and automate everything in one place?โ
Thatโs when Konquista was born โ first as a hack, then a project, and finally a full-fledged SaaS.
Version 1: Spreadsheet MVP
Built using Google Sheets + AppScript:
- Contacts: name, phone, source, created date
- Messages: pre-written templates
- Appointments: ERP data (from today-5 to today+5)
- Filtered Contacts: VLOOKUP to remove scheduled contacts
- Sent Messages: log of what was sent and when
This worked โ until it didnโt. AppScriptโs 5-minute runtime limit made things slow and unstable after ~100+ leads.
Version 2: Python + Flask
I took the leap, bought a Flask course on Udemy, and wrote my first Flask monolith.
Source Code: github.com/lfariabr/konquista
What I used:
- Backend: Flask + Blueprints
- Frontend: Jinja2 templates
- Database: PostgreSQL on Supabase
Deployment:
- Docker + docker-compose (local)
- Nginx + Certbot + Gunicorn (production)
- Vercel (frontend testing)
- DigitalOcean droplet (hosting)
Some manual jobs still remained (like clicking โSend Allโ), but it was a huge step forward.
Version 3: Django + Celery ๐
This marked the beginning of something scalable.
Major improvements:
- Async Queue Processing: Celery + Redis to send WhatsApp messages in the background, with retries and monitoring
- CRM + ERP Sync: Real-time sync for leads, appointments, payments โ no more spreadsheets
- Campaign Engine: Schedule recurring campaigns (daily, weekly, one-time) using custom filters
-
Smart Templates: Dynamic messages with
{name}
,{appointment_time}
,{unit}
, and media support - Multi-user & Role Management: Permissions, grouping, usage tracking, admin panel
- Dockerized Services: web, worker, beat, redis, postgres, nginx, monitoring
- Monitoring: Logs, retries, dead-letter queues, basic dashboards
Results
Konquista is now used by 20+ clinics, sending around 1,000 WhatsApp messages daily:
- Welcoming new leads/customers
- Sending appointment reminders
- Reactivating cold leads (โWe miss you!โ campaigns)
๐ 30% increase in response rates, fully automated.
Final Thoughts
This journey showed me the real power of software and how a few lines of code can eliminate hours of repetitive work, drive real business results, and scale human effort.
If youโre building something similar, want to exchange ideas, or just curious about how it all works, feel free to ping me. Iโm happy to connect!
๐ GitHub Repo
Top comments (0)