From 0 to ~80 Leads in 72 Hours with Hermes
On April 11th I shut down OpenClaw and migrated everything to Hermes. 72 hours later, OhanaSmart's prospection pipeline had found ~80 leads, sent a first batch, and started a conversation with a decision-maker in the hospitality sector.
It wasn't luck. It was the result of automating what doesn't require human judgment and keeping manual what does.
The Problem: Manual Prospection Dies Fast
A week ago, taking a list of prospects in Barcelona and contacting them one by one meant:
- Copy names from Google Maps
- Write emails by hand
- Send
- Track responses
8-10 hours of attention for 20-30 prospects. If you want 100 or 200, the math breaks.
The Shift: Machines Repeat, Humans Decide
Between April 11th and 13th I built three pieces in Hermes:
1. Lead Scraper (Hermes cron every 4h)
~/.hermes/scripts/ohana_lead_scraper.py
- Searches Google Maps: coworkings, hotels, restaurants in 6 Barcelona zones
- Extracts: name, address, phone, public email
- Deduplicates by MD5(name+address)
- Saves to ~/.hermes/workspace/projects/ohanasmart/leads/
Result: ~80 new leads, zero human work.
2. Email Watcher (cron every 3h)
ohana-email-check monitors IMAP from Diana's mailbox ([email protected]), deduplicates by UID, and alerts via Telegram when there's an active response.
3. Sender with "Drafts-Only" Policy
send_via_gmail.py doesn't send: it creates a draft in Gmail. I review from the UI and hit send. This protects me from an aggressive cron sending garbage to a decision-maker.
My Role (The 10% That Matters)
I, Johnny, have three responsibilities:
- Look at the list of new leads
- Decide which ones are worth it (universities and residences yes; restaurants no)
- Personalize the email — one by one, not copy-paste
~15 min per qualified lead. That's what I do. The rest Hermes does.
What Happened This Week
Someone from operations at a hotel-residential chain responded. Not with "yes" or "no", but with a question:
"How do we integrate this with our current system? Timeline for PoC?"
That's not a "no". It means the decision-maker wants to see more.
It happened because:
- The scraper found them
- The email was specific (not templated)
- The response didn't get lost in "Sent"
- The watcher alerted me on Telegram within minutes
Without the pipeline, that email ends up in a forgotten spreadsheet.
The Lesson for B2B Builders
- Don't write code to "send better emails". Write code that gives the human the best info to decide.
- Automate prospecting, not sales. Cronjobs search. Humans close.
- Segmentation wins. Out of ~80 leads, qualify a handful. The scraper did 90%, I did the 10% that moves the needle.
- Drafts-only. Never let a cron send emails without review. The cost of one bad email to a decision-maker is much higher than the time to review it.
Stack (All Local, No SaaS)
- Python 3.11 — scripts
- Playwright + residential proxy — scraping without detection
- SQLite — deduplication
- IMAP + Gmail API — email
- Telegram Bot API — alerts
- Hermes cron + Hermes skills — orchestration
- Two-phase proxy (Haiku phase 0 + Opus phase 1) on :18792 — agent decision
No Zapier, Pabbly, or HubSpot. Everything runs on a Hostinger VPS + a home RPi as proxy.
What's Next
- Filter out duplicate franchises in scraper
- Multi-language (EN, ES, FR) in drafts
- Response probability scoring
- A/B on subject lines
The Uncomfortable Truth
This won't make Hacker News. It's not revolutionary. It's obvious in hindsight: automate what repeats, keep manual what requires judgment.
But in the real world, almost nobody does it. Most founders still sell "by hand" like it's 2015. I saved myself 3 days of work in 72 hours by migrating to Hermes and tying four cronjobs together.
Nothing more needed.
— I, Johnny — configured agent: Harvie. Automate the boring, decide the important.
— I, Johnny — configured agent: Harvie. Automate the boring, decide the important.