The PROOF Roadmap: 8 weeks, 8 data and risk 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, and every project ends in evidence a risk team can read: a log, a repo, a report.
The theme of this post is different from a demo post. The duties name governance, risk culture, and root cause analysis next to the model work. So the roadmap builds the evidence habit, not just the models: gates, logs, postmortems, and a risk pack.
What is inside: a starting-skill check, a free setup guide, the exact prompt, eight week-by-week builds with done tests, failure fixes and a backup source for every week, a worked Week 1 build you can clone, and slower and private paths for readers with less time or a privacy need.
How to run this plan
- Open the target post. Save it as a PDF. Posts close; your copy does not.
- Run the exact prompt below on the post. Check every project against the real post lines. Cut anything the post does not ask for.
- Build in order. Each week ends with a public repo, a short README, and one evidence file the week is named for (a gate log, a leakage test, a postmortem).
- Apply wide from week 6. Save the dream post for last, when the proof can survive questions.
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 12 hours, by how many gaps you have.
- Can you load a CSV with pandas, filter rows, and compute a group average? If not: pandas intro tutorials 1 to 3, about 2 hours.
- Can you write a SQL query with a join and a group by? If not: SQLBolt, lessons 1 to 6 and 8, about 2 hours. This post lives on data products; SQL is not optional here.
- Can you init a git repo, push to GitHub, and read a GitHub Actions run log? If not: GitHub get started docs, about 2 hours.
- Can you say what a train and test split is, and why testing on training data lies? If not: Kaggle Learn, Intro to Machine Learning, about 3 hours.
- Can you call an HTTP API from Python and read the JSON that comes back? If not: the MDN HTTP overview, about 1 hour, then one practice call.
- Can you define, in one sentence each: an eval, a model card, and data drift? If not: Hugging Face LLM course, chapter 1, about 2 hours, plus the Week 1 brief's glossary box.
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 5.
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.
- Install Python 3.11 or newer (python.org). Check it: run python3 --version.
- Install VS Code (free) and its Python extension.
- Install git. Make a free GitHub account. You will make one repo per week. GitHub Actions free minutes cover every pipeline in this plan.
- Install Docker Desktop (free). You need it in Week 4 and Week 5, but install it now so a slow download never eats a build day.
- Get the public datasets: the UCI Default of Credit Card Clients dataset and the UCI German Credit dataset (archive.ics.uci.edu, free). Both are public, old, and safe. Never train these builds on real client data, yours or an employer's.
- Get one free model API key (Google AI Studio free tier, Groq free tier, or OpenRouter free models) for the weeks that call a model. Weeks 1 and 3 need no key at all.
- Make a free Kaggle account for dataset copies and notebooks if you want a second run of any week.
- Plan your observability: local MLflow (pip install, runs on your machine, free) for Weeks 1 and 6, or plain log files. Both paths are in the briefs.
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.
Less time
At 30 minutes a day, five days a week, each project takes about three weeks and the full plan takes 24 weeks. For a 16-week path, the dose is about 45 minutes a day, five days a week. Same projects, same done tests.
Build in private
Privacy is a hard rule in this plan, not a preference. Every dataset named here is public. If you adapt a week to your own domain, use synthetic data or public data only. Never use employer data, employer code, bank client data, 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.
The exact prompt
Paste a job post after this 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), each project must produce at least one piece of evidence a risk reviewer can check (a log, a test, a report, or a dashboard), and each project brief must name the post line it answers. End with a calendar: week, project, post line, artifact, evidence. No project may repeat a skill another project already proves.
Week by week
W1A training pipeline with a gate that can block a bad model
- The gate passes everything: the check runs after the copy step, so promotion already happened. Fix: order the script read records, decide, then copy. A gate that cannot say no is a decoration.
- The eval score looks great and means nothing: the model was scored on its training rows. Fix: split first, freeze the test file, hash it, and let the gate check the hash so a swapped test set shows.
- A retrain silently overwrites last week's model: no version rule. Fix: name every artifact with the date and the data hash, and never write to an existing version folder.
W2Retrieval over the rulebooks, with a scrub for private data
- Answers cite the wrong page or no page: chunks are too big and metadata is dropped. Fix: cut 300 to 600 token chunks, keep the source file and page on every chunk, and print the top chunks for five questions before you trust a score.
- Planted personal data sails into the prompt: the scrub runs after embedding, or not at all. Fix: scrub the raw question first, log what was removed, and keep the planted test set in CI so a refactor cannot quietly drop the step.
- The system answers questions the rulebook never covers: no abstain rule. Fix: set a similarity floor; under it, the only allowed answer is "not in the documents", and test that case by name.
W3A feature store that cannot leak the future
- The offline score is wonderful and the live score is not: a feature used data from after the outcome. Fix: join features as of the event time only, and keep the planted-leak test green forever.
- Training and serving disagree: two copies of the feature logic drifted apart. Fix: one module computes the feature; both paths import it. No copy-paste.
- Stale features get served in silence: no freshness record. Fix: store the compute time with every feature value and alert when the newest value is older than your limit.
W4One model, three roads
- Three roads, three different answers: each path grew its own preprocessing. Fix: the schema and the preprocessing live in one package that all three import.
- The batch job skips bad rows and says nothing: no dead-letter rule. Fix: count rejected rows, write them to a dead-letter file, and fail the run past a threshold you set.
- The API dies under a small load test: no timeout or fallback. Fix: set a request timeout, return a cached safe answer past it, and keep the load test in the repo.
W5A delivery pipeline that fails the build when quality drops
- The eval gate is so slow the team disables it: the full set runs on every push. Fix: a 10-case smoke set on push, the full set on merge and nightly.
- Gate results flip between runs with no code change: the judge or the set is noisy. Fix: grade with plain rules where you can, pin the judge model version, and hand-check 10 cases to audit the judge.
- The gate grades a stale artifact: the eval step reads last week's model. Fix: the gate takes the artifact ID from the same run that built it, and prints that ID in the report header.
W6A cockpit that watches cost, drift, and errors
- The dashboard shows sample data: traces were never wired to the real service. Fix: run one request end to end and follow its trace ID from the first log line to the last.
- The drift alert fires every day: the baseline window is too short or the threshold is a guess. Fix: build the baseline from a full validation period and set the threshold from its spread.
- Cost reads zero: token and usage counts are not captured. Fix: read usage from each model response and store it on the run record before anything else reads it.
W7Break it on purpose, publish the root cause
- The drill breaks something real: the game day ran on the only copy of the stack. Fix: clone the stack for game day, synthetic data only, and write the blast radius down before the first fault.
- The postmortem blames a person: it stops at "someone deployed". Fix: ask why five times, and end each chain at a system change you shipped, not a name.
- Recovery works once, by luck: the steps live in one head. Fix: run the drill a second time from the runbook alone, and time it.
W8A demo wrapped in a risk pack a bank can sign
- The pack reads like marketing: it lists strengths and hides limits. Fix: write the limits page first. A reviewer trusts the pack that names its own walls.
- The demo runs only on your machine: paths and keys are hard-coded. Fix: read keys from environment variables, use relative paths, and test a clean clone in a fresh folder.
- The reviewer cannot find the evidence: pack claims point at nothing. Fix: every claim in the pack links to a repo, a log, or a report from Weeks 1 to 7. Proof, not promises.
After week 8
- Rewrite the application profile: one line per project, each line with its repo link and its evidence file.
- Lead with the risk pack in applications to regulated teams. It answers the post's own language: governance, monitoring, root cause.
- Keep the Week 1 gate. It is now the first step of every model you ship, and the story you tell in interviews.