Appearance
Retainers
Retainers are ongoing client relationships billed at a fixed monthly fee for a set number of hours. VERA's job with retainers is to keep you honest on pace — not just over-spending, but under-delivering too.
How retainers work
A retainer project has a budget_hours value that represents the annual hours committed to the client (e.g. 480 h/yr = 40 h/month).
Unlike Fixed Price or T&M, retainer revenue is not calculated per entry. The client pays a monthly fee regardless of exact hours logged. What matters is whether the agency is delivering what was promised.
Underspend is as problematic as overspend. If the agency logs 20 of a 40-hour monthly budget, the client paid for 40 hours of value and received 20. That's a relationship problem. VERA flags both directions.
Burn rate
Burn rate is the pace at which a retainer is consuming its monthly budget.
pace_per_day = hours_logged ÷ days_elapsed
projected_eom_hours = pace_per_day × days_in_monthVERA compares the projected end-of-month total against the monthly budget and categorises it:
| Status | Projected utilisation | What it means |
|---|---|---|
| 🚨 Critical overpace | > 150% | You'll burn 3× the budget at this rate |
| ⚠️ Warning overpace | 110–150% | Trending 20–50% over budget |
| ✅ On track | 90–110% | Right on target |
| ⚠️ Warning underpace | 50–90% | Using less than planned — may underdeliver |
| 🚨 Critical underpace | < 50% | Leaving major value unused — client paid for work not delivered |
Envelope-aware forecast
VERA can project retainer hours two ways:
1. Pace-based (historical only)
projected_eom_hours = pace_per_day × days_in_monthBased purely on how fast hours have been accumulating. Accurate if the rest of the month looks like the past.
2. Envelope-aware (recommended)
forecast_with_allocations = hours_logged + allocated_remainingWhere allocated_remaining is the total of active envelopes on the project.
This is more accurate when Managers actively maintain envelopes. If your team has 12 hours remaining in their envelopes and has already logged 25 of 40 hours, the envelope-aware forecast shows 37 hours — right on target.
When to prefer each:
- Use envelope-aware when Managers consistently maintain envelopes
- Use pace-based when envelopes are sparse or rarely updated
Retainer workflow
When asked about a retainer's status, VERA always follows this sequence:
get_project_info— verify the project type is Retainerget_retainer_status— fetch current month burn rate, pace, forecast, and unused value
This is mandatory. Never use get_project_status (task budgets) for retainers — it's misleading because retainers are governed by monthly burn rate, not task-level caps.
What VERA shows in a retainer summary
When you ask "how is Nike tracking this month?":
- Hours logged vs. monthly budget
- Days elapsed in the current month
- Projected end-of-month total (pace-based)
- Forecast with allocations (if allocations exist)
- When budget will be exceeded (if overpace)
- Unused dollar value (if underpace):
unused_hours × billing_rate - Status with urgency emoji
Retainer budget field
The budget_hours field on a Retainer project stores the annual total (e.g. 480 for 40/month). VERA divides by 12 internally to get the monthly cap for burn rate calculations.
Morning summary (Managers/Owners)
The morning reminder includes retainer status for all assigned retainers. Critical and warning items are surfaced automatically — you don't need to ask.
Multiple retainers
get_pm_retainer_summary gives a Manager a rolled-up view of all their retainer projects — status, pace, and utilisation for each. Use this for a quick portfolio check without drilling into each project individually.
Further reading
- Retainers Without Timely Data Are Just Guesses — why retainer health monitoring only works when hours are logged in the moment they happen