Max Whittaker

Portfolio · 2026

Max Whittaker

Backend developer building AI workflows people rely on

Senior Developer at Citizens Advice · Manchester, UK (remote)

max.p.whittaker@gmail.com

1About

At Citizens Advice I took Casenote from an early prototype to a pipeline that writes about 7,000 casenotes a month for advisers in 20+ offices, and I was promoted twice in ten months along the way.

Most of my work is async Python: LangChain pipelines, FastAPI services, and fixing whatever breaks once real people start using them. I earned a First in Computer Science at Derby and published a paper on AI in maths education.

  1. Senior Developer

    2025–now

    Citizens Advice

    Joined as a Junior Software Developer; Senior since June 2026.

  2. Placement student

    2022–2024

    Boohoo PLC

  3. BSc Computer Science

    2020–2024

    University of Derby

    First Class Honours (85%) and the Dean's Award. Dissertation published in Open Education Studies.

2Work

Casenote

Citizens Advice · 2025–now

Advisers used to write up every client call by hand. Casenote records the call, transcribes it and drafts the casenote for them, scored against quality rubrics before anyone reads it. It's built by a small team: I work closely with our lead and own the backend and the AI pipeline.

ch. Ladviser mic
ch. Rcall audio
AWS VPCredaction service
transcript

AdviserHi, can I take your name and date of birth?

ClientSure, it's redacted name, redacted dob.

AdviserThanks redacted name, what can I help with?

ClientI'm £1,240 behind on energy since my hours got cut. My number's redacted phone.

casenote draft
Issue:
Client is £1,240 behind on energy bills after their work hours were cut. The supplier wants the full amount now.
Advice:
Did a benefits check and a budget. Explained how to ask for an affordable repayment plan and apply to the supplier's hardship fund.
Next steps:
Client to call the supplier with the budget. Follow-up booked for 12 Nov.
score ≥ τQA passed
Figure 1: Casenote turns an advice call into a casenote. Adviser and client are recorded on separate channels, so the transcript knows who said what. As each chunk is transcribed, a redaction service I built inside our AWS VPC removes personal details. The draft is scored and checked before the adviser sees it. The call and casenote are made-up examples.

Under the hood it's an async FastAPI backend running a LangChain pipeline.

  1. (a)capture2 channels
  2. (b)transcribeElevenLabs
  3. (c)redactAWS VPC
  4. LangChain
    1. (d)draftLLM
    2. (e)scorerubrics
    3. (f)refineLLM
  5. (g)QAown VPC
  6. (h)adviserWebSockets
Figure 2: How a casenote is made. The FastAPI backend transcribes the call in chunks (b), sends each one to the redaction service (c), then runs the LangChain steps (d–f). Drafts scoring below the pass mark τ are refined before the QA service checks them (g), and every step streams its progress to the adviser (h) over WebSockets.
  • FastAPI

    Async API with Pydantic and SQLModel. Progress streams to the browser over WebSockets; tested with pytest and load-tested with Locust.

  • LangChain

    Separate models draft, score and refine each casenote against quality rubrics before the final QA check.

  • Automation

    Advisers check a scored draft instead of writing every casenote from scratch.

3Stack

Languages
  • Python
  • SQL (PostgreSQL)
  • TypeScript
Backend
  • FastAPI
  • Pydantic
  • SQLModel
  • WebSockets
  • pytest
  • Locust
AI
  • LangChain
  • ElevenLabs
  • GLiNER
  • Presidio
Deployment
  • AWS (ECS Fargate, VPC)
  • Docker
  • Fly.io
  • Railway
  • GitHub Actions