Appearance
Agile & Sprints
Agile is a project type for iterative delivery. Work is organised into numbered sprints, each with its own contract value and hours budget.
Structure
An Agile project has two levels:
Parent project — a named container. No contract value, no budget, no revenue. Just a namespace.
Sprints — child projects attached to the parent. Each sprint has:
- A contract value (agreed with the client)
- An hours budget (the work estimate)
- A status (
plannedoractive) - A sprint number (auto-incremented)
Revenue recognition
Revenue is per-sprint and follows a Fixed Price model:
Revenue = (hours_logged ÷ hours_budget) × contract_value
capped at contract_value
when sprint_status = 'active'Planned sprints ($0 revenue) — The sprint is in the backlog. Work has not started. No revenue is recognised regardless of any hours logged.
Active sprints (accruing) — Work is underway. Revenue accrues continuously as hours are logged, up to 100% of contract_value.
Sprint statuses
There are exactly two statuses:
| Status | Revenue | Meaning |
|---|---|---|
planned | $0 | Backlog — not yet started |
active | Accruing | Work in progress |
There are no other states. No "completed," "archived," or "on hold." When a sprint is done, log the remaining hours and start the next sprint. If you stop work mid-sprint, keep it active — the revenue recognition reflects actual completion.
To change status from planned to active, use update_sprint_status. This is done directly without a confirmation prompt.
Sprint contract values
Always ask explicitly for each sprint's contract value. Never derive it from the parent project or copy it from a previous sprint. Sprint scope and value change — even two weeks apart. VERA will always prompt for this if you don't provide it.
Creating a sprint sequence
- Create the Agile parent:
create_project "Acme App" as Agile - VERA immediately offers to set up Sprint 1
- Provide Sprint 1's contract value and hours budget:
create_sprint - Team logs time against Sprint 1
- When ready for the next sprint:
create_sprintagain — sprint number auto-increments - Activate each sprint when work begins:
update_sprint_status
Sprint numbers are managed by VERA. Don't specify them manually.
Agile summary
get_agile_summary shows all sprints under a parent Agile project:
- Sprint name and number
- Status (planned / active)
- Hours logged vs. hours budget
- Recognised revenue (Owners only)
Use this for a complete view of an Agile project's delivery history and current pipeline.
Work gate
Like T&M, work should stop when a sprint's hours_budget is exhausted. The mechanism isn't a hard lock — VERA won't refuse to log time — but the intent is clear: once the sprint's budget is used, scope for that sprint is complete. Any additional work should be scoped and contracted as a new sprint.
Agile vs. Fixed Price
The main difference:
| Fixed Price | Agile | |
|---|---|---|
| Structure | Single project | Parent + numbered sprints |
| Scope change | Edit the project | Add a new sprint |
| Revenue | One calculation | Per-sprint calculations |
| Contract value | Single total | Per-sprint |
| Historical view | Single timeline | Sprint-by-sprint history |
If a project is genuinely one fixed scope with one contract, use Fixed Price. Use Agile when the client relationship involves iterative contracting and the scope evolves sprint by sprint.