Workflow

Outreach workflow #

End-to-end flow from discovery to sent email.

1. Discover #

raven discover --q "backend engineer" --loc Remote --since 7

Results save to data/jobs.json.

2. Draft #

raven draft --max 25

Creates:

FilePurpose
drafts/outreach-YYYY-MM-DD.csvSpreadsheet with all columns
drafts/outreach-YYYY-MM-DD.mdHuman-readable review

Optional: --xlsx for Excel, --gemini for AI polish.

3. Review #

Open the markdown file:

open drafts/outreach-*.md   # macOS

Check each entry:

  • email rows — subject, body, disclaimer
  • form rows — follow form_steps in browser (skip send)

Edit CSV directly if needed before sending.

4. Fill contact emails #

Board listings often leave contact_email blank. For email outreach:

  1. Find hiring manager or careers contact
  2. Fill contact_email column in CSV
  3. Or use --guess-email during draft (verify guesses)

5. Authenticate #

raven auth-gmail     # or auth-outlook

Ensure .env has SENDER_NAME and SENDER_EMAIL.

6. Dry run #

raven send --input drafts/outreach-2026-07-04.csv --dry-run

Prints each email without sending. Fix any issues in the CSV.

7. Send #

raven send --input drafts/outreach-2026-07-04.csv --delay 60 --limit 20
FlagDefaultPurpose
--delay N30Seconds between sends (rate limiting)
--limit N9999Max emails this run
--cc ADDRESSCC all emails
--providergmailgmail or outlook

8. Attachments #

Place files in files/ at repo root — attached to every sent email.

Application type decision #

application_typeNext action
emailFill contact → dry-run → send
formOpen apply URL → follow form guide → submit in browser

Best practices #

  • Always dry-run first
  • Use --delay 60 or higher to avoid provider rate limits
  • Personalize subject lines in CSV before bulk send
  • Never send form-application rows via raven send
  • Keep a log: sends are recorded in data/logs/send-*.log