Projects
Projects represent work initiatives with timelines, resource requirements, and cost tracking. They are the primary unit for answering the question: "What are we spending engineering capacity on, and how much does it cost?"
What a Project Represents
A project in Flowstate is any piece of work that consumes engineering resources over a defined time period. This could be a product feature, a platform migration, a compliance initiative, or an internal tooling effort. Projects have start and end dates, a status that tracks their lifecycle, and financial data that captures both estimated and actual costs.
| Field | Type | Description |
|---|---|---|
name | string | The display name of the project (e.g., "Billing V2") |
description | string | Free-text description of the project scope and goals |
startDate | date | When the project begins (ISO 8601: YYYY-MM-DD) |
endDate | date | When the project ends, or null for open-ended work |
status | string | Current project status (see below) |
estimatedCost | decimal | Budget estimate for the project |
ownerUserId | string | The Flowstate user responsible for this project |
lifecycleStageId | string | Current stage in the project lifecycle |
Project Status
Every project has a status that reflects where it stands in its lifecycle. Status is a simple enumeration that you set explicitly -- Flowstate does not automatically advance projects through statuses.
| Status | Meaning |
|---|---|
planning | The project is being scoped. Resources may be tentatively assigned. |
active | Work is underway. Resource allocations are firm and costs are accruing. |
completed | The project has been delivered. No further cost accrual. |
on_hold | Work is paused. Existing allocations remain but may not be active. |
cancelled | The project has been abandoned. Allocations should be removed. |
TIP
Use the planning status for projects that are in the proposal or budgeting phase. This lets you model the cost impact of future work without mixing it into active spend reporting.
Lifecycle Stages
While status tracks the operational state of a project, lifecycle stages provide a more granular view of progress within the active phase. Lifecycle stages are a configurable entity -- your organization defines the stages that match your delivery process.
A typical lifecycle stage configuration might look like:
Planning --> Discovery --> Development --> Testing --> Deployment --> CompletionEach project points to a single lifecycleStageId at any given time. As the project progresses, you update this field to reflect the current stage.
See the Lifecycle Stages configuration for setup instructions, or the API reference for managing stages programmatically.
Resource Allocation
Projects consume resources through two allocation mechanisms:
Indirect Allocation (Team-to-Project)
The most common pattern is to allocate team capacity to a project. When the Payments Team assigns 0.5 FTE to "Billing V2", every employee and contractor on that team contributes a proportional share of their cost to the project.
Payments Team (8 engineers)
--> 0.5 FTE allocated to Billing V2
--> 0.3 FTE allocated to Payments Maintenance
--> 0.2 FTE allocated to Tech DebtThis is efficient for teams that split their time across multiple projects, because you manage allocations at the team level rather than per individual.
Direct Allocation (Person-to-Project)
Individual employees and contractors can also be allocated directly to a project, bypassing their team. This is useful for:
- Specialists who contribute to a project outside their team's normal scope
- Cross-functional work where an individual from one team supports another team's project
- Short-term engagements where a full team allocation does not make sense
Both allocation types contribute to the project's total cost calculation.
WARNING
Be careful not to double-count. If an employee is allocated to a team that is allocated to a project, and that same employee is also directly allocated to the same project, both allocations will contribute to the project cost.
Project Cost Calculation
Flowstate computes project cost by summing all resource allocations that flow into the project:
Project Cost = Sum(team-to-project allocations x team cost %)
+ Sum(direct employee allocations x employee cost)
+ Sum(direct contractor allocations x contractor cost)For team-to-project allocations, the team's total cost is prorated by the FTE fraction allocated to the project. For direct allocations, the individual's cost is prorated by their FTE on the project.
All costs are converted to the organization's reporting currency before summation. See the Exchange Rates guide for how currency conversion works.
Value Streams
Projects can be grouped into value streams -- strategic categories that represent the business capabilities your engineering organization supports. Examples might include "Customer Growth", "Platform Reliability", or "Compliance & Security".
Value streams let you answer questions like: "How much are we spending on growth-related projects vs platform work?" They provide a layer of strategic grouping above individual projects.
See Value Streams configuration for setup instructions.
Cost Centres
Projects can also be linked to cost centres for financial categorization. Cost centres typically align with your finance team's chart of accounts -- for example, separating CapEx (capitalizable development) from OpEx (operational maintenance).
A single project can be split across multiple cost centres through project-cost-centre bindings. For example, a project might be 70% CapEx (new feature development) and 30% OpEx (maintenance of existing functionality).
See the Cost Attribution guide for how cost centres interact with the broader cost calculation chain.
Project Drivers
Drivers are business justifications that explain why a project exists. They represent the strategic rationale behind resource allocation -- compliance requirements, revenue targets, customer commitments, technical debt reduction, and so on.
Projects can have multiple drivers tagged to them, and a single driver can be associated with multiple projects. This many-to-many relationship lets you answer: "How much are we spending on compliance-driven work across all projects?"
See the Drivers API reference for managing drivers programmatically.
The Roadmap View
Flowstate's roadmap view displays projects on a timeline, grouped and filtered by status, value stream, team, or lifecycle stage. This gives engineering leaders a visual overview of what is in flight, what is coming up, and how resources are distributed across the portfolio.
The roadmap is read-only in the API -- it is a UI-level visualization built on top of project data. To affect what appears on the roadmap, create and update projects and their allocations through the API.
Next Steps
- API Reference: Projects -- Create, read, update, and delete projects via the REST API
- Teams -- Understand how teams allocate capacity to projects
- Cost Attribution -- Follow the full cost calculation chain
- Value Streams configuration -- Set up strategic project groupings
- Cost Centres configuration -- Configure financial categorization