Capacity Contracts
Clients buy a point allowance per quarter. Every ticket gets a size class before work starts, and the client agrees to it.
With capacity contracts you bill ongoing work in points instead of hours. A client buys a fixed point allowance per quarter. Every ticket on their projects gets a size class with a fixed point value before work starts, and the client agrees to that class. The price is settled before anyone does the work.
- Points are the client's currency. They see classes, points and what is left of their quarter.
- Hours stay internal. Your team keeps tracking time, so you can measure what a class really costs.
- Invoicing happens outside Spedy. Spedy records what was agreed and what was spent.
Good to know: As long as you don't create a contract and attach a project to it, nothing changes. Projects without a contract keep running on hours, including Time & Budget.
Where to find it
Settings → Capacity contracts, with three tabs:
| Tab | Contents |
|---|---|
| Contracts | All contracts in your organization. Click one to open its contract page. |
| Classes | Your organization's size-class catalogue |
| Packages | Templates for new contracts |
Viewing the page requires contracts:view. Creating, editing and booking points requires contracts:manage.
Setting it up
1. Review the classes
On first use Spedy seeds five classes with Fibonacci points:
| Class | Points |
|---|---|
| XS | 1 |
| S | 3 |
| M | 8 |
| L | 21 |
| XL | 55 |
For each class you maintain points, a single price (for tickets on projects without a contract) and hours (internal). Names, values and order are yours to change, and you can add more classes. The order is the ladder a disputed class is downgraded along.
A class that has been used on a ticket can't be deleted, only retired. New point values apply to future sizings. Whatever a client already agreed to keeps its value.
2. Create packages
A package is a template with:
- Points per quarter
- Tickets in progress (how many tickets can be in progress at once)
- Free classes (delivered without costing points)
- Delivery time per class in working days
Creating a contract copies these values. Editing a package later never touches a running contract.
3. Create a contract
Under Contracts → Create contract:
- Pick a package (or set every value yourself without one).
- Name the package tier. That's what the package is called for the client.
- Set the contract start. Quarters follow this date, not the calendar.
- Optionally enter the Capacity package (€ / month). It is only used for internal reporting; Spedy invoices nothing.
- Under More settings, adjust if needed: tickets in progress, free classes, warranty (days), monthly cap (%), bonus (%), free downgrades per quarter, minimum term and Time on sized tickets is non-billable.
4. Attach projects
On the contract page, add the client's projects in the Projects card. The contract only takes effect from here: tickets get sized, and the client no longer sees hours. A project can belong to one active contract only.
Tickets already in progress before the project was attached finish under the previous arrangement. They need no size class and don't count toward the concurrency limit.
Under Operating positions you can record recurring items such as hosting or maintenance. They are informational only.
5. Request acceptance (optional)
Above the contract list, Request acceptance sets the status at which the client is asked to accept a delivery, for example "Ready for live". Without a choice, any final status counts.
Sizing a ticket
Open a ticket on a contract project and switch to the Properties tab. The Size class card lives there.
- Propose a size class: pick a class and write a rationale. Only your team can propose. You can also set the class when creating a ticket.
- The client gets a notification and an email and can Agree to the class or Object. Anyone on the client side with access to the project can agree.
- Agreeing reserves the points. Only now can the ticket move into an active status.
- When the work is done, the client is asked to accept it. Record acceptance consumes the points.
Important: Moving a ticket to "Done" is not an acceptance. The reservation stays open until the client (or your team) records the acceptance.
Objections and downgrades
If the client objects, the ticket stays blocked. If you can't settle it, use Downgrade to the lower class: the next smaller class applies. How often that is possible per quarter is set on the contract (default: once).
Change the class, take it off the contingent, do not charge
- Change the size class: the old reservation goes back, the new class goes to the client for agreement again. A ticket in progress pauses until it's agreed.
- Take off the contingent: returns an open reservation. The ticket can be sized again afterwards.
- Do not charge: for a ticket that has already been accepted. Spedy books a credit; the original charge stays visible.
Deleting a sized ticket returns its reservation automatically.
Free work
Classes the package marks as free are delivered at zero points. They stay visible in the ledger with their point value, so you know how much was delivered free. The ledger also knows warranty and emergency as zero-point reasons; for now they are booked through the API (POST …/sizing/delivery with outcome), not yet from the card.
Limits
Concurrent tickets
When the limit is reached, the card says Concurrency limit reached before the status change is refused. Override the limit lets that one ticket start anyway. The reason goes into the activity history and is hidden from clients. A ticket without an agreed class still can't start, override or not.
Delivery time
When a ticket goes into progress, the class's delivery time in working days starts. While the ticket sits in a blocked status, the clock pauses and the date moves out. The card always shows the real date: Committed by ….
Allowance used up
The client can still size and agree. The ticket is flagged Over allowance. Before acceptance, someone with contracts:manage uses Sign off over allowance to record how it will be settled, for example extra points, next quarter or goodwill. The client is notified of the decision.
Point movements (ledger)
Every movement is recorded and never overwritten: allocation, reserved, accepted, released, included, warranty, emergency, extra purchase, bonus, adjustment, expired. Every balance you see is the sum of these movements.
The Time range filter offers this month, last month, current quarter, last quarter, this year, all and a custom From – to range. Below it, Spedy adds up the shown movements by kind.
On the contract page you can book extra points and close a period early. Unused points expire at the end of the quarter. Open reservations stay and are charged to the quarter that made them. Two weeks before a quarter ends, Spedy produces a statement with deliveries, movements and the remaining balance.
Time and MOCO
Time tracking keeps working on contract tickets. With Time on sized tickets is non-billable (default: on), every entry on a sized ticket is flagged non-billable and sent to MOCO that way. Turn it off, and the class's internal hours act as a fixed-price budget: only hours beyond it are non-billable.
What the client sees
- Contract in the navigation: allowance, consumed, reserved and remaining for the current quarter, the sized tickets, covered projects, operating positions and the point movements.
- The Size class card on the ticket, with class, points, rationale and delivery date.
- A chip in the board header such as 42 points left.
A client on a contract project sees hours nowhere, including the API. Contract projects don't appear under Time & Budget. If the client also has projects without a contract, those stay there. Team members without contracts:view also find the contract under Contract in the navigation.
Common questions
- The ticket won't start: the class hasn't been agreed yet, or the concurrency limit is reached. The card says which.
- The acceptance button is disabled: the ticket is over the allowance. Someone with
contracts:managehas to record how it will be settled first. - A project can't be attached: it already belongs to another active contract.
- Ending a contract: open reservations are returned and the projects go back to hours. The history stays readable.