init
Release Please / release-please (push) Failing after 4m2s
Web CI / web typecheck + build (push) Successful in 3m39s
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 1h1m49s
CodeQL Analysis / Analyze (go) (push) Failing after 1h1m49s

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
# Examples
Reference files that demonstrate career-ops data formats and conventions. None of these are used at runtime -- they exist so you can see the expected structure before creating your own files.
## Files
| File | Demonstrates |
|------|-------------|
| `cv-example.md` | How to structure `cv.md` -- sections, metrics formatting, and proof-point style for a fictional AI engineer (Alex Chen) |
| `resume-example.md` | Resume variant of `cv-example.md` -- same content, branded as "Resume" for US/industry markets. Use this as a structural guide when writing a resume (1–2 page targeted format) vs a CV (longer academic format) |
| `article-digest-example.md` | How to write `article-digest.md` -- compact proof points with hero metrics, architecture summaries, and key decisions per project |
| `sample-report.md` | The A-F evaluation report format produced by the evaluation pipeline, with all six blocks (Role Summary through Interview Plan) |
| `ats-normalization-test.md` | Regression fixture for `generate-pdf.mjs` Unicode normalization -- lists every problematic codepoint and its ASCII-safe replacement |
| `dual-track-engineer-instructor/` | Complete profile config for a candidate with two primary archetypes (engineer + instructor), including `cv.md`, `profile.yml`, and a README explaining when and how to use the dual-track pattern |
## Usage
These files are read-only references. To set up your own career-ops instance:
1. Run `npm run doctor` to check prerequisites.
2. Use `cv-example.md` (or `resume-example.md` for US/industry contexts) as a structural guide when writing your `cv.md`.
3. Use `article-digest-example.md` as a template for your `article-digest.md` (optional but improves evaluation quality).
4. See the `dual-track-engineer-instructor/` folder if your career spans two distinct archetypes.
+40
View File
@@ -0,0 +1,40 @@
# Article Digest -- Proof Points
Compact proof points from portfolio projects. Read by career-ops at evaluation time.
---
## FraudShield -- Real-Time Fraud Detection
**Hero metrics:** 99.7% precision, 50ms p99 latency, $2M/year fraud prevented
**Architecture:** Kafka Streams ingestion → real-time feature computation (200+ features, sliding windows) → ensemble model (XGBoost + neural network) → decision engine with configurable thresholds → human review queue for edge cases
**Key decisions:**
- Chose streaming over batch to catch fraud in real-time (batch had 4-hour delay)
- Ensemble approach: XGBoost for speed + neural net for complex patterns
- Built custom feature store for real-time features (Redis-backed, 5ms reads)
**Proof points:**
- Reduced false positives 60% vs previous rule-based system
- Handles 10K transactions/second peak load
- 500+ GitHub stars, adopted by 3 fintech startups
- Conference talk: "Real-Time ML at Scale" (MLConf 2023)
---
## LLM Eval Toolkit -- Evaluation Framework
**Hero metrics:** 15 built-in metrics, CI/CD integration, used by 200+ developers
**Architecture:** Pluggable metric system → test suite runner → regression detection → GitHub Actions integration → Slack alerts on regressions
**Key decisions:**
- Metrics as code: each metric is a Python function with clear interface
- Deterministic testing: seeded prompts + temperature 0 for reproducible evals
- Cost tracking: each eval run logs token usage and estimated cost
**Proof points:**
- Caught 3 production regressions before deployment in first month
- Reduced eval cycle from "vibes check" to structured 15-minute CI run
- Open source, 200+ weekly active users on PyPI
+49
View File
@@ -0,0 +1,49 @@
# ATS Normalization Test Fixture
This file is a regression fixture for the text normalization pass added in `generate-pdf.mjs` (issue #1). It contains the Unicode artifacts that can cause parsing errors or display issues in ATS systems and legacy parsers. Use it to verify that the normalizer converts them to ASCII-safe equivalents.
## Problematic Unicode (normalizer must convert these)
| Name | Codepoint | Sample line | Converts to |
|------|-----------|-------------|-------------|
| Em-dash | U+2014 | Built and sold a SaaS — now shipping AI in production. | Built and sold a SaaS - now shipping AI in production. |
| En-dash | U+2013 | 2020–2024 at Acme Corp. | 2020-2024 at Acme Corp. |
| Curly double quote | U+201C / U+201D | "Led the migration" was a real bullet. | "Led the migration" was a real bullet. |
| Curly single quote | U+2018 / U+2019 | The team's velocity tripled. | The team's velocity tripled. |
| Ellipsis | U+2026 | And so on… | And so on... |
| Zero-width space | U+200B | Hello​world (there is a ZWSP between the two words) | Helloworld (removed) |
| Non-breaking space | U+00A0 | 5 years experience | 5 years experience (regular space) |
## Writing quality guidelines (writer must follow these)
The normalizer does NOT fix writing style. These are enforced by the rules in `modes/_shared.md` and should never appear in generated CV text in the first place.
- "passionate about machine learning"
- "results-oriented professional with a proven track record"
- "leveraged cutting-edge LLM technology"
- "spearheaded a strategic initiative"
- "facilitated cross-functional synergies"
- "crafted robust, scalable solutions"
- "in today's fast-paced digital world"
- "5+ years of experience in artificial intelligence"
- "demonstrated ability to drive innovative outcomes"
## How to verify the normalizer
```bash
# From the project root, after editing generate-pdf.mjs:
node --check generate-pdf.mjs
# Quick smoke test of the normalizer logic (no Playwright needed):
node -e "
import('./generate-pdf.mjs').catch(()=>{});
" 2>/dev/null || true
```
For an end-to-end test, generate a CV PDF from a known dirty HTML file and inspect the output:
```bash
node generate-pdf.mjs /tmp/dirty-cv.html /tmp/clean-cv.pdf --format=a4
# Expected log line:
# 🧹 ATS normalization: N replacements (em-dash=X, smart-double-quote=Y, ...)
```
+50
View File
@@ -0,0 +1,50 @@
# CV -- Alex Chen
**Location:** Austin, TX
**Email:** alex@example.com
**LinkedIn:** linkedin.com/in/alexchen
**Portfolio:** alexchen.dev
**GitHub:** github.com/alexchen
## Professional Summary
Full-stack AI engineer with 6 years building production ML systems. Led the ML platform at a Series B fintech (2020-2024), scaling from 2 models to 15+ in production. Built real-time fraud detection (99.7% precision, $2M/year saved), recommendation engine (18% uplift), and an internal MLOps platform serving 4 engineering teams.
## Work Experience
### TechFin Corp -- Austin, TX
**Senior ML Engineer / ML Platform Lead**
2020-2024
- Led ML platform team (3 engineers), built internal MLOps tooling: model registry, A/B testing framework, feature store
- Designed real-time fraud detection pipeline: Kafka → feature computation → model inference → decision engine. 99.7% precision at 50ms p99
- Built recommendation engine for lending products: collaborative filtering + LLM reranking. 18% conversion uplift
- Reduced model deployment time from 2 weeks to 4 hours with CI/CD pipeline (GitHub Actions + SageMaker)
- Established model monitoring: drift detection, performance dashboards (Grafana), automated retraining triggers
### DataStartup Inc -- Remote
**ML Engineer**
2018-2020
- Built NLP pipeline for document classification (BERT fine-tuning, 94% accuracy on legal docs)
- Implemented search ranking with learning-to-rank models
- Set up experiment tracking with MLflow and model versioning
## Projects
- **FraudShield** (Open Source) -- Real-time fraud detection framework. Kafka Streams + feature store + model serving. 500+ GitHub stars
- **LLM Eval Toolkit** (Open Source) -- Evaluation framework for LLM applications. Supports custom metrics, regression testing, CI integration
## Education
- MS Computer Science, UT Austin (2018)
- BS Computer Science, UC Berkeley (2016)
## Skills
- **ML/AI:** PyTorch, TensorFlow, scikit-learn, Hugging Face, LangChain
- **MLOps:** SageMaker, MLflow, Kubeflow, Airflow, Feature Store
- **Infra:** Kubernetes, Kafka, Redis, PostgreSQL, AWS
- **Languages:** Python, Go, TypeScript, SQL
@@ -0,0 +1,106 @@
# Example -- dual-track engineer + instructor
This is for the case where one candidate has a real track record on two different archetypes at once. The example here is a senior AI engineer who is also a senior technical instructor, but the same structure works for backend + SRE, ML + research, IC + manager, or engineer + product manager.
The default career-ops examples assume one north-star archetype. Hybrid careers do not fit that mould. Bootcamp instructors, university lecturers, AI/ML educators inside companies, DevRel engineers, training architects, internal-enablement leads -- these people have two real jobs on the CV and the existing single-archetype config either flattens one side or the other.
This folder shows how to:
1. Configure `archetypes:` in `profile.yml` with two `fit: primary` entries instead of one.
2. Write a `cv.md` that puts measurable wins on both sides in front of the recruiter without diluting either.
3. Set two compensation ranges. Engineering and teaching pay differently, often by 20-40%, and the evaluator needs to know which range applies to a given offer.
4. At evaluation time, decide which track to lead with for the specific JD on the desk.
---
## Files
| File | Purpose |
|------|---------|
| `cv.md` | Fictional dual-track CV (Sam Rivera). Use as structural reference for your own. |
| `profile.yml` | Profile config with two primary archetypes and two comp ranges. |
| `README.md` | This file. |
The persona is fictional (`Sam Rivera <sam@example.com>`). Do not copy values directly -- adapt them.
---
## When to use the dual-track pattern
Use it only if all of these are true:
1. You have measurable, recent (under 3 years old) wins on two different archetypes. Not "I taught a workshop once", but real numbers: hours taught, alumni placed, retention rates, NPS -- and on the engineering side, LOC shipped, systems owned, latency or cost moved.
2. You will actually take an offer from either side. If you would only really accept one and grudgingly take the other, do single-track and treat the other side as one strong bullet in the summary.
3. The two tracks are at roughly the same seniority. A junior teacher who is also a staff engineer is a single-track engineer who happens to mentor.
Use single-track instead if:
- One side is hobby-grade. "I mentor on weekends" does not count as a teaching career.
- The seniorities are mismatched.
- You are early enough in your career that you don't actually know yet which side is the main one.
- Your salary expectations on one track are non-negotiable. Pick that track and use the other as a differentiator in the cover letter.
---
## How dual-track changes the rest of career-ops
### `modes/_shared.md`
List both archetypes in the "North Star -- Target Roles" table with `fit: primary`. The skill applies equal rigor to all primary archetypes, which is what you need here.
### `cv.md`
Two ways to structure it:
- Layered (what I recommend): one Professional Summary that names both tracks in the first sentence, then experience entries that include both engineering and teaching bullets per role. Use this when the roles actually combined both. See the `cv.md` in this folder.
- Sectioned: separate "Engineering Experience" and "Teaching Experience" headings. Use this when the two tracks happened at different employers and don't need to be told as one story.
Lead the Professional Summary with the combination itself -- "senior AI engineer who runs the curriculum", or whatever the equivalent is for your stack. The combination is the thing that's hard to hire. Either side alone is not.
### `profile.yml` -- compensation
Put your engineering range in `compensation.target_range` (it's usually the higher one) and the teaching range in the optional `compensation.alternate_ranges` block. The evaluator picks the right one based on the JD.
### Evaluation reports
When career-ops evaluates an offer, it should detect which archetype the JD targets and pick the matching salary range, the matching CV emphasis, and the matching STAR stories. With two `fit: primary` entries this mostly just works, but check the `Archetype:` line in the report header. If it picked wrong, the rest of the report is wrong too.
---
## Interview objection handling
A dual-track CV triggers objections that single-track CVs do not. Three you should expect.
### "Why are you applying for an engineering role if you also teach?"
The answer template I use:
> "Teaching is how I keep the engineering sharp. I have to ship code that students can actually run, debug, and extend, so I cannot get away with hand-waving. The reason I am here for [role] is [specific reason about the team / product / scope]. Teaching stays as a side activity, not a competing job."
Lead with engineering wins. Mention teaching as a credibility signal ("I have explained transformers about 200 times so I know exactly which parts trip people up"), not as a co-equal commitment.
### "Are you sure you want a teaching role? Your engineering background is intense, you will be bored."
> "The students I want to teach are going to ship production systems, not pass a quiz. My engineering background is exactly why I can get them there. I have done both for [N] years. This is not a step down. It is the same work in a different format."
Lead with the teaching wins (hours, alumni placed, retention, NPS). Use the engineering background as proof of credibility, not as a fallback plan.
### "Why not just pick one?"
> "Because the combination is the actual value. Engineers who can teach end up leading onboarding, writing internal docs people actually read, and running technical interviews. Teachers who can ship get hired to design curriculum that survives contact with production. I am looking for roles where both matter."
---
## Over/underqualified failure modes
Dual-track candidates get read as overqualified for pure teaching roles ("you will leave in six months for an engineering job") and as underqualified for pure engineering roles ("you have not been a full-time IC in two years"). Both kill applications. The mitigations:
| Risk | Mitigation in CV | Mitigation in interview |
|------|------------------|-------------------------|
| Overqualified for teaching | Lead the Summary with curriculum and outcomes, not LOC | Tell a story about a course you redesigned that moved student outcomes. Show you care about pedagogy, not just shipping. |
| Underqualified for engineering | Add a "Recent Engineering" section that lists shipping work from the last 12 months | Bring code. Pull up a PR you wrote in the last month. Walk through the architecture decisions in plain language. |
---
## Related files
- `../cv-example.md` -- single-track CV example for comparison.
- `../../config/profile.example.yml` -- the canonical profile schema this example extends.
- `../../modes/_shared.md` -- where archetypes feed into framing logic.
- `../../CONTRIBUTING.md` -- this example was contributed under "Add example CVs for different roles".
@@ -0,0 +1,80 @@
# CV -- Sam Rivera
**Location:** Berlin, Germany (remote-friendly, EU timezones)
**Email:** sam@example.com
**LinkedIn:** linkedin.com/in/sam-rivera-example
**Portfolio:** sam-rivera.example.dev
**GitHub:** github.com/sam-rivera-example
## Professional Summary
Two jobs at once for the last four years: senior AI engineer at a knowledge-graph SaaS (60K LOC of the AI subsystem, agent infra handling 4M+ events/month), and lead instructor at an applied AI bootcamp (5,200 teaching hours, 80 alumni placed into ML/AI roles, 92% completion across 11 cohorts). I keep doing both because the bootcamp work forces me to write code people can actually read, and the production work keeps the curriculum from becoming a fairy tale. I will take a role that is mostly engineering, mostly teaching, or both.
## Recent engineering (last 12 months)
- Wrote a planner / executor / critic loop on top of LangGraph for the internal agent platform. HITL checkpoints, Redis-backed checkpointer, ~14K LOC TypeScript on Bun. Average task-completion latency went from 9.2s to 5.7s after the executor stopped re-running the planner on retries (this was the bug that cost me a weekend).
- `agent-skills-kit` (fictional example) is the open source spinoff of the same loop. 2.4K stars, 11 outside contributors. I mostly maintain it on Sundays.
- 47 merged PRs across two production codebases in the last year. Happy to walk through any of them in an interview, including the ones I would write differently now.
## Work Experience
### Knowledge-Graph SaaS GmbH -- Berlin
**Senior AI Engineer / Team Lead**
2022-2026
- Owned the AI subsystem of a Neo4j-backed enterprise knowledge graph product. The AI layer was 97K LOC at handover; I wrote or rewrote around 60K of that.
- Embedding pipeline: chunker, dedupe, Azure OpenAI embed, Chroma + Neo4j sync. Throughput was ~50 docs/min when I picked it up. After I rewrote it around batched async and a real connection pool, it sat at 1,800 docs/min in production. The bottleneck the whole time was a single sync HTTP client nobody had thought to look at.
- Built the agent layer with LangChain and LangGraph using the 12-factor agents pattern. Redis-backed checkpointer, observability through LangSmith. 4M+ agent events/month at peak.
- Ran a team of three engineers and one designer. Weekly architecture review, pair programming on Tuesdays, an on-call rotation that went from "we don't have one" to a 30-minute response SLO with a written playbook.
- Built the customer-facing eval dashboard: latency, cost-per-query, hallucination rate, retrieval precision and recall. We walked through it with customers in their monthly business reviews.
### Applied AI Bootcamp -- Berlin (parallel role, same window)
**Lead Instructor, AI Engineering Track**
2022-2026
- Wrote and ran a 4-week AI Engineering curriculum: Bun, TypeScript, LangChain, LangGraph, Redis, Neo4j, LangSmith, MCP, Anthropic SDK. Six cohorts, average size 14.
- Wrote and ran a 4-week Applied Python for AI curriculum: Python, FastAPI, ChromaDB, Gradio, HuggingFace Transformers, wandb. Five cohorts.
- 5,200 teaching hours total across both tracks (lecture + lab + 1:1 office hours). I keep a real spreadsheet, not a vibes count.
- 80 alumni placed into AI/ML engineering roles so far. I personally maintain the outcomes tracker because the school does not.
- NPS 71. Completion rate 92%, against an industry baseline of 60-75% for intensive bootcamps.
- Wrote the assessment rubric and the capstone-week format the school later adopted across all technical tracks. I lost an argument about timeboxing the capstone and was right two cohorts later.
### Mid-stage AI Consultancy -- Remote
**ML Engineer**
2019-2022
- Nine client engagements: NLP classification, two recommender systems, and two early LLM prototypes back when GPT-3 was the only game in town.
- Wrote the internal eval harness the rest of the consultancy adopted. Cut "vibes-check" review cycles down to a 20-minute structured CI run.
- Mentored four junior engineers. Two are now senior ICs at FAANG-tier companies. This is the job where I figured out I liked teaching as much as building.
### Mobile Games Studio -- Remote
**Backend Engineer**
2017-2019
- Backend services for a live-ops mobile game: matchmaking, leaderboards, IAP reconciliation. Python, Postgres, Redis.
- Rewrote the internal SDK onboarding doc. New-hire ramp-up went from three weeks to eight days. The old doc had a 14-step setup that nobody on the current team had actually run end-to-end.
## Projects
- `agent-skills-kit` (fictional example, open source) -- TypeScript scaffolding for agent skills with HITL approval gates. 2.4K GitHub stars, 11 outside contributors, ~120 weekly active developers. Newsletter mentions in TLDR AI and Ben's Bites.
- `pplx-embed-local-runner` (fictional example, open source) -- a small local runner for open embedding models with a drop-in OpenAI-compatible API. 610 stars. Three of the bootcamp lab exercises run against it instead of paid APIs.
- AI Engineering 4-Week Intensive -- the full curriculum: syllabus, 38 lecture scripts, 16 graded projects on Bronze / Silver / Gold / Diamond difficulty tiers. Used in six cohorts. Written by me, debugged by the students.
## Education
- BSc Computer Science, TU Example (2017)
- Self-directed: Andrew Ng MLOps specialization, fast.ai Part 1+2, hand-rolled implementations of attention + RAG from scratch.
## Speaking and writing
- "Why your bootcamp's LLM module is wrong" -- BerlinML meetup, 2025. ~120 in the room.
- "Production agents, the boring parts" -- internal talk at two partner companies. The boring parts are timeouts and idempotency.
- About 12 long-form blog posts on agent architecture, eval design, and teaching technical material to working engineers. The eval-design one is the only one I'd link unprompted.
## Skills
Engineering: TypeScript, Python (daily), Go (I can read it and write small things), SQL. LangChain, LangGraph, Anthropic SDK, HuggingFace Transformers/Trainer, scikit-learn, PyTorch (basics, not research-level), MCP. Bun, Node.js, FastAPI, Gradio, Redis, Neo4j, ChromaDB, Postgres, Docker, GitHub Actions. LangSmith, Grafana, custom eval dashboards, wandb.
Teaching: curriculum design with Bronze/Silver/Gold/Diamond difficulty tiering, capstone formats, lab vs lecture split. Delivery: lecture, hands-on lab, 1:1 office hours, code review at scale, pair programming. I have taught working engineers (career-changers), university CS students, and internal teams. Assessment work: rubrics, capstone projects, portfolio review, mock-interview design.
Other: public speaking in German and English, technical writing, hiring loop design, mentorship.
@@ -0,0 +1,115 @@
# Career-Ops Profile -- Dual-Track Example (Engineer + Instructor)
#
# Fictional persona. Demonstrates how to configure a profile when you are
# optimizing for TWO archetypes at the same time -- e.g. Senior AI Engineer
# AND Senior Technical Instructor. See README.md in this folder for the
# rationale and the interview-objection playbook.
#
# Copy this file to config/profile.yml and edit before using.
candidate:
full_name: "Sam Rivera"
email: "sam@example.com"
phone: "+00-000-0000000" # placeholder, replace with your real number
location: "Berlin, Germany"
linkedin: "linkedin.com/in/sam-rivera-example"
portfolio_url: "https://sam-rivera.example.dev"
github: "github.com/sam-rivera-example"
twitter: "https://x.com/sam_rivera_example"
target_roles:
# North Star -- TWO primary tracks, not one.
primary:
- "Senior AI Engineer"
- "Staff AI Engineer"
- "Senior Technical Instructor (AI/ML)"
- "Lead Curriculum Engineer"
# Archetypes -- note: TWO entries with fit: primary.
# The evaluator should pick whichever is closer to the JD at scoring time.
archetypes:
- name: "Senior AI Engineer"
level: "Senior/Staff"
fit: "primary"
track: "engineering"
sell_when: "JD emphasizes shipping production AI, agent infra, LangChain/LangGraph, eval systems, ownership of an AI subsystem"
- name: "Senior Technical Instructor (AI/ML)"
level: "Senior/Lead"
fit: "primary"
track: "teaching"
sell_when: "JD emphasizes curriculum, cohort delivery, bootcamp/university lectureship, DevRel education, internal enablement, instructor-led training"
- name: "AI DevRel Engineer"
level: "Senior"
fit: "secondary"
track: "hybrid"
sell_when: "JD wants someone who can ship demos, write docs, AND speak at events / run workshops -- the natural dual-track landing zone"
- name: "Head of AI Education / Curriculum Lead"
level: "Lead/Manager"
fit: "secondary"
track: "teaching"
sell_when: "JD wants ownership of an entire curriculum, hiring + managing instructors, working with industry partners"
- name: "Forward Deployed AI Engineer"
level: "Senior"
fit: "adjacent"
track: "engineering"
sell_when: "JD wants client-facing technical work, fast prototyping, customer enablement -- teaching skills become a differentiator here"
narrative:
# One-line headline. Names BOTH tracks. The "rare combination" is the value.
headline: "Senior AI engineer who also runs the curriculum -- 60K LOC in production, 5,200+ teaching hours, 80+ careers launched"
# Exit story bridges both tracks into one coherent reason for the move.
exit_story: "Spent 4 years running an AI subsystem at a knowledge-graph SaaS in parallel with leading the AI Engineering track at a Berlin bootcamp. Both missions are complete -- now optimizing for a single role that uses both sides, or for one side at full intensity if the team is right."
# Superpowers -- mix of engineering AND teaching to reflect the dual track.
superpowers:
- "Ship production AI systems end-to-end (LangChain, LangGraph, Neo4j, Redis)"
- "Design curriculum that produces hireable engineers (92% completion, 80+ placed)"
- "Explain hard technical material in plain language -- in two languages"
- "Run incident reviews and code reviews at scale without burning out the team"
- "Bridge engineering and education -- internal docs that people actually read"
# Proof points -- mix engineering AND teaching wins, marked by track.
proof_points:
- name: "Knowledge-Graph SaaS AI subsystem"
url: "https://sam-rivera.example.dev/case-study-knowledge-graph"
hero_metric: "60K LOC owned, 4M+ agent events/month, 38% latency cut"
track: "engineering"
- name: "agent-skills-kit"
url: "https://github.com/sam-rivera-example/agent-skills-kit"
hero_metric: "2,400+ GitHub stars, 11 contributors"
track: "engineering"
- name: "AI Engineering 4-Week Intensive (curriculum)"
url: "https://sam-rivera.example.dev/curriculum-ai-eng"
hero_metric: "6 cohorts, NPS 71, 92% completion, 80+ careers launched"
track: "teaching"
- name: "pplx-embed-local-runner"
url: "https://github.com/sam-rivera-example/pplx-embed-local-runner"
hero_metric: "610 stars, used in 3 lab exercises"
track: "hybrid"
# Optional dashboard / live demo
# dashboard:
# url: "https://sam-rivera.example.dev/demo"
# password: "demo-2026"
compensation:
# Default range = engineering range (typically higher).
target_range: "EUR 95K-130K"
currency: "EUR"
minimum: "EUR 80K"
location_flexibility: "Remote within EU; up to 1 week/month on-site in Berlin or any EU city"
# alternate_ranges -- non-standard but the dual-track pattern needs it.
# The evaluator should pick the range matching the detected archetype track.
alternate_ranges:
- track: "teaching"
target_range: "EUR 70K-95K"
minimum: "EUR 60K"
note: "Teaching roles pay less than engineering. Walk-away is lower because the work is intrinsically rewarding, but not unlimited."
- track: "hybrid"
target_range: "EUR 90K-120K"
minimum: "EUR 75K"
note: "DevRel and Forward-Deployed roles -- price between the two tracks."
location:
country: "Germany"
city: "Berlin"
timezone: "CET/CEST"
visa_status: "EU citizen, no sponsorship needed"
onsite_availability: "1 week/month in any EU city; full remote preferred"
+58
View File
@@ -0,0 +1,58 @@
# Resume — Alex Chen
<!--
This is the resume variant of cv-example.md.
In the US tech industry, "resume" (1–2 pages, targeted) is the standard term,
while "CV" typically refers to the longer academic variant.
career-ops supports both — use whichever fits your target market.
This example is intentionally concise (1 page) to demonstrate the resume format.
-->
**Location:** Austin, TX
**Email:** alex@example.com
**LinkedIn:** linkedin.com/in/alexchen
**Portfolio:** alexchen.dev
**GitHub:** github.com/alexchen
## Professional Summary
Full-stack AI engineer with 6 years building production ML systems. Led the ML platform at a Series B fintech (2020-2024), scaling from 2 models to 15+ in production. Built real-time fraud detection (99.7% precision, $2M/year saved), recommendation engine (18% uplift), and an internal MLOps platform serving 4 engineering teams.
## Work Experience
### TechFin Corp -- Austin, TX
**Senior ML Engineer / ML Platform Lead**
2020-2024
- Led ML platform team (3 engineers), built internal MLOps tooling: model registry, A/B testing framework, feature store
- Designed real-time fraud detection pipeline: Kafka → feature computation → model inference → decision engine. 99.7% precision at 50ms p99
- Built recommendation engine for lending products: collaborative filtering + LLM reranking. 18% conversion uplift
- Reduced model deployment time from 2 weeks to 4 hours with CI/CD pipeline (GitHub Actions + SageMaker)
- Established model monitoring: drift detection, performance dashboards (Grafana), automated retraining triggers
### DataStartup Inc -- Remote
**ML Engineer**
2018-2020
- Built NLP pipeline for document classification (BERT fine-tuning, 94% accuracy on legal docs)
- Implemented search ranking with learning-to-rank models
- Set up experiment tracking with MLflow and model versioning
## Projects
- **FraudShield** (Open Source) — Real-time fraud detection framework. Kafka Streams + feature store + model serving. 500+ GitHub stars
- **LLM Eval Toolkit** (Open Source) — Evaluation framework for LLM applications. Supports custom metrics, regression testing, CI integration
## Education
- MS Computer Science, UT Austin (2018)
- BS Computer Science, UC Berkeley (2016)
## Skills
- **ML/AI:** PyTorch, TensorFlow, scikit-learn, Hugging Face, LangChain
- **MLOps:** SageMaker, MLflow, Kubeflow, Airflow, Feature Store
- **Infra:** Kubernetes, Kafka, Redis, PostgreSQL, AWS
- **Languages:** Python, Go, TypeScript, SQL
+75
View File
@@ -0,0 +1,75 @@
# Evaluation: Acme AI -- Senior AI Engineer
**Date:** 2026-04-01
**Archetype:** AI Platform / LLMOps Engineer
**Score:** 4.2/5
**URL:** https://jobs.example.com/acme-ai-senior-engineer
**PDF:** output/cv-candidate-acme-ai-2026-04-01.pdf
---
## A) Role Summary
| Field | Value |
|-------|-------|
| **Archetype** | AI Platform / LLMOps Engineer |
| **Domain** | Platform / Infrastructure |
| **Function** | Build |
| **Seniority** | Senior (IC4-IC5) |
| **Remote** | Full remote (US timezone overlap) |
| **Team size** | ~8 engineers |
| **TL;DR** | Senior AI eng to build and scale LLM infrastructure for enterprise customers |
## B) CV Match
| JD Requirement | CV Match | Source |
|----------------|----------|--------|
| "Production LLM systems" | Built real-time fraud detection + LLM eval toolkit | cv.md: TechFin Corp |
| "Model monitoring and observability" | Drift detection, Grafana dashboards, retraining triggers | cv.md: ML Platform Lead |
| "Python + distributed systems" | Python, Kafka, Kubernetes, Redis | cv.md: Skills |
| "CI/CD for ML" | Reduced deploy from 2 weeks to 4 hours | cv.md: TechFin Corp |
### Gaps
| Gap | Severity | Mitigation |
|-----|----------|------------|
| "LLM-specific experience" | Medium | LLM Eval Toolkit is direct proof. Frame fraud detection as "production ML → production LLM" progression |
| "Prompt engineering" | Low | Mention eval toolkit's prompt testing capabilities |
## C) Level and Strategy
**Detected level:** Senior (IC4)
**Candidate's natural level:** Senior-Staff boundary
**"Sell senior" plan:** Lead with platform ownership at TechFin ("led 3-person team, built MLOps for 4 teams"). Frame as ready for Staff scope.
## D) Comp and Demand
| Data Point | Value | Source |
|------------|-------|--------|
| Base salary range | $180-220K | Levels.fyi, similar AI infra roles |
| Total comp (with equity) | $250-320K | Glassdoor estimates |
| Demand trend | High -- LLM infra is top-5 most in-demand | LinkedIn job trends |
## E) Personalization Plan
| # | Section | Current | Proposed Change | Why |
|---|---------|---------|-----------------|-----|
| 1 | Summary | "Full-stack AI engineer" | "AI platform engineer focused on LLM infrastructure and observability" | Match JD language |
| 2 | TechFin bullets | Generic ML platform | Add "LLM serving" context | JD specifically mentions LLMs |
| 3 | Projects | Both listed equally | Lead with LLM Eval Toolkit | Direct LLM experience proof |
## F) Interview Plan
| # | JD Requirement | STAR Story | S | T | A | R |
|---|---------------|------------|---|---|---|---|
| 1 | Production LLM systems | FraudShield scaling | 10K TPS requirement | Built streaming pipeline | Kafka + ensemble + feature store | 99.7% precision, $2M saved |
| 2 | Team leadership | ML Platform team | 4 teams needed MLOps | Led 3-eng team, built platform | Registry + A/B + feature store | Deploy time 2 weeks → 4 hours |
**Recommended case study:** LLM Eval Toolkit -- shows LLM-specific expertise + open source impact
---
## Keywords Extracted
LLM infrastructure, model serving, observability, ML platform, distributed systems, Python, Kubernetes, model monitoring, CI/CD, prompt engineering, evaluation, production ML, enterprise AI, scalability, reliability