Fergus Thomas
All projects

Job Application Tracker - Longlist

Shipped
NextJSTypescriptAgentic
Job Application Tracker - Longlist preview

Longlist is a job application tracker built for the stage of a search where you've applied to thirty roles, a handful have replied, and you can no longer hold it all in your head. Every application moves through six stages - Interested, Applied, Online Assessment, Interview, Offer, Rejected - and a status change updates a donut chart and stage counters instantly, so you can see the shape of your whole search at a glance.

Roadmap

14 of 14 complete

The plan Longlist was built to, start to finish. Every phase shipped — kept here as a record of how it came together.

Phase 0

Foundations

4/4

Get the boring parts right first, because everything after this assumes they work.

  1. Done

    Scaffold Next.js and TypeScript

    App Router, strict TypeScript, Tailwind. The starting point every later decision had to fit inside.

  2. Done

    Wire up Supabase

    Postgres, client and server helpers, and environment variables split so the service key never reaches the browser.

  3. Done

    Model an application

    Company, role, link, notes, the date applied and the current stage. Getting this shape right early meant the UI never had to work around it.

  4. Done

    Auth and row-level security

    Supabase auth with RLS policies, so a query can only ever return the signed-in user's own applications rather than trusting the client to filter.

Phase 1

Track a single application

3/3

One role, end to end, before worrying about thirty of them.

  1. Done

    The six-stage model

    Interested, Applied, Online Assessment, Interview, Offer, Rejected. Six was the smallest set that still described a real search honestly.

  2. Done

    Add, edit and delete roles

    A form that takes seconds, because a tracker you resent updating stops being accurate within a week.

  3. Done

    Move a role between stages

    The single most-used action in the app, so it had to be one click from the table rather than buried in an edit form.

Phase 2

Make the whole search legible

4/4

The actual problem was never storing applications. It was seeing the shape of thirty of them at once.

  1. Done

    Donut chart of the pipeline

    Where everything sits, in one glance. Answers “am I actually getting interviews or just applying a lot?” without reading a single row.

  2. Done

    Stage counters that update instantly

    A status change updates the chart and the counts immediately, so the dashboard never disagrees with the table you just edited.

  3. Done

    Search, filter and sort the table

    Find a company by name, filter to one stage, sort by date applied. The three things you reach for when something has gone quiet.

  4. Done

    Empty and loading states

    A tracker is at its emptiest on day one, which is exactly when a blank screen is most likely to lose you.

Phase 3

Ship it

3/3

Cheap, quick, and the difference between a repo and something people can actually use.

  1. Done

    Make it work on a phone

    Applications get logged the moment you send them, which is rarely at a desk. The table collapses to cards below the tablet breakpoint.

  2. Done

    Deploy to Vercel

    Preview deployments per branch, environment variables split between preview and production, and a live demo anyone can click.

  3. Done

    Write up how it was built

    A post on building it with agentic engineering — Claude Code and Claude Design — since the process was as much the point as the product.