Back to blog
automationhermespythonohanasmartprospectingcronjobs
·3 min read

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:

  1. Look at the list of new leads
  2. Decide which ones are worth it (universities and residences yes; restaurants no)
  3. 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:

  1. The scraper found them
  2. The email was specific (not templated)
  3. The response didn't get lost in "Sent"
  4. The watcher alerted me on Telegram within minutes

Without the pipeline, that email ends up in a forgotten spreadsheet.

The Lesson for B2B Builders

  1. Don't write code to "send better emails". Write code that gives the human the best info to decide.
  2. Automate prospecting, not sales. Cronjobs search. Humans close.
  3. Segmentation wins. Out of ~80 leads, qualify a handful. The scraper did 90%, I did the 10% that moves the needle.
  4. 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.