Employees
Employees are the primary workforce entity in Flowstate. Every full-time or part-time staff member in your engineering organization is represented as an employee record, complete with salary history, team assignments, project allocations, and the metadata needed for accurate cost forecasting.
What an Employee Record Represents
An employee record in Flowstate captures the information needed to answer three questions:
- Who is this person? Name, email, employee ID, job role, manager.
- Where do they work? Team allocations, project assignments, geography.
- What do they cost? Salary, bonuses, work type (which determines overhead), currency.
Flowstate is not an HRIS -- it does not manage payroll, benefits, or compliance. Instead, it consumes workforce data (often synced from an HRIS) and uses it to produce headcount analytics and financial forecasts.
Key Fields
| Field | Type | Description |
|---|---|---|
firstName, lastName | String | The employee's name. |
email | String | Work email address. Used for identity matching during data syncs. |
internalEmployeeId | String | Your organization's internal ID for this employee (e.g., "EMP-4821"). |
startDate | Date | The date the employee joined the organization. |
endDate | Date | The date the employee left (or will leave). null for active employees. |
noticeDate | Date | The date the employee gave notice of resignation. Useful for attrition planning. |
managerId | ID | Reference to another employee who is this person's manager. |
jobRoleId | ID | Reference to a Job Role (e.g., "Senior Engineer"). |
workTypeId | ID | Reference to a Work Type that determines the overhead multiplier. |
geographyId | ID | Reference to a Geography for location-based calculations. |
defaultCurrencyCode | String | ISO 4217 currency code for this employee's salary (e.g., "USD", "GBP"). |
Active vs Departed Employees
An employee is considered active if their endDate is null or falls in the future. An employee is departed if their endDate is in the past.
Departed employees remain in the system for historical reporting. They still appear in cost forecasts for periods when they were active, but they are excluded from headcount counts for future periods.
The noticeDate field captures when an employee gave notice of resignation. This is distinct from endDate -- an employee may give notice weeks or months before their actual departure. Flowstate uses this field to flag employees who are in their notice period, helping managers plan for upcoming transitions.
TIP
When an employee departs, their team and project allocations are automatically end-dated. You do not need to manually remove allocations for departed employees.
The Manager Hierarchy
The managerId field creates a self-referencing hierarchy within the employee table. Each employee can have one manager, who is themselves an employee record. This creates a tree structure that represents your reporting lines.
CTO (managerId: null)
--> VP Engineering (managerId: CTO)
--> Engineering Manager A (managerId: VP Eng)
--> Senior Engineer 1 (managerId: EM A)
--> Senior Engineer 2 (managerId: EM A)
--> Engineering Manager B (managerId: VP Eng)
--> Engineer 3 (managerId: EM B)The manager hierarchy is used for:
- Organizational charts in the Flowstate UI
- Roll-up reporting (a manager's total cost includes their direct reports)
- Access control in some configurations (managers can view their team's data)
Team Allocations
Employees are assigned to teams through team allocations. Each allocation specifies:
| Field | Description |
|---|---|
teamId | The team the employee is allocated to. |
fte | The FTE (full-time equivalent) value, a decimal between 0 and 1. An employee at 1.0 FTE is fully dedicated to that team. An employee at 0.5 FTE splits their time equally between two teams. |
startDate | When this allocation begins. |
endDate | When this allocation ends. null for open-ended allocations. |
An employee can have multiple concurrent team allocations, but their total FTE across all allocations should not exceed 1.0.
WARNING
Flowstate does not enforce a hard cap of 1.0 FTE across allocations. Over-allocation (total FTE exceeding 1.0) is permitted but will be flagged in the UI as a warning. This flexibility is intentional -- during planning, it is common to temporarily over-allocate while finalizing team compositions.
Project Allocations
Employees can also be allocated directly to projects. Project allocations work the same way as team allocations -- each has an FTE value, a start date, and an optional end date. Project allocations are used to:
- Track which individuals are working on specific projects
- Attribute employee costs to projects for financial reporting
- Plan resource assignments in upcoming scenarios
See the Assignments API reference for details on managing allocations programmatically.
Salary Tracking
Employee compensation is tracked through salary adjustment records. Each salary adjustment captures a point-in-time salary change:
| Field | Description |
|---|---|
amount | The annual salary amount. |
currencyCode | The currency of the salary (may differ from defaultCurrencyCode if the employee relocated). |
effectiveDate | The date this salary takes effect. |
Flowstate maintains a full salary history. When calculating costs for a specific period, it uses the salary that was in effect during that period. If an employee received a raise mid-year, the forecast reflects the old salary for months before the raise and the new salary for months after.
Bonuses
Bonuses are tracked separately from salary. Each bonus record has an amount, currency, and date. Unlike salary costs, bonuses are not FTE-prorated -- a bonus is attributed in full to the period in which it falls, regardless of how the employee's FTE is allocated across teams.
How Employee Costs Flow
Understanding the cost calculation chain for employees is essential for interpreting forecasts correctly:
Annual Salary
|
v
Daily Rate = Annual Salary / Working Days in Year
|
v
Monthly Cost = Daily Rate x Working Days in Month
|
v
Prorated Cost = Monthly Cost x FTE Allocation
|
v
With Overhead = Prorated Cost x (1 + Overhead %)
|
v
Total Cost = With Overhead + Bonuses (if any in this period)The overhead percentage comes from the employee's Work Type. Different work types can have different overhead rates to account for benefits, taxes, equipment, and other non-salary costs that vary by employment classification.
The working days calculation is affected by the employee's Geography, which determines the local holiday calendar and standard working days per year.
Currency conversion happens at the beginning of the chain. If the employee's salary currency differs from the organization's reporting currency, Flowstate uses the configured Exchange Rate to normalize the salary before further calculations.
TIP
To see the exact cost breakdown for an employee, open their detail page in the Flowstate UI and navigate to the "Cost" tab. This shows each step of the calculation chain with the values used.
Related Documentation
- API Reference: Employees -- REST API endpoints for managing employee records
- Vacancies -- How open positions become employees
- Contractors -- The alternative workforce model with different cost rules
- Teams -- How employees are organized into teams
- Work Types -- Employment classifications and overhead percentages
- Exchange Rates -- Currency conversion for multi-currency organizations
- Scenarios & Plans -- Modeling employee changes in what-if scenarios