Skip to content

v0.3.0 — Daily LaunchAgent + NDR Auto-Recovery + Email Permutation

Latest

Choose a tag to compare

@iPythoning iPythoning released this 21 Apr 11:16
· 4 commits to main since this release

🚀 OfferAgent v0.3.0

Built and dogfooded while hunting my own VP/CMO/CGO role. Sent 30+ real emails today via this system. NDR auto-recovery, email permutation, and a daily macOS LaunchAgent that runs autonomously and survives sleep/wake.

✨ Highlights

🤖 Fully autonomous daily flow

  • macOS LaunchAgent fires at 10:00 every day — if Mac is asleep, queue runs immediately on next wake (cron doesn't do this; LaunchAgent does)
  • End-to-end script: NDR scan → Scrapling refresh → permutation → batch send → CRM logging

🔍 NDR Auto-Recovery

`bin/check-ndr.js` — scans Gmail bounces from last 24h, marks `failed` in CRM, releases dedupe quota so the daily agent retries with permuted addresses tomorrow.

🧬 Email Permutation Algorithm

`bin/permute-emails.js` — generates every (company × pattern) combination across:

  • 17 recruiting patterns: `careers, jobs, talent, talents, recruit, recruiting, hr, hire, hiring, people, ta, join, apply, resume, work, opportunities, zhaopin`
  • 19 CXO patterns (opt-in via `--cxo`): `ceo, coo, cto, cmo, cgo, cpo, chro, cfo, founder, founders, leadership, execs, contact, hi, hello, info, bd, partnerships, partners`
  • Deduped against `outbound_log`, priority-ordered (careers > talent > recruit > hr > ...)

✉️ Self-Promoting Email Footer

Every email automatically appends:

✉️ This email was sent by OfferAgent — an open-source job-hunt AI Agent I built end-to-end. Repo: github.com/iPythoning/OfferAgent · Itself a live proof I can ship AI Agents in production.

Turns automation into a differentiator.

📦 New Files

```
bin/check-ndr.js — Gmail NDR scanner
bin/permute-emails.js — Pattern permutation
bin/cleanup-drafts.js — Test draft cleanup
bin/cv-to-pdf.js — Markdown CV → PDF
bin/daily-haitou.sh — Daily orchestrator
bin/send-batch.js — Templated batch send
~/Library/LaunchAgents/com.fandayong.offer-agent.daily.plist
```

🔐 Security

  • `gmail-sender/credentials.json` and `token.json` blacklisted in `.gitignore`
  • LinkedIn cookies in `social-dm/cookies/` blacklisted
  • Generic `/credentials.json` / `/token.json` rules

📊 Real Send Stats Today

```
✅ sent : 17 (real Gmail delivery)
❌ failed : 13 (NDR detected, marked for retry)
📝 quota : 30/30 today, resets tomorrow
```

🛠 Setup (one-time)

```bash
git clone https://github.com/iPythoning/OfferAgent
cd OfferAgent
npm install
pip3 install --break-system-packages -r email-finder/requirements.txt
cp .env.example .env # fill in keys
mv ~/Downloads/client_secret_*.json gmail-sender/credentials.json
node bin/init-db.js
node bin/gmail-auth.js
node bin/linkedin-dm.js --login
launchctl load ~/Library/LaunchAgents/com.fandayong.offer-agent.daily.plist
```

📚 Skills Published

  • OpenClaw skill registry: `~/clawd/skills/offer-agent/`
  • Hermes skill registry: `~/.hermes/skills/career/offer-agent/`
  • Both auto-installed via `bash skills/install.sh`

License

MIT — fork freely. PRs welcome.