# career-ops | Santiago Fernández de Valderrama | Knowledge Base | Instagit

AI-powered job search system built on Claude Code. 14 skill modes, Go dashboard, PDF generation, batch processing.

GitHub Stars: 49.8k

Repository: https://github.com/santifer/career-ops

---

## Articles

### [How Career-Ops Differentiates User-Layer and System-Layer Files During Updates](/santifer/career-ops/how-does-career-ops-differentiate-user-layer-and-system-layer-files-during-updates)

Career-ops employs a dual-layer protection system to differentiate user and system files during updates. Learn how it safeguards your personal data while updating system files.

- Tags: how-to-guide
- Published: 2026-06-10

### [How Career-Ops Implements a CV Source of Truth Using cv.md and article-digest.md for Proof Points](/santifer/career-ops/how-does-the-cv-source-of-truth-use-cv-md-and-article-digest-md-for-proof-points)

Learn how Career-Ops implements a CV source of truth using cv.md and article-digest.md for dynamic proof points at runtime. Discover a robust approach to managing your professional experience.

- Tags: how-to-guide
- Published: 2026-06-10

### [How Canonical Application States in `templates/states.yml` Ensure Consistent Status Tracking](/santifer/career-ops/how-do-canonical-application-states-in-templates-states-yml-ensure-consistent-status-tracking)

Discover how canonical application states in templates/states.yml provide a single source of truth for consistent status tracking at merge time. Learn more.

- Tags: internals
- Published: 2026-06-10

### [How analyze-patterns.mjs Identifies Trends in Rejection Reasons and Application Success](/santifer/career-ops/how-does-analyze-patterns-mjs-identify-trends-in-rejection-reasons-and-application-success)

Discover how analyze-patterns.mjs identifies trends in rejection reasons and application success by parsing data, normalizing statuses, and computing aggregates to highlight frequent rejections and offer correlations.

- Tags: how-to-guide
- Published: 2026-06-10

### [How followup-cadence.mjs Calculates Optimal Timing for Application Follow-ups](/santifer/career-ops/how-does-followup-cadence-mjs-calculate-optimal-timing-for-application-follow-ups)

Discover how followup-cadence.mjs calculates optimal timing for application follow-ups using configurable business rules and pure functions to determine deterministic dates and urgency levels.

- Tags: how-to-guide
- Published: 2026-06-10

### [How Block E Determines Which CV Sections to Modify for Each Job Posting](/santifer/career-ops/how-does-block-e-determine-which-cv-sections-to-modify-for-each-job-posting)

Discover how Block E selects the top five CV sections for each job posting using archetype detection, CV-to-JD mapping, and prioritization to close critical gaps.

- Tags: deep-dive
- Published: 2026-06-10

### [How to Configure Custom Archetypes in modes/_profile.md for Career-Ops](/santifer/career-ops/how-to-configure-custom-archetypes-in-modes-profile-md-for-career-ops)

Learn to configure custom archetypes in modes/_profile.md for Career Ops. Define job relevance and frame your resume using markdown tables for scoring and PDF generation.

- Tags: how-to-guide
- Published: 2026-06-10

### [What the doctor.mjs Onboarding Check Verifies in Career-Ops Setup](/santifer/career-ops/what-does-the-doctor-mjs-onboarding-check-verify-for-career-ops-setup)

Discover what the doctor.mjs onboarding check verifies for your career-ops setup. Ensure Node.js, Playwright, dependencies, user files, fonts, and directories are ready for pipeline execution.

- Tags: how-to-guide
- Published: 2026-06-10

### [How Career-Ops update-system.mjs Checks Versions and Rolls Back Updates](/santifer/career-ops/how-does-the-update-system-mjs-handle-version-checking-and-rollback-of-career-ops-updates)

Discover how Career-Ops update-system.mjs checks versions using curl and safeguards your data by rolling back updates to backup branches without touching user files.

- Tags: internals
- Published: 2026-06-10

### [How to Build a Go Bubble Tea Dashboard TUI for Filtering and Visualizing Application Pipelines](/santifer/career-ops/how-is-the-dashboard-tui-built-with-go-and-bubble-tea-used-to-filter-and-visualize-the-application-pipeline)

Learn to build a Go Bubble Tea dashboard TUI. Filter and visualize application pipelines with real-time sorting and search. Discover interactive table features and aggregate metrics for your career ops.

- Tags: how-to-guide
- Published: 2026-06-10

### [How Pipeline Integrity Verification Detects Duplicates and Normalizes Application Statuses in Career-Ops](/santifer/career-ops/how-does-the-pipeline-integrity-verification-identify-duplicates-and-normalize-application-statuses)

Learn how pipeline integrity verification in Career-Ops detects duplicate applications with fuzzy matching and normalizes statuses by consolidating entries for optimal tracking.

- Tags: how-to-guide
- Published: 2026-06-10

### [Career-Ops Language Modes: Supported Languages for Job Applications](/santifer/career-ops/what-languages-does-the-career-ops-language-mode-system-support-for-job-applications)

Explore supported languages for job applications in Career-Ops. Discover English, German, French, Japanese, and Turkish modes for enhanced international applications.

- Tags: api-reference
- Published: 2026-06-10

### [How the STAR+R Story Bank Accumulates and Reuses Interview Preparation Stories](/santifer/career-ops/how-does-the-star-r-story-bank-accumulate-and-reuse-interview-preparation-stories)

Learn how the STAR+R story bank accumulates and reuses interview preparation stories. This system streamlines your interview prep by organizing behavioral anecdotes for easy access and application.

- Tags: deep-dive
- Published: 2026-06-10

### [How the Job Posting Legitimacy Check (Block G) Identifies Expired or Fake Listings in Career-Ops](/santifer/career-ops/how-does-the-job-posting-legitimacy-check-block-g-identify-expired-or-fake-listings)

Discover how the job posting legitimacy check in Career-Ops (Block G) uses five signals to identify expired or fake listings, classifying them as High Confidence, Proceed with Caution, or Suspicious.

- Tags: how-to-guide
- Published: 2026-06-10

### [How the PDF Generation Pipeline Creates ATS-Optimized CVs Using Playwright and HTML Templates](/santifer/career-ops/how-does-the-pdf-generation-pipeline-create-ats-optimized-cvs-using-playwright-and-html-templates)

Learn how the PDF generation pipeline creates ATS optimized CVs with Playwright and HTML templates. Normalize Unicode, render with headless Chromium, and export for parser compatibility.

- Tags: how-to-guide
- Published: 2026-06-10

### [How santifer/career-ops Classifies Jobs into LLMOps, Agentic, PM, SA, FDE, and Transformation Archetypes](/santifer/career-ops/how-does-santifer-career-ops-classify-jobs-into-llmops-agentic-pm-sa-fde-transformation-archetypes)

santifer/career-ops classifies jobs into LLMOps, Agentic, PM, SA, FDE, and Transformation archetypes using a constrained prompt-based system. Discover how this automated process categorizes job descriptions.

- Tags: deep-dive
- Published: 2026-06-10

### [What Is the Difference Between _profile.md and _shared.md Customization in Career-Ops?](/santifer/career-ops/profile.md-vs-_shared.md-customization)

Understand the difference between _profile.md and _shared.md customization in Career-Ops. Learn how _shared.md handles engine logic and _profile.md stores user data for seamless upgrades.

- Tags: how-to-guide
- Published: 2026-06-09

### [How to Normalize Canonical Statuses Across Tracker Entries in Career-Ops](/santifer/career-ops/canonical-statuses-normalization-tracker-entries)

Learn how the normalize statuses script in santifer/career-ops ensures data integrity by standardizing tracker entry statuses to eight defined states. Maintain consistent career operations tracking.

- Tags: how-to-guide
- Published: 2026-06-09

### [How to Configure Custom Search Queries in `portals.yml` for the Career-Ops Scanner](/santifer/career-ops/configure-custom-search-queries-portals.yml)

Learn to configure custom search queries in portals.yml for the Career-Ops scanner. Edit search_queries in YAML and re-run scan.mjs to customize your workflow.

- Tags: how-to-guide
- Published: 2026-06-09

### [How scan.mjs Deduplicates Job Offers Against scan-history.tsv in Career-Ops](/santifer/career-ops/scan.mjs-deduplication-scan-history.tsv)

Learn how scan.mjs efficiently deduplicates job offers using scan-history.tsv. Discover the Set-based approach to prevent duplicate postings in career-ops.

- Tags: how-to-guide
- Published: 2026-06-09

### [How the STAR+R Story Bank Accumulates Across Evaluations in Career-Ops](/santifer/career-ops/star+r-story-bank-accumulation)

Discover how the STAR+R story bank accumulates new interview stories across evaluations. Learn how Oferta mode automatically appends and de-duplicates entries to build a reusable master set, enhancing your career-ops preparation.

- Tags: deep-dive
- Published: 2026-06-09

### [How to Override Default Scoring Weights per User in Career-Ops: A Step-by-Step Guide](/santifer/career-ops/override-default-scoring-weights-per-user)

Override default Career-Ops scoring weights per user by creating a custom _profile.md file. Learn how to shadow system defaults and tailor scoring for individual users with this guide.

- Tags: how-to-guide
- Published: 2026-06-09

### [How the merge-tracker Pipeline Handles TSV Entries in career-ops](/santifer/career-ops/pipeline-merge-tracker-tsv-handling)

Discover how the merge-tracker pipeline processes TSV entries in career-ops. Learn about validation, column swapping, link normalization, and deduplication for efficient data management.

- Tags: internals
- Published: 2026-06-09

### [How Playwright Liveness Verification Detects Expired Job Postings in Career-Ops](/santifer/career-ops/playwright-liveness-verification-expired-postings)

Learn how Playwright liveness verification in Career Ops identifies expired job postings. Discover the two-stage pipeline for accurate status detection.

- Tags: how-to-guide
- Published: 2026-06-09

### [Career-Ops User Data Layer and System Layer Separation Explained](/santifer/career-ops/user-data-layer-vs-system-layer-separation)

Understand Career-Ops user data layer and system layer separation. Keep personal files safe from updates and ensure your core scripts auto-update.

- Tags: architecture
- Published: 2026-06-09

### [How Career-Ops A-F Evaluation Scoring Works: The 1‑to‑5 Match Average Explained](/santifer/career-ops/how-career-ops-evaluation-scoring-works)

Understand how Career-Ops A-F evaluation scoring works by calculating the 1-to-5 match average per requirement. Get clear insights into your evaluation reports.

- Tags: deep-dive
- Published: 2026-06-09

### [Career-Ops System Defaults vs. User Customization: _shared.md and _profile.md Explained](/santifer/career-ops/shared-md-profile-md-defaults-vs-customization)

Understand the difference between Career Ops system defaults in _shared.md and user customizations in _profile.md. Learn how these files control scoring and tool behavior.

- Tags: deep-dive
- Published: 2026-06-07

### [How verify-pipeline.mjs Performs Health Checks on the Career-Ops Job Tracker](/santifer/career-ops/verify-pipeline-mjs-job-tracker-health-checks)

Learn how verify-pipeline.mjs performs health checks on the Career-Ops job tracker. This script validates job data integrity, ensuring accurate reporting and application status.

- Tags: how-to-guide
- Published: 2026-06-07

### [Understanding the Plugin Architecture of local-parser.mjs for Custom Job Site Scraping](/santifer/career-ops/local-parser-mjs-plugin-architecture-custom-scraping)

Explore the plugin architecture of local-parser.mjs for custom job site scraping. Execute external scripts locally for efficient, standardized job listing data extraction.

- Tags: internals
- Published: 2026-06-07

### [How analyze-patterns.mjs Identifies Rejection Patterns from Historical Application Data](/santifer/career-ops/analyze-patterns-mjs-identify-rejection-patterns)

Discover how analyze-patterns.mjs identifies rejection patterns by extracting, normalizing, and aggregating blocker data from historical application reports.

- Tags: how-to-guide
- Published: 2026-06-07

### [How Greenhouse, Lever, and Ashby Provider Scripts Implement the fetch() Interface in Career Ops](/santifer/career-ops/provider-scripts-fetch-interface-implementation)

Explore how santifer/career-ops utilizes provider scripts greenhouse lever and ashby.mjs to implement the fetch() interface for ATS API integration and data normalization.

- Tags: deep-dive
- Published: 2026-06-07

### [How gemini-eval.mjs Enables Standalone API Evaluation Without CLI Installation](/santifer/career-ops/gemini-eval-mjs-standalone-api-evaluation)

Understand how gemini-eval.mjs allows standalone API evaluation. No CLI installation needed for this self-contained Node.js module, simplifying your job-offer analysis.

- Tags: internals
- Published: 2026-06-07

### [Understanding the Canonical Status Enum in Career-Ops: templates/states.yml and Normalization](/santifer/career-ops/canonical-status-enum-templates-states-yml-normalization)

Explore the canonical status enum in Career-Ops defined in templates/states.yml. Learn how the normalize-statuses.mjs script enforces these statuses by resolving aliases and migrating non-standard values.

- Tags: internals
- Published: 2026-06-07

### [How User-Specific Archetypes and Targeting Narratives Are Stored in config/profile.yml](/santifer/career-ops/config-profile-yml-user-archetype-storage)

Discover how user archetypes and targeting narratives are stored in config/profile.yml for personalized career tracks. Learn how they map job descriptions to your career path.

- Tags: internals
- Published: 2026-06-07

### [How the liveness-browser.mjs Classifier Distinguishes Expired from Active Job Postings](/santifer/career-ops/liveness-browser-mjs-classifier-logic)

Discover how the liveness-browser.mjs classifier distinguishes expired from active job postings using Playwright, HTTP status codes, regex, and more for accurate results.

- Tags: deep-dive
- Published: 2026-06-07

### [How Career-Ops Language Modes (de/, fr/, ja/, tr/) Provide Locale-Specific Vocabulary for Evaluations](/santifer/career-ops/language-modes-locale-specific-evaluation-vocabulary)

Learn how Career-Ops language modes (de/ fr/ ja/ tr/) deliver locale-specific vocabulary for evaluations using parallel directories and localized templates for an enhanced experience.

- Tags: deep-dive
- Published: 2026-06-07

### [How update-system.mjs Handles Version Checking, Applying Updates, Dismissing, and Rollbacks in Career-Ops](/santifer/career-ops/update-system-mjs-version-handling-rollback)

Discover how update-system.mjs in Career-Ops manages version checks, updates, dismissals, and rollbacks. Learn about its safe, atomic system-layer updates with lock files and backup branches.

- Tags: internals
- Published: 2026-06-07

### [ATS PDF Generation Pipeline: From HTML Template to Space Grotesk/DM Sans Output](/santifer/career-ops/ats-pdf-generation-pipeline-html-to-fonts)

Discover the ATS PDF generation pipeline in the career-ops repo. Learn how Node.js transforms HTML templates into ATS compatible PDFs with embedded Space Grotesk and DM Sans fonts using Playwright.

- Tags: how-to-guide
- Published: 2026-06-07

### [How the Story Bank Accumulates and Facilitates Reuse of STAR+R Stories](/santifer/career-ops/story-bank-md-star-r-story-accumulation-reuse)

Discover how the Story Bank automatically accumulates and facilitates reuse of STAR+R stories from job applications, making them easily accessible for interviews.

- Tags: internals
- Published: 2026-06-07

### [How the Location Filter Algorithm Handles always_allow, block, and allow Tiers in Career-Ops](/santifer/career-ops/location-filter-algorithm-tiers)

Understand how the Career-Ops location filter algorithm prioritizes always_allow block and allow tiers to precisely manage job location access.

- Tags: deep-dive
- Published: 2026-06-07

### [Understanding Career-Ops modes/*.md Files: How Skill Modes Are Defined and Triggered](/santifer/career-ops/modes-md-files-skill-modes-definition-trigger)

Learn how modes/*.md files in Career-Ops define and trigger LLM skill modes via CLI commands. Understand this executable Markdown specification for AI behaviors.

- Tags: internals
- Published: 2026-06-07

### [How Pipeline Data Is Rendered in the Career-Ops Go Dashboard TUI Using Bubble Tea and the Catppuccin Theme](/santifer/career-ops/go-dashboard-tui-render-pipeline-data)

Discover how Career-Ops renders pipeline data in a Go dashboard TUI. Learn about Bubble Tea, Lip-Gloss, and Catppuccin theme integration for a vibrant terminal experience.

- Tags: internals
- Published: 2026-06-07

### [How merge-tracker.mjs Handles Column Reordering When Merging Tracker Entries](/santifer/career-ops/merge-tracker-mjs-column-reordering)

Learn how merge-tracker.mjs handles column reordering by detecting swapped columns with regex and normalizing entries for applications.md. Understand the merge process.

- Tags: internals
- Published: 2026-06-07

### [Coordination Mechanism for Batch Processing Workers Using TSV Tracker-Additions](/santifer/career-ops/batch-processing-workers-coordination-tsv-tracker-additions)

Discover the file-based coordination mechanism for batch processing workers using TSV tracker-additions. Learn how headless workers and merge scripts manage duplicates efficiently.

- Tags: internals
- Published: 2026-06-07

### [How Playwright-Based Liveness Verification Classifies Job Postings as Expired or Active](/santifer/career-ops/playwright-liveness-verification-expired-active-jobs)

Learn how santifer/career-ops uses Playwright to verify job posting liveness. Discover its rule-based pipeline that classifies postings as active, expired, or uncertain based on status, redirects, and content.

- Tags: how-to-guide
- Published: 2026-06-07

### [How scan.mjs Handles Deduplication Across pipeline.md, applications.md, and scan-history.tsv](/santifer/career-ops/scan-mjs-deduplication-across-files)

Learn how scan.mjs deduplicates job offers by using in-memory sets to track URLs and company-role pairs from pipeline.md, applications.md, and scan-history.tsv, ensuring unique listings before writing.

- Tags: how-to-guide
- Published: 2026-06-07

### [How the Provider Resolution Algorithm Works in Career-Ops: Understanding the Local-Parser Fallback](/santifer/career-ops/provider-resolution-algorithm-local-parser-fallback)

Understand the Career-Ops provider resolution algorithm. Learn how the local-parser fallback handles unrecognized job boards with custom scripts for flexible career site integration.

- Tags: internals
- Published: 2026-06-07

### [How the Six Defined Archetypes (FDE, SA, PM, LLMOps, Agentic, Transformation) Influence the Career-Ops Job Evaluation Process](/santifer/career-ops/how-archetypes-influence-evaluation)

Discover how the six Career Ops archetypes (FDE, SA, PM, LLMOps, Agentic, Transformation) structure job evaluation by prioritizing CVs, applying templates, and calculating alignment scores.

- Tags: deep-dive
- Published: 2026-06-07

### [How the Weighting Mechanism for the 10 Dimensions in the A-F Evaluation Scoring System Calculates Job Fit](/santifer/career-ops/a-f-evaluation-scoring-system-dimension-weighting)

Understand the weighting mechanism for the 10 dimensions in the A-F evaluation scoring system. Learn how North Star alignment impacts your 0-5 job-fit score for career opportunities.

- Tags: deep-dive
- Published: 2026-06-07

### [How the Career-Ops Portal Scanner Detects and Loads ATS Providers (Greenhouse, Lever, Ashby)](/santifer/career-ops/how-does-portal-scanner-detect-load-ats-providers)

Learn how the career-ops scanner detects and loads ATS providers like Greenhouse, Lever, and Ashby. Discover dynamic module loading and URL pattern matching for seamless integration.

- Tags: internals
- Published: 2026-06-07

