Operations · Resource & Capacity Planning

User Guide

Everything you need to plan team capacity, track project labor costs, manage staff schedules, import from Asana, and generate financial reports — all from one dashboard.

📊
Capacity Planning
Schedule vs. available hours, utilization %, PTO tracking, and variance alerts per team and person.
📋
Project Management
Pipeline with status, dates, team allocations, Gantt timeline, and Asana CSV bulk import.
💰
Financial Reporting
Labor cost, revenue, gross margin, budget vs. actual, monthly snapshots, and month comparisons.
👥
Staff & Assignments
Assign individuals to projects, track travel, auto-spread hours across project duration.
01

System Overview

The Capacitor is a single-page web application that connects your team's availability, project workload, and financial rates into one live view. Data is saved automatically as you type — there is no separate Save button.

How the pages connect

⚙ Settingsrates · thresholds
👥 Teams & Staffroles · weekly hrs
📋 Projectsdates · team hrs
📅 Gantt / Assignstaff → project hrs
📊 Dashboardutilization · cost

Pages at a glance

PagePurposeAccess
📊 DashboardLive capacity overview, all views, financial reporting, KPI drilldownsDefault home page
📋 ProjectsAdd, edit, filter, and Asana-import projectsProjects button in header
📅 GanttTimeline view, staff assignment to projects, travel/on-site blocksGantt button in header
👥 Staff & TeamsManage team structure, add/edit staff membersStaff button in header
🏛 ClientsClient directory, linked to projects for reporting contextClients button in header
🗂 HistorySaved period-in-time snapshots for historical comparisonHistory button in header

Auto-save: Every edit (staff hours, project details, assignments, settings) is persisted to the database automatically within a second. You will see a brief "Saved" indicator flash in the header. There is no risk of losing work by closing the tab.

02

Key Concepts

Understanding these six terms makes all the numbers across the tool instantly clear.

TermDefinitionWhere it appears
Available Hours Working hours in a month based on a person's weekly_hours × the number of working weeks. Can be overridden per person per month. Staff Detail → Avail Hrs column
PTO Hours Time-off hours that reduce availability. Entered per person per month in the Staff Detail view. Staff Detail → PTO Hrs column
Effective Capacity Available Hours − PTO Hours. This is the denominator in the utilization formula. Staff Detail → Eff Hrs · Team cards
Scheduled Hours The sum of project assignment hours (auto-prorated from Gantt) + manual hours (entered in Staff Detail for admin, overhead, etc.). Staff Detail → Sched Hrs column
Utilization % Scheduled Hours ÷ Effective Capacity × 100. The core metric driving all KPI colors, alerts, and financial reports. KPI boxes, utilization bars, alerts, Financial
Open Capacity Effective Capacity − Scheduled Hours. Positive = capacity available; negative = overloaded. Dashboard header KPI strip

Utilization color thresholds

ColorLabelDefault rangeWhat it means
● Grey Under-utilized < 70% Significant open capacity — consider taking on more work
● Green Healthy / On Target 70% – 84% Good productive load, within target range
● Amber At Risk 85% – 94% Approaching capacity limit — monitor closely
● Red Over Capacity ≥ 95% Overloaded — reassign work or add headcount immediately

All thresholds are fully configurable in ⚙ Settings.

03

Quick Start

Follow these six steps in order to get meaningful utilization and cost numbers on the dashboard. The whole process takes about 10–15 minutes for a team of 10–20 people.

1
Set labor rates in Settings Click ⚙ Settings in the dashboard header. Enter Cost $/h and Bill $/h for each role type. Without rates, all financial figures remain zero.
2
Configure utilization thresholds While in Settings, review the Target %, At-Risk %, and Over-Capacity % values. Adjust them to match your organization's norms (defaults: 70 / 85 / 95).
3
Build your team roster Go to 👥 Staff → Staff tab. Add each person with their name, team, role, role type (links to a rate), and weekly hours. Role Type is the critical link to financial data.
4
Add or import projects Go to 📋 Projects. Use + New Project to add manually, or ↑ Import from Asana to bulk-import from a CSV export. Set project start/end dates and estimated hours per team.
5
Assign staff to projects on the Gantt Go to 📅 Gantt. Find a project bar and click Assign. Enter total hours per person for the project's full duration. Hours are automatically prorated across months.
6
Review the dashboard Return to the dashboard. The KPI boxes, utilization bars, and team cards are now live. Click any team KPI box to open a full team breakdown. Click the 💰 Financial tab for cost and margin data.
💡

Optional fine-tuning: In Staff Detail, click any Avail Hrs, PTO Hrs, or Sched Hrs cell to edit it inline. Use PTO to block off vacation; use manual Sched hours for non-project work like admin, training, or overhead.

04

KPI Boxes

The row of summary boxes across the top of the dashboard gives you an instant read on operational health. Each team box is clickable and opens a detailed breakdown modal.

BoxWhat it showsClick action
Ops Util Overall utilization % across all staff — Scheduled ÷ Effective hours. Color-coded green/amber/red. No click action — use the nav tabs to drill down
[Team Name] That team's utilization %, scheduled hours, effective capacity, and a utilization bar. Colored by the team's assigned color. Opens Team Breakdown Modal
Open Cap Total unscheduled hours across all staff this month (Effective Capacity − Scheduled Hours). No click action
Labor Cost Total estimated labor cost this month plus est. billable amount. Only visible when rates are configured. Jumps directly to the Financial view

Team Breakdown Modal

Click any team KPI box to open a full-screen modal. It contains three sections:

KPI strip Five metrics for this team and month: Utilization %, Scheduled Hours, Effective Capacity, Total Labor Cost, and Estimated Billed Amount.
Staff list Every team member with their individual utilization bar, scheduled hours broken down as ▶ proj vs. + manual, and their labor cost for the selected month.
Project breakdown table Every project active this month that uses this team. Shows allocated hrs, assigned hrs, utilization contribution %, labor cost, est. revenue, gross margin %, and which staff members are assigned.
05

Dashboard Views

Use the navigation tabs below the KPI row to switch between views. The year/month selector on the right controls which period you're viewing across all views simultaneously.

ViewWhat you seeBest used for
Overview Large Ops utilization gauge, team cards grid with charts and role breakdowns, active projects quick-list (up to 6 projects) Morning stand-up, executive summary
By Team One card per team with a 12-month utilization bar chart, staff list grouped by role type, and a monthly summary table Team health review, spotting seasonal peaks
Staff Detail Full table of every staff member with editable Avail/PTO/Sched hour cells, utilization bars, and totals footer Individual capacity edits, filtering by role or team
Weekly View Capacity bar chart by week, weekly utilization % cards, per-team and per-staff weekly breakdown tables Short-term scheduling, week-by-week planning
Projects Demand vs. capacity bar chart for the full year, monthly project list with team-hours breakdown Pipeline planning, spotting demand spikes
💰 Financial Full financial reporting with six sub-tabs (see Financial section below) Cost reporting, margin analysis, budget tracking
Trends 12-month utilization line chart by team, quarterly bar chart spanning multiple years, quarterly summary table Year-over-year planning, quarterly reviews
Alerts Auto-generated alerts by severity: over-capacity staff/teams, under-utilization, missing hours, travel blocks Daily operations check, risk management
06

Staff Detail View

The most granular view — one row per staff member with fully editable capacity cells. This is where you fine-tune individual availability and enter overhead/admin hours.

Editing capacity inline

Click any value in the Avail Hrs, PTO Hrs, or Sched Hrs columns to enter edit mode. Type the new value and press Enter or click elsewhere to save. Changes persist automatically within a second.

Scheduled hours breakdown

The Sched Hrs cell shows two separate components side by side:

BadgeSourceHow to change
▶ Nh proj Hours from Gantt project assignments, prorated to this month's overlap Go to 📅 Gantt → click Assign on a project
+Nh manual Manually entered overhead/admin hours Click the Sched Hrs cell here in Staff Detail

Filtering and grouping

  • Use the Team dropdown to show only one team at a time
  • Use the Role dropdown to filter by specific roles
  • Enable Group by Role to organize rows by role type with colored section headers
  • The footer row always shows totals for the currently filtered set only

Travel status indicator

Staff members marked as on-site in a Gantt assignment show a travel badge next to their name. This is informational only — it does not automatically reduce available hours.

💡

Tip: Combine Team filter + Role filter + Group by Role to audit a specific discipline within one team — e.g., "show me all Delivery Specialists in the North team, grouped by role."

07

Weekly View

Breaks the selected month into individual week segments so you can see short-term loading patterns and identify bottlenecks before they happen.

Each week is weighted by its number of actual working days — a 3-day holiday-shortened week gets proportionally fewer hours than a full 5-day week. The Weekly View includes:

  • Bar chart — Scheduled vs. Available hours side by side for each week
  • Utilization % cards — One card per week, color-coded, showing hours breakdown and working-day count
  • Weekly team table — Each team's Sched and Avail hours per week with sub-column labels
  • Staff weekly detail table — Per-person hours per week; use the team dropdown to narrow the list

Weekly hours are prorated estimates based on monthly totals. They reflect proportional share of working days, not actual week-level scheduling. For precise week-by-week precision, enter manual hours per month and use the Gantt for project-level tracking.

09

Alerts

The system auto-generates alerts for the selected month. The alert count badge on the nav tab updates in real time as you change capacity data.

SeverityTrigger conditionAction recommended
⚠ Critical Staff member or team utilization exceeds the Over Capacity % threshold Reassign work, add resources, or push out project scope
◐ Warning Staff member utilization exceeds the At-Risk % threshold Review upcoming assignments; flag to project manager
ℹ Info Team utilization below 50% (large open capacity), missing team hours on a scheduled project, or a travel/on-site block is active Consider adding projects, or review project team-hour estimates

Alerts are read-only indicators — they don't block any actions. Use them as a daily checklist. Resolve an alert by fixing the underlying capacity issue (adjusting hours, reassigning staff, or updating project data) and the alert disappears automatically.

10

Projects Page

Your pipeline management hub. Access it from the 📋 Projects button in the dashboard header. All projects here feed directly into the Gantt timeline, capacity utilization, and financial calculations.

Adding a project manually

1
Click + New Project Opens the project creation modal.
2
Fill in required fields Project Name, Start Date, and End Date are required. Client, Location, Status, Budget, and Notes are optional but recommended for reporting accuracy.
3
Set estimated hours by team Enter how many total hours each team is expected to contribute. These drive the Demand vs. Capacity chart in the dashboard Projects view and serve as the "budget" in the Gantt assignment modal.
4
Click Add Project The project appears immediately in the pipeline and begins affecting capacity calculations for its date range.

Project statuses

StatusMeaningShown in Active Projects?Included in utilization?
ScheduledConfirmed and upcomingYesYes
In ProgressCurrently activeYesYes
CompletedFinishedNoNo (excluded)
On HoldTemporarily pausedNoNo (excluded)
BacklogProposed / not yet confirmedNoNo (excluded)
CancelledCancelledNoNo (excluded)

Filtering the project list

  • Use the status filter pills at the top to show only projects of a specific status
  • Use the search bar to find projects by name or client
  • Use the Team dropdown to show only projects with hours assigned to a specific team
  • Use the Sort dropdown to order by Start Date, Name, or Estimated Hours
11

Asana CSV Import

Import a batch of projects directly from Asana's CSV export in four guided steps. Click ↑ Import from Asana in the top-right corner of the Projects page.

Step 1 — Export from Asana

1
Open your Asana project or portfolio Navigate to the project list, section, or portfolio you want to export.
2
Click ⋯ More → Export / Print → CSV Asana generates and downloads a .csv file automatically.
3
Drop the file into the importer Drag-and-drop the .csv onto the upload zone, or click the zone to open a file browser. A green confirmation message appears when the file is parsed successfully.
💡

Don't have an Asana export? Click ↓ Download sample CSV template in the upload step to get a correctly formatted example file you can fill in with Excel or Google Sheets and import back.

Step 2 — Column mapping

The importer auto-detects standard Asana columns. A ✓ auto-detected badge confirms each match. For any field the importer missed, use the dropdown to manually assign the correct CSV column.

Our fieldAuto-detected Asana column namesRequired?
Project NameTask Name, Name, Project NameRequired
ClientClient, Account, Company, OrganizationOptional
Start DateStart Date, Planned StartRecommended
End / Due DateDue Date, End Date, Deadline, Completion Date, Planned FinishRecommended
StatusSection/Column, Stage, Status, PhaseOptional
LocationLocation, Site, Venue, CityOptional
Estimated HoursEstimated Hours, Effort (hrs), Story PointsOptional
Budget ($)Budget, Contract Value, FeeOptional
NotesNotes, Description, Details, CommentsOptional

Step 3 — Preview & select rows

Review every parsed row before committing. The preview table shows:

  • Checkbox — check/uncheck individual rows to include or exclude them
  • ⚠ Duplicate warning — rows with the same name as an existing project are flagged in amber and deselected by default; re-check to import anyway
  • Warnings column — flags rows missing a start or end date
  • Auto status mapping — Asana stage names are automatically translated (e.g., "Done" → Completed, "In Progress" → In Progress, "Backlog" → Backlog)
  • Select All / Deselect All buttons for batch control

Step 4 — Done

After clicking Import Selected, a results screen shows how many projects were imported and any per-row error messages. A ← Back to Preview button lets you retry failed rows. Successfully imported projects immediately appear in the pipeline with status Scheduled (unless Asana mapped to a different status).

After import: Imported projects have no staff assignments yet. Go to 📅 Gantt to assign staff and set individual hour allocations. Also review and set team-level estimated hours on each imported project if they weren't in the CSV.

12

Gantt & Staff Assignments

The Gantt page is where project timelines are visualized and staff hours are allocated. This is the primary driver of utilization numbers on the dashboard.

Reading the Gantt chart

Each row represents one project. The colored bar spans the project's start-to-end dates. The bar color reflects the project's status. Hover over a bar for date details and estimated hours. Projects are sorted by start date by default.

Assigning staff to a project

1
Click the Assign button Located on the left side of each project row. Opens the Assignment Modal.
2
Filter to a team (optional) Use the team filter at the top of the modal to display only one team's staff at a time — makes large rosters easier to manage.
3
Enter total hours per person Type the total hours that person will spend on this project across its entire duration. The system automatically prorates these hours across the project's months.
4
Mark travel/on-site if applicable Check the Travel / On-Site checkbox and enter their travel hours. A ✈ badge will appear next to their name on the dashboard and an info alert is generated.
5
Click Save Assignments Hours are saved and immediately distributed across the project's months. The dashboard updates in real time as soon as you return to it.

Hour proration explained: If you assign 90 hours to a 3-month project, the system allocates hours proportional to calendar overlap. A month that covers half the project period receives ~45 hours. A month that only overlaps for 10 of 30 project days receives ~10 hours (⅓ of a month's share).

Budget progress bar

The assignment modal shows a progress bar comparing total assigned hours vs. the project's estimated hours. Going over budget turns the bar red. This is a visual indicator only — it does not block saving.

13

Financial View

Access via the 💰 Financial tab on the dashboard nav bar, or click the Labor Cost KPI box. The Financial view has six sub-tabs covering different angles of cost and revenue data.

Prerequisites for financial data:
1. Labor rates must be set in ⚙ Settings → Labor Rates by Role Type.
2. Each staff member needs a Role Type field set in 👥 Staff.
3. Staff must be assigned to projects via the 📅 Gantt page.
Without all three, financial figures will show zero.

Annual KPI strip

Always visible at the top of all Financial sub-tabs for the selected year:

KPIFormula
Annual Labor CostΣ (scheduled hours × cost rate) for all staff across all 12 months
Est. Annual RevenueΣ (scheduled hours × bill rate) for all staff across all 12 months
Gross ProfitEst. Revenue − Labor Cost
Gross Margin(Gross Profit ÷ Est. Revenue) × 100
Total Sched HrsSum of all scheduled hours across all staff for the selected year
13a

Financial — Overview Tab

The default Financial sub-tab. Shows annual trends and a role-type breakdown for the selected month.

  • Monthly Labor Cost vs. Est. Revenue chart — Dual bars (amber = cost, purple = revenue) for all 12 months, with a green Margin % line on the right axis
  • Role-type breakdown table — For the selected month: headcount, scheduled hours, labor cost, est. revenue, gross profit, and margin % per role type
💡

Change the year selector on the right to view any historical year in the Overview chart. The role-type table always reflects the currently selected month.

13b

Financial — By Project Tab

Project-level financial breakdown for all projects with assigned hours. Sorted by labor cost descending.

The horizontal bar chart shows each project's Labor Cost and Estimated Revenue visually. The table below provides the full detail:

ColumnWhat it means
Assigned HrsActual total hours assigned to this project via Gantt
Est. HrsEstimated hours from the project record
Hours VarianceEst. Hrs − Assigned Hrs (green = under estimate, red = over)
Labor CostAssigned Hrs × cost rate (weighted by role mix)
BudgetProject budget entered in the project record
Budget VarianceBudget − Labor Cost (red + ⚠ if over budget)
Est. RevenueAssigned Hrs × bill rate (weighted by role mix)
Margin(Revenue − Cost) ÷ Revenue × 100

Projects without a Budget field set will show a blank Budget Variance. Enter a budget in the project record (📋 Projects → ⋯ Edit) to enable budget tracking.

13c

Financial — By Team Tab

Shows how labor cost and revenue are distributed across your teams, both monthly and in a summary table.

  • Stacked monthly bar chart — Each team's cost as a colored segment per month, plus an Estimated Revenue bar for comparison
  • Team summary table (selected month) — Team name, staff count, scheduled hours, labor cost, est. revenue, gross profit, and margin % per team

Use this tab to identify which teams have the highest cost concentration and whether revenue tracks cost at a team level.

13d

Financial — Margin Analysis Tab

Focused entirely on profitability — where margin is strong, where it's at risk, and which projects are consuming budget.

  • Gross margin % area chart — Monthly margin trend with reference lines at 30% (target) and 15% (warning)
  • Project margin ranking — Horizontal bars showing each project's gross margin %, sorted from highest to lowest. Red bars indicate projects below your target margin.
  • Budget health panel — Progress bars showing what % of each project's budget has been consumed by labor cost. Bars turn red when over 100%.
13e

Financial — Monthly Cost Tab

A detailed snapshot of all labor cost activity for a single selected month. Navigate to it via 💰 Financial → 📅 Monthly.

Use the month selector at the top of this tab to switch months independently of the main dashboard month selector. The tab is organized into five sections:

Month KPI strip

Four metrics for the selected month at a glance: Labor Cost, Est. Revenue, Scheduled Hours, and Gross Margin %.

Team cost cards grid

One card per team showing: Team name, labor cost, estimated revenue, scheduled hours, utilization %, and a colored margin bar. Click a card to focus the chart on that team.

Team bar chart

Side-by-side bar chart comparing Labor Cost vs. Estimated Revenue for each team in the selected month. Makes it easy to see which teams are revenue-generating vs. cost centers.

Staff cost table

Every staff member with scheduled hours for this month, sorted by labor cost descending. Columns include:

  • Scheduled hours — with project hours and manual hours broken out
  • Rate — cost $/h and bill $/h for their role type
  • Labor Cost — their individual cost for this month
  • Est. Revenue — their revenue contribution for this month
  • Margin % — per-person gross margin

A totals footer row summarizes all values for the selected staff set.

Project attribution table

Which projects were active this month and how much of the month's cost they each drove. Columns include prorated cost, hours, revenue, and a visual % of month cost bar showing each project's share of total monthly labor cost.

💡

Use case: At month-end, open this tab to generate a cost summary for client billing. Export the staff table as CSV for payroll reconciliation, or screenshot the project attribution table for your project accounting workflow.

13f

Financial — Month-to-Month Comparison

Pick any two months and see exactly what changed in labor cost, revenue, margin, hours, and utilization. Navigate to it via 💰 Financial → ⇄ Compare.

Selecting months to compare

Two dropdowns at the top select Month A (cyan) and Month B (amber). Default is previous month vs. current month. Click Reset to prev/current to return to defaults.

Delta KPI cards

Five cards show before/after values with color-coded change arrows:

Metric▲ Green arrow means…▼ Red arrow means…
Labor CostCost went down (favorable)Cost increased
Est. RevenueRevenue went up (favorable)Revenue declined
Gross Margin %Margin improved (unit: pp)Margin declined
Scheduled HoursMore hours in Month BFewer hours in Month B
Utilization %Higher utilization in Month BLower utilization in Month B

12-month sparkline chart

All 12 months rendered as bars. Month A is highlighted in cyan, Month B in amber. A green margin % line shows context — are these months typical or outliers in the year?

Team comparison table

Side-by-side columns for Month A and Month B with Δ (delta) columns for Labor Cost, Scheduled Hours, and Utilization pp. Quickly identifies which team drove a change between months.

Staff comparison table

Same format as the team table but at the individual staff level. Only shows staff members who have cost data in at least one of the two months.

"pp" stands for percentage points — the arithmetic difference between two percentages. A change from 28% to 33% margin is +5 pp, not +5%.

14

Labor Rates

Labor rates are set per role type in ⚙ Settings. Every financial calculation in the system derives from these two numbers per role.

Rate fieldUsed forWhere it appears
Cost Rate ($/h) Internal labor cost — what the company pays the employee or contractor per hour Labor Cost figures throughout Financial, Team modal, exports
Bill Rate ($/h) What is charged to the client per hour of that role type's work Est. Revenue, Gross Margin calculations throughout Financial

Each staff member has a Role Type field. The rates for their role type are applied automatically to all their scheduled hours. Staff without a Role Type use the "Other" default rate.

Changing a labor rate updates all calculations instantly because rates are applied at display time, not stored per hour-block. This means historical months will also reflect the new rate retroactively. If you need to track rate changes over time, save a snapshot before updating rates.

15

Teams & Staff

Manage your organizational structure from the 👥 Staff button in the dashboard header. The page has two tabs: Teams and Staff.

Teams tab

Create and edit teams. Each team requires:

  • Name — displayed on all KPI boxes and charts
  • Color — used for visual coding on the dashboard, Gantt, and all charts

Deleting a team does not delete its staff members — they retain their team assignment but the team name may appear as unknown on the dashboard until reassigned.

Staff tab

FieldPurposeRequired?
NameFull name — used for initials avatar and all tables throughout the appYes
TeamWhich team this person belongs toYes
RoleJob title or description — display only, does not affect ratesNo
Role TypeDetermines which labor rate applies. Must match one of the types defined in Settings.Strongly recommended
Weekly HoursStandard hours per week — used to calculate default monthly available hours. Default: 40Yes
💡

Role Type is the financial bridge. If a staff member has no Role Type set, they default to the "Other" rate which may be $0. Set Role Type for every person to ensure accurate cost reporting.

16

Clients

The Clients page is a directory of client organizations. Clients are linked to projects for reporting context and can be used to filter project views.

Each client card shows: client name, type (University, Corporate, Government, etc.), location, number of active projects, and total estimated hours across those projects. Use the search field and type filter to locate specific clients quickly.

Adding a client

Click + New Client and fill in the name, type, and optional contact information. Once saved, the client appears in the Client dropdown on the project form.

17

Snapshots & History

Snapshots capture a point-in-time picture of capacity and utilization data so you can compare periods later without losing current data.

Saving a snapshot

1
Click 📸 Snapshot in the dashboard header Opens the Save Snapshot modal.
2
Choose the snapshot type Monthly, Quarterly, or Annual. Monthly is the most granular. Quarterly and Annual aggregate metrics across their full period.
3
Add an optional note Describe context — what was happening this period, any unusual capacity events, or key project milestones. This context is invaluable when reviewing the snapshot months later.
4
Click Save The snapshot is stored permanently and appears in the History page grouped by type.
💡

Best practice: Save a monthly snapshot on the last business day of each month. This builds a historical record you can use to demonstrate capacity trends to leadership and to detect recurring patterns (e.g., "Q4 is always at 95% utilization").

Viewing history

Click 🗂 History in the dashboard header. Filter by type or use the search bar to find a specific period. Click any snapshot card to expand the full data record. Snapshots can be deleted or have their note edited at any time.

18

Settings

Click ⚙ Settings in the dashboard header to expand the settings panel inline. Changes apply immediately.

Utilization thresholds

SettingDefaultEffect when exceeded
Target % 70 Utilization ≥ Target turns green. Below Target shows as grey.
At-Risk % 85 Utilization ≥ At-Risk turns amber and triggers a Warning alert.
Over Capacity % 95 Utilization ≥ Over Capacity turns red and triggers a Critical alert.

Labor rates by role type

Each role type row shows the role name, a Cost $/h input, and a Bill $/h input. Click any rate field, type the new value, and press Enter or click away to save. See Labor Rates section for the full explanation.

Settings (rates and thresholds) are global — they affect all users accessing the dashboard. Coordinate rate updates with your team, and save a snapshot before making significant rate changes.

19

Export

Click ↓ Export in the dashboard header to expand the export panel. All exports are based on the currently selected month and year.

Export typeContentsFile formatBest used for
CSV — Staff Utilization Every staff member: Avail Hrs, PTO Hrs, Eff Hrs, Sched Hrs, Util %, Labor Cost, Billed Amt .csv Payroll reconciliation, HR reporting, capacity audits
CSV — Financial Report Every project: Assigned Hrs, Est Hrs, Labor Cost, Est Revenue, Budget, Budget Variance, Gross Margin % .csv Project accounting, client billing, financial review meetings
JSON — Full Snapshot Complete operational data: ops summary, all teams with metrics, all staff keys, all alerts .json System integrations, custom reporting pipelines, archiving
💡

CSV files open directly in Excel or Google Sheets. The first row is always a header row with column names. JSON files contain structured data that can be fed into reporting tools, BI platforms, or imported into other systems.

20

Formula Reference

Every calculation used in the system, presented for transparency, auditing, and onboarding new users.

Capacity formulas

Available Hours = weekly_hours × (working days in month ÷ 5)
// working days excludes weekends
Effective Capacity = Available Hours − PTO Hours
Scheduled Hours = Project Assignment Hours (prorated) + Manual Hours
Utilization % = Scheduled Hours ÷ Effective Capacity × 100
Open Capacity = Effective Capacity − Scheduled Hours
// negative = overloaded

Proration formula

Monthly Project Hours = Total Assigned Hours × (Overlap Days in Month ÷ Total Project Days)
// where Overlap Days = days the project is active within the month

Weekly estimate formula

Weekly Hours = Monthly Hours × (Working Days in Week ÷ Working Days in Month)
// estimates only — not stored at the week level

Financial formulas

Labor Cost = Scheduled Hours × Cost Rate ($/h per role type)
Est. Revenue = Scheduled Hours × Bill Rate ($/h per role type)
Gross Profit = Est. Revenue − Labor Cost
Gross Margin % = (Gross Profit ÷ Est. Revenue) × 100
Budget Variance = Project Budget − Labor Cost
// positive = under budget; negative = over budget
Hours Variance = Estimated Hours − Assigned Hours
// positive = under estimate; negative = over estimate

All rates, hours, and thresholds are applied at display time, not stored per transaction. This means the system always shows the most current picture based on your current settings. If you need a frozen historical view, use the Snapshot feature.

21

Frequently Asked Questions

Click any question to expand the answer.

Why isn't utilization changing after I assign staff on the Gantt?

Three most common causes:

1. The project is missing a valid Start Date or End Date. Without dates, hours can't be prorated. Go to 📋 Projects and edit the project to add dates.

2. The project status is not Scheduled or In Progress — Completed, On Hold, Backlog, and Cancelled projects are excluded from active calculations.

3. The assigned hours are for a different time period than the month you're viewing. Check that the project's date range overlaps with your selected month.

Why are all the financial fields showing zero?

Three things to check:

1. Labor rates must be set in ⚙ Settings → Labor Rates. If Cost $/h is 0 for all roles, all cost figures will be zero.

2. Every staff member needs a Role Type assigned in 👥 Staff. Without it they default to the "Other" rate, which may be $0.

3. Staff must have Scheduled Hours — either from Gantt assignments or manual entries in Staff Detail. Zero hours produces zero cost.

Can I assign a staff member to multiple projects at once?

Yes. Assign them to each project separately on the Gantt page. Their total project hours are summed and prorated independently across each project's date range. The combined total for each month becomes their "project scheduled hours" for that month, driving their utilization.

What happens if I enter manual Sched hours AND have Gantt assignments?

Both are added together. Manual hours (shown as +Nh manual) represent overhead, admin, or training; project hours (shown as ▶Nh proj) represent assigned project work. Their sum drives the utilization calculation.

How do I block off someone's availability for travel or on-site work?

In the Gantt Assignment Modal, check the Travel / On-Site checkbox for that person and enter their travel hours. This flags them with a ✈ on-site badge on the Staff Detail view and generates an info alert for the project period. Note that travel hours are included in the project's total scheduled hours, so they do affect utilization.

How do I change a labor rate and what's the impact?

Go to ⚙ Settings and update the Cost $/h or Bill $/h for the relevant role type. The change applies immediately across all months and all calculations — including historical data — because rates are applied at display time. If you need to preserve a historical rate, save a snapshot before changing the rate.

What is a snapshot and when should I save one?

A snapshot is a frozen, read-only archive of capacity and utilization metrics for a specific period. The live dashboard always shows current data based on current settings; snapshots let you compare to past states.

Save a snapshot: at the end of each month (monthly snapshot), at end of quarter (quarterly), or whenever you make a major rate or staffing change and want to preserve the "before" state.

My Asana import didn't detect a custom field — how do I fix this?

In Step 2 of the importer (Map Columns), all CSV column names appear in the dropdown next to each field — including custom fields that weren't auto-detected. Select the correct Asana column from the dropdown and proceed to the preview. Custom fields with unusual names just need this one-time manual mapping.

Can I undo an Asana import?

Not with a single undo action. To remove imported projects, go to 📋 Projects, find each imported project, click the project to open it, and use the Delete action. Imported projects can be identified by their creation timestamp shown in the project detail view.

What does "pp" mean in the Month Comparison view?

"pp" stands for percentage points — the arithmetic difference between two percentages. For example, if gross margin was 28% in Month A and 33% in Month B, the change is +5 pp (five percentage points), not +5%.

Why do weekly hours look different from what I'd expect?

Weekly hours are estimates derived by prorating each person's monthly hours based on working days. A 5-week month distributes hours across more weeks than a 4-week month. Short weeks (holidays, month boundaries) receive fewer hours proportionally. This is by design — the system doesn't track hours at the week level directly.

22

Troubleshooting

Quick diagnosis guide for the most common issues users encounter.

SymptomLikely causeFix
Utilization shows 0% No scheduled hours for this person and month Check Gantt assignments; confirm project dates overlap the selected month
Labor Cost shows $0 No rates set, or staff missing Role Type Set rates in ⚙ Settings; set Role Type on each staff member in 👥 Staff
Project not appearing on dashboard Project status is not Scheduled or In Progress Edit the project and change its status to Scheduled or In Progress
Utilization shows >100% Staff is overloaded — more scheduled hours than effective capacity Reduce manual hours, reduce Gantt assignments, or increase Available Hours
Imported project has wrong dates Asana date format differs from expected format Edit the project after import; Asana uses MM/DD/YYYY or YYYY-MM-DD formats
Save badge shows "Error" Network issue or database connection problem Refresh the page; if the error persists, check your internet connection
Trends chart shows flat line No data in the selected year Confirm the year selector matches when projects and assignments exist
Team KPI box not clickable No staff assigned to that team Add staff to the team in 👥 Staff → Staff tab
💡

General rule of thumb: If something looks wrong, check the data flow — Settings → Staff → Projects → Gantt → Dashboard. A gap at any step will produce zeros or unexpected values downstream.

Capacitor · User Guide · v2.0
← Return to Dashboard