Skip to content

Contractors

Contractors represent external individuals or firms that contribute to your engineering organization on a contractual basis. They are tracked separately from employees because their cost structure, lifecycle, and organizational relationship differ in important ways.

What a Contractor Record Represents

A contractor in Flowstate is any external resource that is not on your payroll -- freelance engineers, consultants, staffing agency placements, or entire contracting firms. Flowstate tracks their rates, team assignments, project allocations, and contract timelines to give you a complete picture of your blended workforce costs.

Unlike employees, contractors are compensated at a defined rate (hourly, daily, or monthly) rather than an annual salary. They do not receive bonuses, and critically, no overhead percentage is applied to contractor costs. This reflects the reality that contractors typically handle their own taxes, benefits, and equipment.

Key Fields

FieldTypeDescription
nameStringThe contractor's name (individual) or company name (firm).
emailStringContact email address.
contractorTypeEnumEither individual (a person) or company (a firm). See Contractor Types.
companyIdIDFor individual contractors, a reference to the parent company contractor record. null for company-type contractors and unaffiliated individuals.
rateTypeEnumHow the contractor is billed: hourly, daily, or monthly.
rateDecimalThe monetary rate per unit (per hour, per day, or per month).
currencyCodeStringISO 4217 currency code for the rate (e.g., "USD", "EUR").
startDateDateThe date the contract begins.
endDateDateThe date the contract ends. null for open-ended engagements.
managerIdIDReference to the employee who manages this contractor.

Contractor Types

Flowstate distinguishes between two types of contractors:

Individual Contractors

An individual contractor is a single person performing work for your organization. They may be independent freelancers or employees of a contracting firm. If they belong to a firm that is also tracked in Flowstate, the companyId field links them to their parent company record.

Company Contractors

A company contractor represents an entire firm -- a staffing agency, consultancy, or outsourcing partner. Company contractors serve as a grouping mechanism: individual contractors who work for that firm can be linked via companyId, giving you visibility into how much you spend with each vendor.

Acme Consulting (company)
  --> Jane Doe (individual, companyId: Acme Consulting)
  --> John Smith (individual, companyId: Acme Consulting)

Independent Freelancer (individual, companyId: null)

TIP

Even if you only have one individual from a contracting firm, it is worth creating the parent company record. This makes it easy to add more individuals from the same firm later and to report on vendor-level spend.

Rate Tracking

Contractor compensation is defined by three fields working together:

FieldExampleResulting Cost
rateType: "hourly", rate: 150, currencyCode: "USD"$150 per hour
rateType: "daily", rate: 1200, currencyCode: "GBP"1,200 GBP per day
rateType: "monthly", rate: 15000, currencyCode: "EUR"15,000 EUR per month

Rate Adjustments

Like employee salaries, contractor rates can change over time. Flowstate tracks rate changes through rate adjustment records. Each adjustment captures a new rate, rate type, currency, and effective date.

When calculating costs for a specific period, Flowstate uses the rate that was in effect during that period. If a contractor's daily rate increased from $1,000 to $1,200 on March 1, the forecast reflects $1,000/day for January-February and $1,200/day from March onward.

Team and Project Allocations

Contractors are assigned to teams and projects through the same allocation mechanism used for employees. Each allocation specifies:

FieldDescription
teamId or projectIdThe team or project the contractor is allocated to.
fteThe FTE value (0 to 1). A contractor at 0.5 FTE contributes half their working capacity.
startDateWhen this allocation begins.
endDateWhen this allocation ends. null for open-ended allocations.

A contractor can be allocated to multiple teams and projects simultaneously, with FTE values that should sum to no more than 1.0.

How Contractor Costs Differ from Employee Costs

The most important distinction between contractor and employee cost calculations is the absence of overhead:

Employee cost chain:

Salary --> Currency Conversion --> Working Days Proration --> FTE Allocation --> Overhead --> Bonuses = Total

Contractor cost chain:

Rate --> Currency Conversion --> Working Days Proration --> FTE Allocation = Total

There is no overhead multiplier applied to contractor costs. This reflects the fact that contractors are not eligible for benefits, employer tax contributions, or other overhead items that are captured by the Work Type overhead percentage for employees.

There are no bonuses for contractors. Compensation is entirely rate-based.

WARNING

Because overhead is not applied, comparing raw contractor rates to employee salaries can be misleading. A contractor at $1,200/day may appear more expensive than an employee earning $250,000/year, but once you apply 30% overhead to the employee, the total cost differential narrows significantly. Flowstate's forecasts account for this automatically.

The Contractor Lifecycle

A contractor's active period is defined by their startDate and endDate:

StateConditionForecast Impact
Not yet startedstartDate is in the futureIncluded in forecasts for future periods after startDate.
ActivestartDate is in the past, endDate is null or in the futureIncluded in current and future forecasts.
EndedendDate is in the pastExcluded from future forecasts. Included in historical periods when active.

Unlike employees, contractors do not have a noticeDate field. Contractor departures are typically planned -- the endDate is set when the contract is signed or renewed, rather than discovered through a resignation.

Managing Contractors

The managerId field on a contractor record points to the employee who is responsible for managing the engagement. This is typically the engineering manager or team lead who works most closely with the contractor. The managing relationship is used for:

  • Filtering contractors by responsible manager in the UI
  • Roll-up reporting (a manager's total cost includes contractors they manage)
  • Routing contract renewal notifications
  • API Reference: Contractors -- REST API endpoints for managing contractor records
  • Employees -- The internal workforce model with different cost rules
  • Vacancies -- Modeling positions that may be filled by employees or contractors
  • Teams -- How contractors are organized into teams
  • Assignments API -- Managing contractor allocations programmatically
  • Exchange Rates -- Currency conversion for multi-currency contractor rates
  • Scenarios & Plans -- Modeling contractor changes in what-if planning

Flowstate Documentation