Pattern 19, Episode 1: the full roadmap

The INFUSE Roadmap: 8 weeks, 8 proof projects

One real job post, read as a test list. One project per requirement line. Ninety minutes a day, five days a week, sixty hours total. Every project ships in public, so every line of the final application has a link behind it.

Target post: Senior AI Engineer, INFUSE (Greenhouse), checked 2026-10-18

How to run this plan

  1. Open the target post. Save it as a PDF. Posts close; your copy does not.
  2. Run the exact prompt below on the post. Check every project against the real post lines. Cut anything the post does not ask for.
  3. Build in order. Each week ends with a public repo, a short README, and one demo clip or screenshot set.
  4. Apply wide from week 6. Save the dream post for last, when the proof is done.

Before Week 1: check your starting skill

The 8 builds assume six base skills. Test yourself in ten minutes. For each no, take the short path first. Pre-week work sits outside the 60 hours. Budget 1 to 13 hours, by how many gaps you have.

  1. Can you write a Python function, read a JSON file, and use a list and a dict? If not: the official Python tutorial, parts 3, 4, 5, and 9, about 4 hours.
  2. Can you run commands in a terminal, make a virtual environment, and install a package with pip? If not: The Missing Semester, lessons 1 and 2, about 2 hours.
  3. Can you init a git repo, commit, and push it to GitHub? If not: GitHub get started docs, about 2 hours.
  4. Can you open a CSV file and filter rows with pandas? If not: pandas intro tutorials 1 to 3, about 2 hours.
  5. Can you say what an API call is: a request, a key, a JSON response? If not: the MDN HTTP overview, about 1 hour.
  6. Can you say what a prompt, a token, and an embedding are? If not: Hugging Face LLM course, chapter 1, about 2 hours.

Rule: do not start Week 1 with more than one open gap. The builds stack. A gap in Week 1 becomes a wall in Week 3.

Setup: one time, about 2 hours, all free

Do these steps in order. The plan needs no paid tier. Free tiers have rate limits; the builds are sized to fit inside them.

  1. Install Python 3.11 or newer (python.org). Check it: run python3 --version.
  2. Install VS Code (free) and its Python extension.
  3. Install git. Make a free GitHub account. You will make one repo per week.
  4. Install Docker Desktop (free). You need it in Week 7 only, but install it now so a slow download never eats a build day.
  5. Get one free model API key: Google AI Studio free tier, Groq free tier, or OpenRouter free models. One key covers Weeks 1 to 5. Week 6 needs two providers, so take keys from two of the three.
  6. Make a free Langfuse cloud account for Week 5, or plan to use plain log files. Both paths are in the Week 5 brief.
  7. Make a free Hugging Face account for the Week 8 hosted demo.
  8. For Week 2 embeddings, use sentence-transformers on your own machine. It is free, local, and needs no key.

Store every key in an environment variable or a secrets file that git ignores. Never commit a key.

If your time or privacy is limited

The 60 hours are 60 hours. The daily dose is your choice.

30 minutes a day

Each project takes three weeks: learn, build, finish and test. The full plan takes 24 weeks. Same projects, same done tests. For a 16-week path, the dose is about 45 minutes a day, five days a week.

Build in private

Work with fake data or public data only. Never use employer data, employer code, or screens from work. Check your contract first; some contracts claim side work. Keep each repo private while you build and publish the write-up instead: the method, the failure log, and the results table. A done test log shows the skill without the data.

The exact prompt

Paste a job post after this prompt:

Copy the prompt
Read this job post as a test list. For each requirement line that names a skill, a duty, or a tool, write one small project that proves it. Rules: one project per line, eight projects at most, each project must fit in one week at ninety minutes a day, each project must end in a public artifact (a repo, a live demo, or a written report), and each project brief must name the post line it answers. End with a calendar: week, project, post line, artifact. No project may repeat a skill another project already proves.

Week by week

W1An MCP server with governed access

Post line it answersBuild and maintain MCP servers and tool layers for governed agent access.
BuildOne MCP server that exposes three tools over a small dataset (search, read one record, write one log line), with a permission check on each tool.
Done whenA client connects, calls all three tools, and a denied call is logged.
Time split (7.5 hours)2 hours course and quickstart, 4 hours build, 1.5 hours test client and README.
Worked exampleA real build of this week, with the run output in the README. Clone it, run the client test, then rebuild it your way.
Backup sourceThe official MCP Python SDK repo, with server and client examples.
Common failures and fixes
  • The client connects but sees no tools, or the server dies at start: a print call corrupts the stdio stream. Fix: never print in server code. Log to a file or to stderr.
  • Import or class errors after install: the SDK v2 line moved FastMCP. Fix: pin the v1 line (mcp 1.2 or newer, below 2), or follow the v2 migration guide. Do not mix the two.
  • A denied call returns empty output: the check failed in silence. Fix: write the audit line first, then raise an error with the reason, so the client sees DENIED and the log keeps why.

W2Retrieval over messy data

Post line it answersRetrieval pipelines over real, messy data.
BuildA RAG pipeline over a folder of mixed PDFs, scans, and CSVs. Chunk, embed, retrieve, answer with citations. Log the ten worst failures and fix two of them.
Done when20 test questions return cited answers, and the failure log is in the repo.
Time split (7.5 hours)1.5 hours tutorial, 4.5 hours pipeline and scan handling, 1.5 hours failure log and two fixes.
Common failures and fixes
  • Answers cite the wrong chunk or no chunk: chunks are too big or too small, and metadata is lost. Fix: cut 300 to 600 token chunks with a small overlap, keep the page number on each chunk, and print the top chunks for five test questions before you trust any score.
  • Scans give empty text: the PDF holds an image, not text, and no OCR step ran. Fix: run OCR (Tesseract is free) on image-only pages and store the text next to the file.
  • The test score looks high but the answers are weak: the test set is too soft. Fix: add questions that need two files to answer, and questions with no answer in the data. The right output for the last kind is: not in the data.

W3An agent with a human review step

Post line it answersMulti-step orchestration, structured outputs, human review steps.
BuildA LangGraph workflow with three steps and one human approval gate before any write action. Structured output at each step.
Done whenA full run pauses for approval, resumes, and the trace is saved.
Time split (7.5 hours)2 hours LangGraph course, 4 hours graph and gate build, 1.5 hours trace check and README.
Common failures and fixes
  • The approval gate never fires, or the run cannot resume: state is not saved between steps. Fix: use a checkpointer (MemorySaver for the first pass) and one thread id per run.
  • Structured output fails to parse: the model wraps JSON in prose. Fix: use the framework structured output mode, or a parser with one retry, and log the raw output on each fail.
  • The agent loops and never ends: no stop rule. Fix: set a max step count and a clear end test for each step before you run it.

W4A golden set that grades every change

Post line it answersEvals and golden sets, prompt and model versioning.
BuildA golden set of 50 cases for the Week 3 agent, an eval runner, and a score report that compares two prompt versions.
Done whenOne command runs the set and prints a pass rate per version.
Time split (7.5 hours)1.5 hours evals guide, 4 hours cases and runner, 1.5 hours two-version report.
Backup sourceThe OpenAI Evals repo, with sample evals you can copy.
Common failures and fixes
  • The pass rate moves but the prompt did not change: the judge or the set is noisy. Fix: grade with plain rules where you can. Use model judging only for open traits. Hand-check 10 cases to audit the judge.
  • Scores jump after you tune prompts: the golden set leaked into the prompt as few-shot examples. Fix: split dev cases (used in prompts) from test cases (used for scores). Never mix the two sets.
  • The same command gives new results on a new machine: the model version floats. Fix: pin the exact model name and version, and print both in the report header.

W5Telemetry for cost and accuracy

Post line it answersPer-agent telemetry: tokens, cost, latency, accuracy.
BuildTracing on the Week 3 agent (Langfuse or plain logs), one dashboard page: cost per run, latency, eval score per version.
Done whenThe dashboard shows real runs from the golden set, not sample data.
Time split (7.5 hours)1.5 hours Langfuse setup, 4 hours tracing and dashboard, 1.5 hours real-run check.
Common failures and fixes
  • The dashboard shows sample data, not your runs: traces are not wired to the real agent. Fix: run the golden set through the traced agent, then follow one trace id from the first call to the last.
  • Cost per run reads zero: token counts are not captured. Fix: read usage from each API response and store it with the run record.
  • Latency looks flat and hides the slow step: you log the full run only. Fix: log per step, not per run.

W6A gateway that routes and fails over

Post line it answersMultiple providers, model selection, routing, fallbacks, cost and rate limits.
BuildA small LLM gateway (LiteLLM or your own proxy) with two providers, one routing rule, one failover test, and a per-day cost cap.
Done whenKilling provider one mid-run still completes the task, and the cap blocks a run on camera.
Time split (7.5 hours)1.5 hours quick start, 4.5 hours gateway, failover, and cap, 1.5 hours filmed tests.
Backup sourceOpenRouter docs, a second routing path with free models.
Common failures and fixes
  • The failover test passes but the cost doubles: both providers get called on each request. Fix: call provider two only on an error or a timeout, and log which provider served each call.
  • The cost cap never fires: the code checks the day total after the call. Fix: check the total before the call, and block at the cap.
  • A rate limit error kills the run: no retry logic. Fix: retry 429 and 5xx replies with a short backoff, then fail over.

W7Deploys with evals in the pipeline

Post line it answersCI/CD like a production service: tests and evals in the pipeline, container deploys, rollbacks.
BuildDocker image for the gateway plus agent, a GitHub Actions pipeline that runs unit tests and the Week 4 golden set, and a one-command rollback to the last good image.
Done whenA bad prompt version fails the pipeline in public, and rollback restores the good one.
Time split (7.5 hours)1.5 hours Actions docs, 4.5 hours image and pipeline, 1.5 hours rollback drill.
Common failures and fixes
  • The pipeline is green but the live image is old: a cache or a reused tag served the past build. Fix: tag each image with the commit SHA and deploy by tag, never by latest.
  • Rollback restores the code but not the prompt: prompts live outside the image. Fix: keep prompt versions in the repo, tag them with the release, and roll back both.
  • Evals in the pipeline get skipped: the full set is slow on each push. Fix: run a 10-case smoke set on each push and the full 50 cases on merge.

W8A public demo anyone can run

Post line it answersWork with stakeholders to scope and validate use cases; shared agent template.
BuildA Gradio or web demo of the full stack, a two-page scope note (problem, success metric, cost per run), and a template repo a second person can clone and run.
Done whenSomeone who is not you runs it from the README alone.
Time split (7.5 hours)1.5 hours demo build, 3 hours scope note and template repo, 3 hours second-person test and fixes.
Backup sourceHugging Face Spaces docs, for free hosted demos.
Common failures and fixes
  • It runs on your machine and fails for the tester: the code assumes your paths or your keys. Fix: read keys from environment variables, use relative paths, and test a clean clone in a fresh folder before you share the link.
  • The demo sleeps when your laptop sleeps: it runs on a local tunnel. Fix: host it on a free space (Hugging Face Spaces) and store the provider key in the space secrets.
  • The tester cannot tell good output from bad: the page has no samples. Fix: put three sample questions with expected outputs on the demo page.

After week 8

  1. Rewrite the application profile: one line per project, each line with its repo link.
  2. Send the scope note style write-up with applications. It reads as product thinking, which the post asks for by name.
  3. Keep the golden set running. It is now your regression suite for every new model release.
Disclosure: A story, a real method. The Episode 1 story is fiction performed by characters; Mapleline Labs, the company named in that story, is fictional. INFUSE and its job post are real, and this roadmap is real. This roadmap is free. Use it, ship the projects, and send us the repo links.