From ad-hoc requests to CapacityOS

Replaced last-minute staffing requests with one intake door, then built an AI-assisted platform on top of it.

Lollypop Design Studio2024–25Intake · AICapacityOS in progress
CapacityOS
01

Outcomes

1 intake channelReplacing chat, email and Finance threads
95%+ allocation stabilityAcross the portfolio
0 unplanned escalationsCaused by intake gaps
A main leverBehind the staffing and utilisation gains in the studio case study

Part 1

02

The process

Sales would message PgM a day or two before kickoff, often with no SOW, estimate or clear scope. Finance sometimes knew before PgM did. Every intake was a negotiation.

I built three things:

  • An intake form with mandatory fields: client, start date, SOW status, effort per discipline
  • A shared tracker owned by PgM and updated by Sales: pipeline stage, kickoff confidence, capacity flags
  • A biweekly governance meeting with a fixed agenda, every item tied to a named owner
  1. Sales submitsAn intake form with SOW status and effort per discipline
  2. One trackerPipeline stage, kickoff confidence and capacity flags in one place
  3. Biweekly reviewSales, PgM and delivery agree priorities and owners
  4. AllocationStaffed from confirmed data, with 3 days' lead time
BeforeAfter
Sales pings PgM on chat or emailSales submits an intake form
No SOW, no scope claritySOW linked upfront
PgM allocates under pressure3-day lead time enforced
Start dates shift silentlyChanges flagged 3 days ahead
Finance hears firstOne door, one source of truth

1Where it started: the workflow in Google Sheets

Google SheetsThe PgM × Sales × Dev pipeline tracker: every opportunity with delivery type, kickoff date, SOW status and effort per discipline.
Google SheetsProjects & Resources: who is on which project, until when, weeks left until free, and what’s planned next.

Sales used to ping. Now Sales submits.

Part 2

03

CapacityOS

The process worked; the spreadsheets didn't scale. Three sheets drifted apart, and every Monday the same questions had no fast answer: who's free, what's at risk, what needs staffing in 30–60 days.

Rather than wait for engineering bandwidth, I wrote the PRD (8 modules, data model, MVP scope) and built a working prototype myself with Claude, Lovable and Supabase. Each module was tested against the real Monday questions.

2The prototype I built to present the idea

Lovable prototypeResource directory: free-now and free-in-two-weeks counts, with five weeks of availability per person.
Lovable prototypeSales pipeline: SOW status, projected start, staffing readiness and effort per discipline in one table.
ModuleStatus
Resource directory with 5-week availabilityLive
Sales pipeline portal with staffing readinessLive
Gantt plannerLive
Resource recommendations by skill, seniority and availabilityIn progress
Capacity risk engineIn progress

3Now live on Blazeup, our internal tool

The prototype made the case. The resource directory and project assignment now run in Blazeup, used day to day for allocation.

Live · BlazeupResource directory: status, current project, designation and available bandwidth for every person.
Live · BlazeupAssigning someone to a project: bandwidth breakdown, then project, dates and allocation percentage.

From process to product, without waiting for a team to build it.