Skip to content

Portfolio · labs · stretch

Six projects, two you’ll lead with

Pin P2 and P5 on GitHub and talk about those in interviews. P1, P3 and P4 stay public as labs that show range – don’t spend polish time on them after their week ends.

Done with these? Climb the project ladder.22 harder projects in 5 levels: rebuild GPT-2 and the GPT-4 tokenizer, interpretability and post-training research, Anthropic’s performance take-home, the nanoGPT speedrun and safety-paper replications – each with every step spelled out.

Each project now has a “lab-grade” version underneath it

No project gets anyone hired on its own, and your plan is honest that lab research-engineering roles are a 2–5 year goal that usually follows a strong engineering job. What these versions do is close the gap between a tutorial project and work you can defend line by line: measured, reproducible, at real scale, with the failures written up. Do the plan version first.
P1Lab< £0.50 in API calls

UK AI Job-ad Skills Extractor

Weeks: Week 8 (structured output + v1), reused in 16 · For: AI Engineer · Applied AI / Solutions

  • Paste job adverts → validated JSON (title, seniority, years, languages, frameworks, LLM skills, customer-facing)
  • Skills-frequency chart
  • Retries on invalid JSON
  • 20 hand-labelled ads for per-field accuracy
  • Reports the cost per 100 ads
Tech stack
Python, Pydantic, Gemini (free) / Claude Haiku 5.5, pandas, matplotlib
How to stand out
Publish your own ‘what UK AI employers ask for’ chart (from the Section 8 postings) on LinkedIn, with per-field accuracy and the worst failure cases. Store derived data only; don’t republish full advert text.
Interviewers will ask
Interviewers will ask: How do you guarantee valid JSON? Which fields were least accurate and why? What would change at 50,000 adverts a day (batching, Batch API discount, caching)?
P2Portfolio£0–£1

Ask GOV.UK – cited RAG over UK public guidance

Weeks: Weeks 9–10, polish in Week 11 · For: AI Engineer · FDE · Applied AI

  • Ingests one GOV.UK topic via the Content API (OGL v3.0, attributed)
  • Heading-aware chunks carrying ‘last updated’ metadata
  • Local embeddings on MPS; Chroma; hybrid BM25 + vector retrieval
  • Numbered citations and links; refuses when sources don’t support an answer
  • Streamlit UI
  • 40-question eval set (hit@5, plus a faithfulness judge validated with TPR/TNR)
  • Three-configuration table comparing API and local models (pass rate, latency, £ per 100 questions)
Tech stack
Python, requests, sentence-transformers (MPS), Chroma, BM25, Claude Haiku/Gemini, Ollama, Streamlit
How to stand out
An eval report and failure taxonomy, which most junior portfolios lack; freshness dates; a clear ‘not legal or tax advice’ notice; a v1.0 tag with a README results table.
Interviewers will ask
Interviewers will ask: Why that chunk size? How do you separate retrieval failures from generation failures? Did hybrid search help, and on which questions? What if a retrieved page contains instructions (prompt injection)? How would you keep 1M documents fresh?
P3Lab< £1

Scottish health open-data agent + MCP server

Weeks: Weeks 11–12 · For: AI Engineer · FDE

  • An agent loop you wrote yourself, with whitelisted tools
  • Search Public Health Scotland’s CKAN catalogue, fetch rows, summarise tables in pandas, search P2’s GOV.UK index
  • Max-step and cost guards; JSONL traces
  • 25-task eval: tool choice, arguments and final answer against pandas ground truth
  • An MCP server exposes the tools
Tech stack
Python, CKAN API (opendata.nhs.scot, OGL), pandas, Claude/Gemini tool use, MCP Python SDK
How to stand out
Numbers are checked against deterministic code, not vibes; no arbitrary code execution; failure cases shown honestly.
Interviewers will ask
Interviewers will ask: Why an agent rather than a fixed workflow? How do you stop it inventing numbers? What happens when the API is down or returns huge data? How did you evaluate tool selection?
P4Lab£0

LoRA fine-tune on a MacBook Air (MLX)

Weeks: Week 16 · For: ML Engineer · MTS foundations

  • Fine-tunes a small 4-bit instruct model with mlx_lm.lora on synthetic job-ad → JSON pairs
  • Train/valid/test split
  • Compares base vs fine-tuned vs API model on JSON validity, field accuracy, latency and cost
  • Two ablations and a model card
  • Optional replication with Hugging Face transformers + peft on a free Kaggle GPU
Tech stack
MLX, mlx-lm, Hugging Face Hub, Python; optional Kaggle Notebook
How to stand out
Honest negative results are fine. Explain when fine-tuning isn’t worth it compared with prompting or RAG.
Interviewers will ask
Interviewers will ask: What does LoRA rank control? Why QLoRA? How did you avoid test-set leakage? What does validation loss/perplexity tell you, and what doesn’t it tell you?
P5Portfolio£0–£6 (+ optional Claude Pro month)

Capstone for a real user – deployed, evaluated assistant

Weeks: 13 (find your user), 17 (eval set), 18–21 (build, deploy, demo) · For: FDE · Applied AI / Solutions · AI Engineer

  • Built for one real user with a document-heavy question problem; their 20 real questions are the eval set
  • Fallback brief: a fictional Edinburgh housing association answering tenants from public guidance
  • Back end: P2 + P3 behind a FastAPI service
  • Front end: React + TypeScript (Vite) with loading/error states and clickable citations, served from the same Docker container on Render
  • Monitoring: per-request logs (latency, tokens, £) and a /stats endpoint
  • Guardrails (injection tests, £ cap, refusal rules), an eval gate before deploy, GitHub Actions CI
  • Scoping doc, runbook, one-page executive summary, 3-minute demo video and AGENT_LOG.md
Tech stack
FastAPI, React + TypeScript (Vite), Docker, Render, GitHub Actions, Claude Code (reviewed), and everything from P2/P3
How to stand out
A real user’s words in the README, a before/after on their 20 questions, and one change you made because of their feedback. Written like a real engagement: success metrics, risks (UK GDPR), a ‘weeks 3–6’ plan, and an honest record of what the agent did.
Interviewers will ask
Interviewers will ask: How did you scope it? Which metric would the customer sign off on? Why React rather than Streamlit? How would you roll out to 200 staff? Accuracy stalls at 80%: what next? What did the agentic tool write, and how did you check it? What’s the cost at 10,000 questions a month?
P6Stretch£0

Tiny GPT from scratch on MPS

Weeks: 15 (optional), then after Week 21 · For: ML Engineer · MTS

  • Finish Karpathy’s GPT build on Apple Silicon
  • Train a character-level model on public-domain text
  • Keep an experiment table (context length, layers, learning rate)
Tech stack
PyTorch (MPS)
How to stand out
Clear plots and a short write-up of what each change did.
Interviewers will ask
Interviewers will ask: Explain attention, residual connections and layer norm. Why does loss plateau? How would you scale it?

P5 · ready to show a recruiter

Tick these off as the capstone comes together in Weeks 18–21.

0/9

Budget for P5

Render free tier sleeps after 15 min idle.

£0–£6 hosting, plus an optional £20 month of Claude Pro for the agentic-coding sessions. Free alternatives exist for every paid item – see the plan guide.

Open the budget

CV, LinkedIn and GitHub

Week 21 checklists from section 6.2. Saved as you tick.

CV

0/8

LinkedIn

0/5

GitHub

0/5