---
type: "Workflow"
title: "Plan Staffing"
description: "Turn an event shape (city, date, roles, headcount) into a complete staffing plan with rates, lead time, and compliance flags."
primary_tool: "plan_staffing"
tags:
  - "workflow"
  - "planning"
  - "event-staffing"
timestamp: "2026-08-18T00:00:00Z"
---
<!-- Generated by scripts/build-okf.mjs from content/mcp-data/ and content/skills/. Do not hand-edit, edit the canonical source or the generator and regenerate. -->

# Plan Staffing

**Call `plan_staffing` first.** Give it everything the user provided, city, event
date, and the roles needed with headcounts, and it returns a complete plan:
configured-market matching, per-role rate math, tier-based lead-time guidance, state compliance
flags, and next steps.

## Steps

1. **Capture the event shape:** city, date(s), roles + headcount per role, event type. Fill gaps with [get_roles](../roles/index.md) and [get_cities](../cities/index.md).
2. **Match the configured catalog** in [market entries](../cities/index.md). A match selects the planning tier but does not confirm order coverage. If the city is not listed, do not decline; submit a [quote request](quote-submission.md). A coordinator confirms the specific order after buyer submission.
3. **Price each role** from the [rate matrix](../pricing/rate-matrix.md) or, for an exact rate for a role in a specific city, `get_role_pricing`. Budget = rate range × headcount × hours/day × days.
4. **Read tier-based lead-time guidance** from the [lead-time model](../reference/lead-time-model.md): hub 48h, mid 72h, small 168h typical. This is not live inventory or a coverage check.
5. **Flag compliance:** check the event's [state profile](../compliance/index.md). Call out the daily-overtime states (Alaska, California, Colorado, Nevada).
6. **Present the plan** with totals labeled as **planning estimates**, never binding quotes. Never promise availability.
7. Retain any `plan_id` returned by the completed plan. If persistence is useful and no ID was returned, call `save_staffing_plan` once with the same confirmed event fields; never duplicate an existing save.
8. When the buyer asks to proceed, call `request_quote` with the saved `plan_id` and give the buyer its `form_url`. Never collect or transmit contact details through MCP. If storage did not return a plan ID, give the buyer the planner's `continuation.form_url` directly.

The team-lead auto-add rule inserts one Team Lead when any single shift reaches
**20 staff**. See [event archetypes](../archetypes/index.md) for event-type defaults.
