Skip to content

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 (planned or active)
  • 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:

StatusRevenueMeaning
planned$0Backlog — not yet started
activeAccruingWork 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

  1. Create the Agile parent: create_project "Acme App" as Agile
  2. VERA immediately offers to set up Sprint 1
  3. Provide Sprint 1's contract value and hours budget: create_sprint
  4. Team logs time against Sprint 1
  5. When ready for the next sprint: create_sprint again — sprint number auto-increments
  6. 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 PriceAgile
StructureSingle projectParent + numbered sprints
Scope changeEdit the projectAdd a new sprint
RevenueOne calculationPer-sprint calculations
Contract valueSingle totalPer-sprint
Historical viewSingle timelineSprint-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.