Skip to main content

Staffing Requirements: Set Up a Model from Your Spreadsheet

Staffing Requirements: Set Up a Model from Your Spreadsheet

Your workforce team publishes how many agents you need, interval by interval: by location, by skill, or both. A staffing requirements model brings that spreadsheet into Qvasa and compares it with the agents actually working, so you can see every interval that was understaffed or overstaffed.

Qvasa reads the spreadsheet, builds everything the model needs, and shows you each step before anything is imported. This article walks through the setup. To put the model on a dashboard afterwards, see Custom Model Chart: Staffing Requirements on a Dashboard.


Before you start

  • Staffing Requirements is switched on per account. If you don't see Staffing Requirements in Settings, contact us and we'll turn it on for your account.

  • Who can set it up: account admins, and anyone with the permission to manage Staffing Requirements.

  • Your agents need to be identifiable the same way your spreadsheet splits requirements. If the spreadsheet has a Location column, each agent needs a location, for example a Location agent field in Zendesk. If it has a Skill column, agents need those skills in Zendesk, with the same names.

  • Actuals come from agent statuses. An agent counts as working during an interval while they are in a status marked productive in Qvasa.

What the spreadsheet looks like

Save it as a CSV with one row per interval, per location or skill, and the number of agents required:

Date

Interval

Requirement

Skill

Location

10/13/2026

9:00

4.2

Support EN

Austin

10/13/2026

9:30

4.8

Support EN

Austin

  • When: one date-and-time column, or a date column plus a time-of-day column.

  • How many: one column with the number of agents required. Decimals are fine.

  • Broken down by: any number of category columns, such as location, site or skill. They're optional; without them the model compares requirements with your whole team.

  • Up to 50MB and 500,000 rows per file. Split anything larger, by month for example.

Want a starting point? Make a copy of our staffing requirements template, then download it as a CSV (File > Download > Comma-separated values).


Step 1: Upload the spreadsheet

  1. Go to Settings > Staffing Requirements and click Set up from a spreadsheet.

  2. Name the model, for example Support Staffing Requirements. The name is used for the model, the metric that holds your requirements, and the report page.

  3. Choose your CSV file and click Upload and continue.

Step 2: Check what each column means

Qvasa reads the file and guesses what each column is, with a few sample values beside each one. Check the guesses. Everything after this step depends on them.

  • Maps to: Date, Time of day, Date and time, Number of agents required, Category (site, skill, and so on), or Ignore this column.

  • Date format: month first (10/13/2026), day first (13/10/2026) or ISO (2026-10-13).

  • Timezone: the UTC offset the times in your file were written in. Pick this carefully. It's fixed once the file is imported, because it's what the times in the file mean. The timezone the report displays can be changed later without re-importing.

  • How long each row covers: Qvasa detects the interval length from the gaps between rows, for example 30 minutes. Choose it yourself if you know it.

Click Confirm columns and continue.

Step 3: Tell Qvasa how each category identifies agents

Requirements are per category; actuals are per agent. For each category column, choose what identifies the agents behind it:

  • Agent field: <field name>: a Zendesk agent dropdown field, such as Location. An agent counts toward the value their field holds.

  • Agent skills: Zendesk agent skills, matched by name across all your skill types. An agent counts toward every skill they hold.

  • Not mapped: the requirements still show, but the actuals for that category are your whole team rather than the agents behind it. The report marks them with an asterisk.

These choices belong to the category itself, so another spreadsheet with the same column uses them too.

Step 4: Check that the values line up

Qvasa matches each value in your spreadsheet to its counterpart by name: Austin in the file to the Austin option of the Location field, Support EN to the Support EN skill. Each category shows how many values matched and how many agents they cover.

If a value didn't match, click Review values and pick its counterpart. A value with no counterpart counts no agents, so its actuals read 0.

Step 5: Run the import

The last step sums up exactly what will happen before anything is written: the rows to read, the timezone, the metric and model it creates, and how each category matched. Click Run the import.

Large files take a few minutes, and you can leave the page while the import runs. When it's done, the page shows the dates covered, the interval length and any rows that couldn't be read.

From here, Open the report to see every interval in Settings, Edit this model to change its settings, or Build a dashboard to add it to a dashboard.


Change a mapping later: Dimension mappings

Settings > Staffing Requirements > Dimension mappings lists every category in one place. For each one it shows what it maps to, how many values matched, how many agents that covers, and which models use it. Use Review values to fix a value's match, or Change target to map the category to something else. A change applies to every model that uses the category, on the report and on dashboards.


Troubleshooting

  • The actuals read 0 for a value. The value matched no agent field option or skill, or no agent currently holds it. Check it under Dimension mappings > Review values.

  • The actuals look like the whole team. A category you're filtering by isn't mapped. Map it under Dimension mappings.

  • Every interval is shifted by a few hours. The timezone in step 2 didn't match the times in the file. Delete the model and import the file again with the right offset.

Did this answer your question?