runbookify
← All plans
Human Resources / Headcount & Workforce Planning

Position / Seat Management

Build an internal tool that tracks approved positions ('seats') separately from the people in them - each seat's department, level, budget, and status (filled/open/frozen) - so hiring, transfers, and backfills are controlled against real approved seats, not ad hoc promises.

IntermediateA weekendBuilds onNext.js (App Router) on VercelSupabase (Postgres, Storage, Auth + RLS)Resend (approval requests, status alerts)
What you'll build

A login-protected position-management tool: load your approved seats, link the people currently in them, keep each seat's status (open/filled/frozen) accurate, route every seat change (create/freeze/eliminate) and every hire/transfer-to-seat through a human approval gate, block any change outside an approved seat, audit everything, and export a clean position roster CSV.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.

Before you start

  • A free Vercel account
  • A free Supabase account
  • A free Resend account (and a sender address you can use)
  • An approved-positions list (seat ID, department, title, level, budget, status)
  • A current incumbent mapping (which person sits in which seat)

The problem this kills

"Wait - do we actually have an approved seat for that hire, or did someone just promise it in a meeting?"

That question is the quiet crisis behind a lot of headcount messes. People and positions get tangled together in one spreadsheet. When Maria gets promoted out of her role, is her old seat still approved, or did it quietly disappear? When a department head says "we have budget for two more," is that two approved positions, or two hopeful ones? A backfill gets posted for a role that was actually eliminated. Two people end up charged to the same seat. Finance and HR are looking at different numbers, and nobody can say with confidence how many roles are truly approved versus informally floated.

The root cause: most teams track people and treat positions as an afterthought. But the position - the approved seat, with its department, level, and budget - is the thing finance signed off on. The person is just who happens to be sitting in it right now.

This tool flips that. It makes the seat the unit of record. Seats are created, frozen, and eliminated only with approval. People are linked to seats, and you can only hire or transfer someone into a seat that actually exists and is open. No more phantom positions, no more double-counting, no more "I thought that was approved."

What you'll build

A small internal web app, just for your team, that:

  • Loads your approved positions - one row per seat, with seat ID, department, title, level, budget, and status (open / filled / frozen / eliminated).
  • Links the current incumbent to each seat - keeping the seat and the person as separate things, so a backfill reuses the same seat when someone leaves.
  • Keeps each seat's status accurate automatically: filling it marks it filled, vacating it returns it to open, and frozen seats can't be filled.
  • Routes every seat change - creating a new seat, freezing one, or eliminating one - through a human approval gate (HR and/or finance sign off before it's committed).
  • Routes every hire or transfer into a seat through the same gate, and blocks any attempt to place a person outside an approved, open seat.
  • Handles the real-world cases: job shares / part-seats (two people at 0.5 each on one seat), and a hard rule against two full incumbents on one seat without explicit approval.
  • Dedupes on seat ID so the same seat can't be created twice.
  • Exports a clean position roster CSV - the current truth of every seat, its status, and who's in it.

What's inside the Implementation Plan

The plan is a single markdown file you paste into Claude Code (a free AI coding agent). It walks the agent through building the whole tool, step by step, with a ready-to-paste prompt at the end of each step.

The most important part: the plan opens by interviewing you about your business. Before it writes a single line, the agent asks how you track approved positions today, what your seat ID and department/level codes look like, how budget is attached to a seat, exactly who has to approve creating or freezing or eliminating a seat, how hires and transfers get tied to seats, and your messy edge cases (job shares, dual incumbents during a transition, a seat that was eliminated but still has someone in it). It reads a short tailored spec back to you, you confirm it, and only then does it build - so you get a tool shaped to your headcount process, not a generic template you have to bend to fit.

Inside you'll find:

  • The discovery interview and how the agent turns your answers into the data model that keeps seats distinct from people.
  • The full build: database, login, seat import with duplicate guards, incumbent linking, the status engine, the seat-change and hire/transfer approval flows, email notifications.
  • The hard human approval gate and the rule that blocks any change outside an approved seat.
  • Verification steps so you can prove it works, and the CSV-export fallback so it's fully usable even before you connect it to your HRIS.

The governance it includes (this is the point)

This isn't a toy spreadsheet replacement. The plan builds in the controls HR and finance actually need:

  • Login so only your team can see or touch anything.
  • Row-level security so people only see the positions that belong to your organization.
  • A complete audit trail - every seat creation, freeze, elimination, fill, vacate, and reassignment is logged with who and when.
  • A hard human-in-the-loop gate - the AI drafts and proposes, but a real approver (HR/finance) must approve before any seat is created, frozen, eliminated, or filled; nothing commits on its own.
  • Changes outside approved seats are blocked in code - you physically cannot place a person where there's no approved, open seat.
  • Duplicate guards so the same seat ID can't be created twice, and dual-incumbent guards so two people can't land on one seat without approval.

Who it's for

HR operations and finance/FP&A folks who own headcount and keep losing the thread of which roles are actually approved versus informally promised. If you've ever had to reconcile a hiring manager's "we have a seat for this" against the real approved-positions list - or discovered a backfill was posted for a role that no longer existed - this is for you. You don't need to write code. You need your approved-positions list, your incumbent mapping, and an afternoon-to-a-weekend.

You've got this - paste the first prompt and let the agent interview you.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.