Vacancies
Vacancies represent open positions in your organization -- roles that have been approved but not yet filled. They are the bridge between headcount planning and actual hiring, giving you visibility into the cost impact of planned hires before anyone is onboarded.
What a Vacancy Represents
A vacancy in Flowstate is a position that exists in your organizational plan but does not yet have a person in it. It captures everything you know about the role at the time of planning: what it is, when you expect to fill it, how much it will cost, and which team it belongs to.
Vacancies are essential for accurate forecasting. Without them, your headcount plan only reflects the people you already have -- not the people you intend to hire. By modeling vacancies, Flowstate can project future costs, show you where your teams will grow, and flag budget constraints before they become problems.
Key Fields
| Field | Type | Description |
|---|---|---|
role | String | A descriptive title for the position (e.g., "Senior Backend Engineer"). |
description | String | Additional context about the role, responsibilities, or requirements. |
status | Enum | The current state of the vacancy. See Vacancy Statuses below. |
fte | Decimal | The FTE value of the position (typically 1.0 for full-time, 0.5 for part-time). |
targetStartDate | Date | The date you expect the hire to begin working. Used for cost forecasting. |
targetFillDate | Date | The date you expect to extend an offer. Used for hiring pipeline tracking. |
salaryMin | Decimal | The lower bound of the salary range for this role. |
salaryMax | Decimal | The upper bound of the salary range for this role. |
currencyCode | String | ISO 4217 currency code for the salary range (e.g., "USD", "GBP"). |
filledByLiveEmployeeId | ID | Reference to the employee who was hired into this vacancy. null while open. |
hiringManagerId | ID | Reference to the employee responsible for filling this position. |
Vacancy Statuses
Every vacancy has a status that reflects where it stands in the hiring process:
| Status | Meaning |
|---|---|
open | The position is actively being recruited for. It contributes to future cost forecasts. |
on_hold | Recruiting is paused but the position has not been cancelled. It may or may not appear in forecasts depending on your configuration. |
filled | A candidate has been hired and linked to this vacancy via filledByLiveEmployeeId. The vacancy's forecasted cost is replaced by the employee's actual cost. |
cancelled | The position has been withdrawn. It no longer contributes to forecasts or headcount counts. |
open --> filled
|
v
on_hold --> open
|
v
cancelledTIP
When a vacancy is filled, keep it in the system rather than deleting it. The link between the vacancy and the resulting employee record provides a complete hiring audit trail -- you can trace any employee back to the approved position that led to their hire.
How Vacancies Become Employees
The lifecycle of a vacancy ends when someone is hired into it. In Flowstate, this transition is represented by setting filledByLiveEmployeeId on the vacancy to point to the new employee record.
Once a vacancy is filled:
- The vacancy status changes to
filled. - The vacancy's estimated cost is replaced by the employee's actual cost in all forecasts.
- The vacancy no longer counts toward open headcount.
- The link between the vacancy and the employee is preserved for historical reporting.
This connection is valuable for analyzing hiring outcomes. You can compare the vacancy's salary range against the actual offer, see how long positions took to fill, and track whether target start dates were met.
Salary Range and Cost Estimation
Vacancies use a salary range (salaryMin to salaryMax) rather than a fixed salary for forecasting. Flowstate uses the midpoint of this range as the estimated cost when projecting future expenses:
Estimated Annual Cost = (salaryMin + salaryMax) / 2This estimated cost flows through the same calculation chain as employee costs:
Estimated Salary (midpoint of range)
--> Currency Conversion
--> Working Days Proration (from targetStartDate)
--> FTE Allocation
--> Overhead (based on work type, if assigned)
= Estimated Vacancy CostWARNING
If salaryMin and salaryMax are not set, the vacancy will appear in headcount counts but will not contribute to cost forecasts. Always set a salary range for vacancies that should influence budget projections.
Team Allocations
Like employees and contractors, vacancies are assigned to teams through team allocations. Each allocation specifies which team the vacancy belongs to, the FTE value, and a date range.
A vacancy can be allocated to multiple teams if the role spans team boundaries, though this is uncommon. Most vacancies have a single team allocation at 1.0 FTE.
Team allocations for vacancies serve two purposes:
- Headcount planning: Managers can see upcoming hires for their teams.
- Cost attribution: The vacancy's estimated cost is attributed to the allocated team for budget forecasting.
Vacancies in Scenario Planning
Vacancies are a natural fit for scenario planning. Common patterns include:
- Headcount scenarios: Add vacancies to a draft plan to model the cost of expanding a team, then compare multiple hiring timelines by adjusting
targetStartDatevalues. - Budget scenarios: Set aggressive vs conservative salary ranges across different scenarios to understand the budget envelope.
- Restructuring scenarios: Move vacancies between teams to explore different organizational structures before committing.
Since vacancies exist only as planning artifacts until filled, they are lightweight to create and discard within scenarios.
The Hiring Manager
The hiringManagerId field links a vacancy to the employee responsible for filling it. This is typically the team lead or engineering manager who will manage the new hire. The hiring manager relationship is used for:
- Routing vacancy approvals in the UI
- Filtering vacancies by responsible manager
- Reporting on hiring pipeline by manager
Related Documentation
- API Reference: Vacancies -- REST API endpoints for managing vacancy records
- Employees -- The entity vacancies become when filled
- Teams -- How vacancies are assigned to teams
- Assignments API -- Managing vacancy-team allocations programmatically
- Work Types -- Employment classifications that affect vacancy cost estimates
- Scenarios & Plans -- Using vacancies in what-if planning