Pipeline

Discover → Draft → Send #

Raven’s workflow is three stages. Each stage produces artifacts the next stage consumes.

Stage 1: Discover #

raven discover

Input: config/portals.yml filters (+ optional CLI flags)

Output: data/jobs.json (auto-saved)

Sources (parallel):

TierFlagDescription
ATS--sources atsLive APIs: Greenhouse, Lever, Ashby, Workday, …
Boards--sources boardsRemoteOK, Remotive, Arbeitnow, Landing.jobs
Index--sources indexLocal SQLite from openjobdata
hiring.cafe--sources hiringcafeOpt-in; may need HIRING_CAFE_ENABLED=1

Stage 2: Draft #

raven draft --max 25

Input: data/jobs.json + config/profile.yml + parsed resume

Output:

  • drafts/outreach-YYYY-MM-DD.csv
  • drafts/outreach-YYYY-MM-DD.md

Each row is classified as email or form (ATS application).

Stage 3: Send (optional) #

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

Input: CSV with contact_email, subject, body

Output: Sent emails (or dry-run preview)

Form-application rows are not sent — use form_steps from the draft instead.

One-liner pipeline #

raven discover && raven draft --max 20

Logging #

Every job command writes timestamped logs to data/logs/ and prints live progress with per-phase stats.