How arossia94/career-ops works
1. Overall shape
Career-Ops is a local-first job search operating system, not a hosted app. The machine running the repo is the control plane: it reads your CV/profile, talks to an AI model or CLI, automates browser work against job portals, and writes results back to local files.
2. Primary user interface: slash-command modes
The core behavior is encoded in modes/*.md. These are the repo’s “commands” for tasks like evaluation, PDF generation, scanning, batch processing, tracker management, deep research, interview prep, and follow-up. They are designed to be reused across Claude Code, Gemini CLI, and other supported coding CLIs via the shared agent instructions in AGENTS.md, CLAUDE.md, and the provider-specific skill folders.
3. Main orchestration flow
The standard pipeline is: input a job URL or description → classify the role/archetype → evaluate fit against cv.md and profile data → generate a report/PDF → update the tracker. This is the central data flow the architecture is built around, and most tools in the repo either feed this pipeline or consume its outputs.
4. Evaluation and reasoning layer
The evaluation subsystem produces structured job analyses: role summary, CV match, level strategy, comp research, personalization, and interview prep. It appears to rely on prompt templates plus local source files such as the CV, profile config, proof points, and shared mode text. The important boundary here is that the AI is recommended/assistive; the repo does not auto-submit applications.
5. Portal scanning and browser automation
The scanning subsystem uses Playwright and portal-specific configuration to discover roles from company pages and supported job boards such as Greenhouse, Ashby, Lever, Wellfound, Workable, and RemoteFront. Portal definitions live in templates/portals.example.yml and likely become a user-local portals.yml. This is the repo’s web-automation boundary: it reaches out to external sites, but keeps the results local.
6. Artifact generation
Outputs are generated into separate local folders: reports/ for markdown evaluations, output/ for PDFs, and data/ for tracking state. PDF generation is template-driven via templates/cv-template.html and templates/cv-template.tex, with embedded fonts in fonts/. The architecture treats report generation and PDF rendering as distinct steps, so the same evaluation can feed multiple output formats.
7. Single source of truth for tracking
The tracking layer stores application/candidate pipeline state locally using markdown/YAML/TSV-style data and canonical status definitions in templates/states.yml. Utility scripts such as merge-tracker.mjs, dedup-tracker.mjs, normalize-statuses.mjs, and verify-pipeline.mjs indicate that data integrity is a first-class concern: deduplication, normalization, merge safety, and health checks are part of the system design.
8. Batch and parallel processing
batch/ is a separate execution path for high-throughput evaluation. It uses a self-contained worker prompt and a shell runner, implying fan-out to multiple AI workers/sub-agents for parallel processing of many listings. This is a throughput-oriented subsystem distinct from the interactive single-offer flow.
9. Terminal dashboard subsystem
The dashboard/ directory is a standalone Go application built with Bubble Tea and Lipgloss. It reads the same local job/pipeline data and presents it as a TUI for browsing, filtering, sorting, previewing, and changing status. Architecturally, it is a read-heavy UI over the local tracker, not a separate backend.
10. Customization and user-owned inputs
The repo is intentionally user-customized through local files like cv.md, config/profile.yml, portals.yml, and optional reference material in examples/, jds/, writing-samples/, and interview-prep/. That means the system’s behavior is heavily shaped by user-owned content rather than hardcoded application data.
11. Localization and role-specific modes
There are localized mode sets under modes/de/ and several specialized command families such as apply, contact outreach, deep research, training, project review, and resume/PDF generation. This suggests the architecture is modular by job-search task, with language variants and role variants layered on the same shared workflow.
12. Automation, validation, and maintenance scripts
The root-level .mjs scripts and helpers like doctor.mjs, check-liveness.mjs, cv-sync-check.mjs, scan.mjs, and generate-pdf.mjs form the maintenance and automation layer. These keep the local system healthy, ensure the CV/tracker stay aligned, and support repeatable execution outside the interactive CLI experience.
13. External dependencies and boundaries
The main external boundaries are: AI providers/CLIs, browser automation against job portals, and job-board/company sites. The repo also depends on local tooling ecosystems: Node.js for orchestration/scripts, Go for the dashboard, Playwright for web interaction and PDF-related rendering, and GitHub Actions for CI/release checks.
14. CI and repository governance
The GitHub workflows, issue templates, release automation, dependency review, SBOM, and security tooling suggest the repo is maintained like a productized open-source tool. That infrastructure supports code quality and releases, but the runtime architecture remains local and user-operated rather than server-hosted.
Main entry points: gemini-eval.mjs Eval engine · states.yml Tracker core · _shared.md Shared modes · apply.md Apply flow
Components 26
CLI Modes
Shared command-mode layer used by supported AI CLIs and local prompts
- Agent skill · Shared instruction package for external AI CLIs
.agents/skills/career-ops/SKILL.md - Claude skill · Provider-specific skill entrypoint
.claude/skills/career-ops/SKILL.md - Qwen skill · Provider-specific skill entrypoint
.qwen/skills/career-ops/SKILL.md - Shared modes · Common instructions reused across task modes
modes/_shared.md - Apply flow · Job fit evaluation and application workflow
modes/apply.md - Pipeline flow · Main job intake to tracker update workflow
modes/pipeline.md - Scan flow · Portal discovery and job scanning workflow
modes/scan.md - Batch flow · High-throughput multi-listing processing workflow
modes/batch.md
Core Pipeline
Main local-first job search workflow from job intake to evaluation and tracking
- Eval engine · Structured job analysis and fit assessment
gemini-eval.mjs - Role patterns · Archetype and pattern extraction for jobs
modes/patterns.md - Tracker core · Canonical local pipeline and application state
templates/states.yml - Tracker tools · Merge, dedupe, normalize, and verify tracker data
merge-tracker.mjs - Scanner · Playwright-driven discovery of roles on portals
scan.mjs - Portal config · Supported portal and company-page configurations
templates/portals.example.yml - Batch runner · Shell-based fan-out execution for batch processing
batch/batch-runner.sh
User Interfaces
Interactive interfaces over local job and pipeline data
- Dashboard · Go TUI for browsing and updating pipeline state
dashboard/main.go - Dashboard data · Data access layer for tracker-backed views
dashboard/internal/data/career.go
Artifacts & Templates
Local source files and templates used to generate reports and PDFs
- CV source · Primary resume and profile content used for evaluation
examples/cv-example.md - Profile cfg · User-owned profile configuration and defaults
config/profile.example.yml - Report template · Markdown/report shaping for evaluations
examples/sample-report.md - PDF templates · HTML and LaTeX templates for PDF generation
templates/cv-template.html - PDF writer · Generates local PDF artifacts from report inputs
generate-pdf.mjs
Automation & Maintenance
Validation, synchronization, and repo health scripts
- Health checks · Repository health and liveness validation scripts
doctor.mjs - Sync checks · CV and pipeline alignment verification scripts
cv-sync-check.mjs
Repo Governance
Docs, guides, and release governance around the tool
- Docs · Architecture, setup, customization, and script documentation
docs/ARCHITECTURE.md - GitHub Actions · CI, dependency review, SBOM, and release workflows
.github/workflows/test.yml
Connections 28
- Agent skill → Shared modes: shares · Shared instructions define common command behavior
- Claude skill → Shared modes: shares · Claude-specific skill reuses shared mode logic
- Qwen skill → Shared modes: shares · Qwen-specific skill reuses shared mode logic
- Apply flow → Eval engine: uses · Application flow depends on structured job analysis
- Apply flow → CV source: reads · Evaluates fit against CV and profile content
- Apply flow → Tracker core: updates · Writes outcomes back to local tracking state
- Pipeline flow → Role patterns: classifies · Pipeline flow classifies job archetype before analysis
- Pipeline flow → Eval engine: drives · Main orchestration hands jobs to the evaluation engine
- Pipeline flow → Tracker core: persists · Canonical workflow ends by updating tracker state
- Scan flow → Scanner: orchestrates · Scan mode triggers browser-based discovery
- Scanner → Portal config: configures · Portal definitions control supported site scraping
- Scanner → Tracker core: feeds · Discovered listings are stored in local tracking data
- Batch flow → Batch runner: executes · Batch mode delegates fan-out processing to the runner
- Batch runner → Eval engine: fans out · Parallel workers invoke the evaluation pipeline
- Eval engine → CV source: reads · Structured analysis uses resume and profile inputs
- Eval engine → Profile cfg: reads · Analysis incorporates user-specific configuration
- Eval engine → Report template: formats · Evaluation output is shaped into report text
- PDF writer → PDF templates: renders · PDF generation uses HTML and LaTeX templates
- PDF writer → Report template: consumes · Reports feed PDF generation
- Tracker tools → Tracker core: maintains · Merge, dedupe, and normalize operations protect tracker integrity
- Dashboard → Dashboard data: reads · TUI renders views through the data layer
- Dashboard data → Tracker core: queries · Dashboard is a read-heavy interface over local state
- Health checks → Sync checks: invokes · Health scripts include pipeline and consistency checks
- Sync checks → Tracker core: validates · Validation ensures tracker and CV data remain aligned
- Docs → Shared modes: documents · Repository docs explain the command and mode system
- GitHub Actions → Health checks: runs · CI exercises health and validation scripts
- GitHub Actions → Sync checks: runs · CI verifies data integrity and pipeline consistency
- GitHub Actions → Tracker tools: guards · Automation helps catch tracker regressions