How projects work
How projects, contract periods, charge codes, and funding fit together to drive timekeeping.
A project is how BadgeOut models a contract you're tracking time and spend against. It's the top of a small hierarchy that decides who can charge what, when, and how the hours roll up into funding and reports. Set this structure up once and the rest of the product (timesheets, approvals, and reports) has something to hang on to.
This page is the map. The pages that follow walk each piece in order.
The pieces
| Piece | What it is |
|---|---|
| Project | A contract you're managing, identified by a name and contract number. It owns one or more contract periods. |
| Contract period | A span of the contract's period of performance: a base period or an option year. It carries its own start and end dates and the direct charge codes scoped to it. |
| Charge code | A bucket hours are recorded against. Direct codes are scoped to a contract period; indirect codes (PTO, overhead) belong to the organization, not a period. |
| Charge code assignment | A member's authorization to charge one direct code, carrying their hour allocation, bill rate, and the date their window opens. |
| Funding tranche | An increment of funding obligated to a contract period, usually a contract modification. The period's funded amount is the sum of its tranches. |
How the pieces fit together
The hierarchy nests top to bottom:
- A project holds one or more contract periods.
- Each contract period holds the direct charge codes scoped to it, and the funding obligated to it.
- Each direct charge code holds the assignments that say which members may log to it.
That chain is also what authorizes timekeeping. A member can log direct time to a charge code only when both are true:
- They hold an open assignment to that code.
- The day they're logging falls on or after the assignment's start date, inside its window.
Indirect codes work differently: access to PTO and overhead is granted by role, so those don't need a per-member assignment. When a member says an expected code is missing, it's almost always because the assignment doesn't exist yet or its start date is later than the day they're trying to fill.

Contract periods are not timesheet periods
Two different things share the word "period," so it's worth separating them early:
- A contract period is a span of a contract's period of performance, measured in years (a base period, then option years).
- A timesheet period is a pay-period your team files against, measured in weeks or a month, set by your timesheet cadence.
A single contract period spans many timesheet periods. When this section says "period," it means the contract period.
Where projects live
Projects sit in the Setup menu in the top header, alongside Charge Codes and Reports. Setting up and editing the structure (projects, periods, codes, funding, and assignments) is an administrator action. Members never see this area; they only see the charge codes you've assigned them, on their timesheet.