Resume Job Targeting
Status: strategy documented for future implementation. Not currently implemented.
Goal
Support shareable, print-friendly, job-specific resume links (for a specific role at a specific company) without forking or duplicating canonical resume data.
Examples:
/resume/jobs/staff-platform-acme-2026//resume/jobs/principal-backend-contoso-2026/
Core Decision
- Keep canonical resume data as the source of truth:
_data/resume/timeline.yml_data/resume/summary.yml_data/resume/positions/*.yml
- Define job targets as overlays that selectively override canonical fields at render time.
- Never clone full position records into job-specific files.
Proposed Data Model
Store one file per target:
_data/resume/jobs/<job_slug>.yml
Suggested shape (field-level replace/override only):
id: staff-platform-acme-2026
title: Staff Platform Engineer - Acme
company: Acme
role: Staff Platform Engineer
created_at: 2026-02-17
sitemap: false
robots: noindex,follow
summary:
text: >-
Tailored summary for this role.
timeline:
include:
- onemain
- sk-holdings
- activecampaign
exclude:
- coderwall
positions:
onemain:
description: >-
Override role summary for this target.
achievements:
highlights:
- Tailored highlight one.
- Tailored highlight two.
skills:
- OpenTelemetry
- Incident Leadership
Route and Rendering Strategy
- Generate a static page per job target:
/resume/jobs/<job_slug>/
- Render with the existing resume layout and include stack.
- Build a merged view model:
- start with canonical data
- apply target overlay
- render result
- Printing should use the same page (
window.print) as other resume pages.
Canonical and Indexing Policy
Default policy for company/job-targeted resumes:
robots: noindex,followsitemap: false- Canonical can be self-referential or root; choose one policy and enforce it in validators.
Recommendation:
- Use self-canonical for each job target page.
- Keep noindex + sitemap false to avoid search indexing and stale public discovery.
Guardrails
- Root route semantics stay unchanged:
/remains the canonical default resume./home/remains the homepage surface.
- Job overlays can only override approved display fields.
- Unknown position IDs in overlays must fail validation.
- Empty/invalid target outputs must fail generation.
- Keep active targets small and intentional to avoid maintenance sprawl.
Operational Workflow
- Create
_data/resume/jobs/<job_slug>.yml. - Run generation for job target pages.
- Run
./bin/pipeline validate. - Run
./bin/pipeline smokefor resume and target routes. - Share
/resume/jobs/<job_slug>/for that application. - Retire or archive old target files when no longer needed.
Known Tradeoffs
- More targeted pages increase editorial overhead.
- Highlight-level edits are easiest when replacing full
highlightsarrays. - This is intentionally optimized for accuracy and maintainability, not unlimited variants.