Files
2026-07-06 11:05:50 -04:00

7.6 KiB

System Context -- career-ops

Sources of Truth

File Path When
cv.md cv.md (project root) ALWAYS
article-digest.md article-digest.md (if exists) ALWAYS (detailed proof points)
profile.yml config/profile.yml ALWAYS (candidate identity and targets)
_profile.md modes/_profile.md ALWAYS (user archetypes, narrative, negotiation)

RULE: NEVER hardcode metrics from proof points. Read them from cv.md + article-digest.md at evaluation time. RULE: For article/project metrics, article-digest.md takes precedence over cv.md. RULE: Read _profile.md AFTER this file. User customizations in _profile.md override defaults here.


Scoring System

The evaluation uses 6 blocks (A-F) with a global score of 1-5:

Dimension What it measures
Match con CV Skills, experience, proof points alignment
North Star alignment How well the role fits the user's target archetypes (from _profile.md)
Comp Salary vs market (5=top quartile, 1=well below)
Cultural signals Company culture, growth, stability, remote policy
Red flags Blockers, warnings (negative adjustments)
Global Weighted average of above

Score interpretation:

  • 4.5+ → Strong match, recommend applying immediately
  • 4.0-4.4 → Good match, worth applying
  • 3.5-3.9 → Decent but not ideal, apply only if specific reason
  • Below 3.5 → Recommend against applying (see Ethical Use in CLAUDE.md)

Posting Legitimacy (Block G)

Block G assesses whether a posting is likely a real, active opening. It does NOT affect the 1-5 global score -- it is a separate qualitative assessment.

Three tiers:

  • High Confidence -- Real, active opening (most signals positive)
  • Proceed with Caution -- Mixed signals, worth noting (some concerns)
  • Suspicious -- Multiple ghost indicators, user should investigate first

Key signals (weighted by reliability):

Signal Source Reliability Notes
Posting age Page snapshot High Under 30d=good, 30-60d=mixed, 60d+=concerning (adjusted for role type)
Apply button active Page snapshot High Direct observable fact
Tech specificity in JD JD text Medium Generic JDs correlate with ghost postings but also with poor writing
Requirements realism JD text Medium Contradictions are a strong signal, vagueness is weaker
Recent layoff news WebSearch Medium Must consider department, timing, and company size
Reposting pattern scan-history.tsv Medium Same role reposted 2+ times in 90 days is concerning
Salary transparency JD text Low Jurisdiction-dependent, many legitimate reasons to omit
Role-company fit Qualitative Low Subjective, use only as supporting signal

Ethical framing (MANDATORY):

  • This helps users prioritize time on real opportunities
  • NEVER present findings as accusations of dishonesty
  • Present signals and let the user decide
  • Always note legitimate explanations for concerning signals

Archetype Detection

Classify every offer into one of these types (or hybrid of 2):

Archetype Key signals in JD
AI Platform / LLMOps "observability", "evals", "pipelines", "monitoring", "reliability"
Agentic / Automation "agent", "HITL", "orchestration", "workflow", "multi-agent"
Technical AI PM "PRD", "roadmap", "discovery", "stakeholder", "product manager"
AI Solutions Architect "architecture", "enterprise", "integration", "design", "systems"
AI Forward Deployed "client-facing", "deploy", "prototype", "fast delivery", "field"
AI Transformation "change management", "adoption", "enablement", "transformation"

After detecting archetype, read modes/_profile.md for the user's specific framing and proof points for that archetype.

Global Rules

NEVER

  1. Invent experience or metrics
  2. Modify cv.md or portfolio files
  3. Submit applications on behalf of the candidate
  4. Share phone number in generated messages
  5. Recommend comp below market rate
  6. Generate a PDF without reading the JD first
  7. Use corporate-speak
  8. Ignore the tracker (every evaluated offer gets registered)

ALWAYS

  1. Cover letter: If the form allows it, ALWAYS include one. Same visual design as CV. JD quotes mapped to proof points. 1 page max.
  2. Read cv.md, _profile.md, and article-digest.md (if exists) before evaluating 1b. First evaluation of each session: Run node cv-sync-check.mjs. If warnings, notify user.
  3. Detect the role archetype and adapt framing per _profile.md
  4. Cite exact lines from CV when matching
  5. Use WebSearch for comp and company data
  6. Register in tracker after evaluating
  7. Generate content in the language of the JD (EN default)
  8. Be direct and actionable -- no fluff
  9. Native tech English for generated text. Short sentences, action verbs, no passive voice. 8b. Case study URLs in PDF Professional Summary (recruiter may only read this).
  10. Tracker additions as TSV -- NEVER edit applications.md directly. Write TSV in batch/tracker-additions/.
  11. Include **URL:** in every report header.

Tools

Tool Use
WebSearch Comp research, trends, company culture, LinkedIn contacts, fallback for JDs
WebFetch Fallback for extracting JDs from static pages
Playwright Verify offers (browser_navigate + browser_snapshot). NEVER 2+ agents with Playwright in parallel.
Read cv.md, _profile.md, article-digest.md, cv-template.html
Write Temporary HTML for PDF, applications.md, reports .md
Edit Update tracker
Canva MCP Optional visual CV generation. Duplicate base design, edit text, export PDF. Requires canva_resume_design_id in profile.yml.
Bash node generate-pdf.mjs

Time-to-offer priority

  • Working demo + metrics > perfection
  • Apply sooner > learn more
  • 80/20 approach, timebox everything

Professional Writing & ATS Compatibility

These rules apply to ALL generated text that ends up in candidate-facing documents: PDF summaries, bullets, cover letters, form answers, LinkedIn messages. They do NOT apply to internal evaluation reports.

Avoid cliché phrases

  • "passionate about" / "results-oriented" / "proven track record"
  • "leveraged" (use "used" or name the tool)
  • "spearheaded" (use "led" or "ran")
  • "facilitated" (use "ran" or "set up")
  • "synergies" / "robust" / "seamless" / "cutting-edge" / "innovative"
  • "in today's fast-paced world"
  • "demonstrated ability to" / "best practices" (name the practice)

Unicode normalization for ATS

generate-pdf.mjs automatically normalizes em-dashes, smart quotes, and zero-width characters to ASCII equivalents for maximum ATS compatibility. But avoid generating them in the first place.

Vary sentence structure

  • Don't start every bullet with the same verb
  • Mix sentence lengths (short. Then longer with context. Short again.)
  • Don't always use "X, Y, and Z" — sometimes two items, sometimes four

Prefer specifics over abstractions

  • "Cut p95 latency from 2.1s to 380ms" beats "improved performance"
  • "Postgres + pgvector for retrieval over 12k docs" beats "designed scalable RAG architecture"
  • Name tools, projects, and customers when allowed