Drafting #
Turn discovered jobs into tailored application drafts — email copy for direct outreach, or step-by-step guides for ATS forms (Greenhouse, Lever, Ashby, Workday, etc.).
Pages in this section #
- Resume parsing
Resume parsing #
Raven parses your resume from
config/profile.yml→resume.pathand caches structured bullets and skills.Supported formats #
Format Notes .mdBest — use ## Experiencewith-bullet lines.txtBullet lines + optional Skills:line.pdfRequires pdf-parse(installed viaraven setup)Markdown structure #
# Your Name ## Experience ### Company A — Role Title - Built X using Y, achieving Z - Led migration of ... ### Company B — Role Title - Shipped feature that ... ## Skills JavaScript, TypeScript, Node.js, React, PostgreSQLParsing rules #
- Sections detected by
## Heading(H2) - Bullets under
## Experience(including###subheadings) are extracted - Skills from
## Skillssection or comma-separated line highlightsandskillsinprofile.ymloverride parser output when set
Cache #
Parsed output is cached at
data/cache/resume-parsed.jsonfor speed.- Sections detected by
- JD tailoring
Job description tailoring #
For each job, Raven extracts keywords from the title and matches your resume bullets to produce tailored application content.
Output columns #
Column Meaning jd_keywordsTerms extracted from job title (e.g. backend,python,remote)action_wordsSuggested verbs for this role type tailored_bulletsTop resume bullets ranked by relevance to the JD How matching works #
- Keyword extraction — splits title on common separators, filters stop words
- Bullet scoring — each resume bullet scored by keyword overlap with title
- Action words — role-type heuristics (backend → “architected”, “scaled”; ML → “trained”, “deployed”)
- Top N —
resume.max_bulletsfrom profile (default 5)
Example #
Job title: Senior Backend Engineer — Node.js
- ATS form guides
ATS form guides #
When a job’s apply URL points to an ATS (Greenhouse, Lever, Ashby, Workday, etc.), Raven generates a form application guide instead of an email.
Application types #
Type Detected when Raven output emailDirect email outreach possible Subject + body formApply URL on known ATS domain Step-by-step form_stepsForm rows are not sent via
raven send. Open the markdown review or CSVform_stepscolumn and follow the guide in your browser.- Gemini plugin
Gemini draft plugin #
Optional AI polish for email drafts via Google’s Gemini API.
Setup #
- Get an API key from Google AI Studio
- Add to
.env:
GEMINI_API_KEY=your_key_here- Enable in profile (optional):
draft: gemini: enabled: true model: "gemini-2.0-flash"Usage #
raven draft --input data/jobs.json --gemini --max 10Or one-shot discover + draft:
raven draft --q "backend engineer" --gemini --max 5What Gemini does #
- Rewrites email subject and body for clarity and tone
- Preserves factual content from your resume bullets
- Does not fabricate experience — works from parsed resume + JD keywords
What Gemini does not do #
- Form application guides (ATS rows stay template-based)
- Verify email addresses
- Auto-send — you must review and run
raven sendyourself
Disclaimer #
Every draft includes:
What you get #
| Output | Contents |
|---|---|
drafts/outreach-YYYY-MM-DD.csv | All columns — send-ready spreadsheet |
drafts/outreach-YYYY-MM-DD.md | Human-readable review of every draft |
Key CSV columns #
| Column | Meaning |
|---|---|
application_type | email or form |
jd_keywords | Terms extracted from the job title |
action_words | Suggested verbs for this role |
tailored_bullets | Resume bullets matched to the job |
form_steps | Full ATS guide (form jobs only) |
disclaimer | Reminder to review before submitting |
Quick start #
./raven discover --q "backend engineer" --since 7
./raven draft --max 25
open drafts/outreach-*.md
Optional: add GEMINI_API_KEY to .env and pass --gemini for AI-polished email drafts.
Important: Review every draft yourself. Form rows are not sent via raven send.
Start with Resume parsing →