Skip to content

Ensemble

Scheduled Sep 14, 2026

One worker record, effective-dated, in your database.

Replaces

  • Workday HCM · Workday, Inc. — no published list price
  • BambooHR · BambooHR LLC $17 per seat per month (Pro), about $81,600/yr at 400 seats

Rented, per year

$81,600

BambooHR list price at 400 seats.

Owned, per year

$8,640

AWS infrastructure only. Azure is $9,300.

Build

16 weeks

3 engineers. To parity on the ten core features above, including migration of full worker history with effective dates preserved, absence balances reconciled to the day of cutover, and a payroll feed run in parallel with the incumbent for two full cycles before switchover.

Difficulty

5/5

Among the hardest in Techtons. Read the parity table closely.

Reference organisation: 4,000 employees across 6 countries, ~11 years of history, 80 GB of worker documents, single region, prod + non-prod. 3-year Compute Savings Plan on Fargate, 3-year reservation on Container Apps and PostgreSQL Flexible Server. Includes per-jurisdiction KMS keys and immutable document retention at statutory periods. Excludes payroll provider fees, vendor support plans and LLM gateway token spend. Figures are infrastructure only and exclude the build.

What it is

Ensemble is a core HRIS: the worker record, the org structure and its history, positions and job architecture, absence and leave accrual, and compensation with banded ranges and review cycles. It is for organisations of 1,000 to 20,000 employees that need a trustworthy system of record and a clean outbound feed to payroll, not a suite that also wants to be their planning, procurement and finance platform. Ensemble is bitemporal from the first table, so the answer to 'what did we believe about this person on 3 March' is a query rather than an archaeology project.

Why this one stops making sense

  • Workday publishes no price at all. Renewals are negotiated against a number the vendor holds and you do not, and the implementation partner typically costs two to three times the first year of licence.
  • BambooHR Pro is $17 per employee per month. At 4,000 employees that is $816,000 a year for a worker record and a leave calendar.
  • Most HCM suites are bought for the core and paid for by the modules — recruiting, learning, planning, expenses — each of which is a better product bought or built separately.
  • Your org structure, compensation bands and tenure history are the inputs to every workforce decision you make, and they sit behind an integration layer you pay per call to use.
  • Configuration is done in a vendor's tenant by a certified consultant. Nobody on your team can read the current state of the rules, let alone diff two versions of them.

What ships

  • Bitemporal worker record: every field carries an effective date and a recorded date, so retroactive corrections are visible and reversible
  • Position-based org structure with supervisory hierarchy, matrix reporting and dated reorganisations
  • Job architecture: families, profiles, levels and the mapping from position to level
  • Absence and leave with accrual rules, carry-over, statutory entitlement per country and balance projection
  • Compensation with banded ranges by level and location, compa-ratio and range-penetration reporting
  • Compensation review cycles with budget allocation, manager worksheets and multi-level approval
  • Self-service and manager-service for the fields workers should own, with approval where they should not
  • Outbound payroll feed with a stable contract, change-only deltas and a reconciliation report
  • Document management for contracts and right-to-work evidence, with retention rules per jurisdiction
  • Headcount, attrition, span-of-control and tenure reporting straight from the warehouse schema

Data model

WorkerEmploymentPositionOrgUnitJobProfileCompensationPlanPayComponentAbsenceTypeAbsenceRequestAccrualBalanceWorkerDocumentAuditEvent

Stack

frontend
Next.js 15 App Router + Tailwind + TanStack Query, with an as-of date picker that re-renders the whole record at any past point
backend
NestJS on Node 22 — REST, plus an accrual engine and a payroll feed builder
database
PostgreSQL 16 with bitemporal tables using tstzrange columns and exclusion constraints so overlapping validity is impossible
cache
Redis 7 for org hierarchy materialisation, permission caches and self-service session state
queue
BullMQ for accrual runs, payroll feed generation, document retention sweeps and notification cadence
auth
OIDC against the customer IdP; Ensemble is usually the upstream source for Tenure's lifecycle events
search
PostgreSQL tsvector across workers, positions and documents
ai
Optional policy question answering over your own HR policy corpus through an LLM gateway, with citations and no generative advice on individual cases

Parity, honestly

What we match, and what we do not.

The rows marked No are the important ones. If one of them is the reason you bought Workday HCM, keep buying it — and we will tell you that on the first call rather than the fifth month.

CapabilityWorkday HCMOursNote
Effective-dated worker record and org historyYesYesEnsemble is bitemporal, which is stronger than effective-dated: it distinguishes when something was true from when you learned it.
Position management and supervisory hierarchyYesYes
Absence, accrual and statutory leaveYesYesRules are code with a test suite per jurisdiction you operate in.
Compensation bands, compa-ratio and review cyclesYesYes
Self-service and manager-serviceYesYes
Outbound payroll integrationYesYesOne properly specified feed per payroll provider, with reconciliation, rather than a generic connector nobody owns.
Native payroll in 90+ countriesYesNoWorkday runs certified payroll with statutory filing in dozens of jurisdictions and keeps it current as tax law changes, every year, forever. Ensemble does not run payroll and will not. Keep your payroll provider and feed it properly.
Continuously maintained statutory and regulatory contentYesNoWorkday and BambooHR employ compliance teams tracking employment law changes across every country they operate in, and ship those updates without you asking. Ensemble's leave and retention rules are code we write once with you; keeping them current as law changes is your obligation or a Conseiltek Run line item, and that is a genuine ongoing cost the licence was previously absorbing.
Recruiting, learning, expenses and planning in one suiteYesPartialShortlist covers applicant tracking, Curriculum covers learning and Tally covers expenses. They share an identity model but they are separate systems, deliberately.
Benefits administration with carrier connectionsYesPartialEnsemble holds benefit elections and can export to a broker. It does not maintain carrier EDI feeds.
Vendor-run SOC 1 and SOC 2 reports for your financial auditYesNoAn HRIS feeding payroll usually falls in scope for financial audit. Ensemble inherits your own control environment, and your auditors will test your controls rather than reading a vendor report.
Direct SQL access for people analyticsNoYesA read-only, PII-masked schema your analysts query without an integration ticket or a report-builder licence.
Mobile self-serviceYesPartialInstallable PWA covering time off, directory and payslip links. Store-listed native apps are a separate engagement.

Reference architecture

Built twice, on purpose.

Every application in Techtons ships with a production architecture for AWS and one for Azure, using the same diagram grammar so you can read them side by side. Your cloud, your account, your bill.

Amazon Web Services

Compute
ECS Fargate services (api, accrual, feed, worker) behind an ALB
Data
Aurora PostgreSQL Multi-AZ with a reader for analytics, ElastiCache Redis
Storage and edge
S3 for worker documents with a KMS CMK per jurisdiction and Object Lock on retention-bound records
Identity
Cognito federated to the customer IdP
Observability
OpenTelemetry to CloudWatch and X-Ray, with payroll feed reconciliation variance as an alarm
Infrastructure as code
Terraform, one module per environment, remote state in S3 with a DynamoDB lock

Services

ECS FargateALBAurora PostgreSQLElastiCache RedisS3 Object LockKMSCloudFrontCognitoSecrets ManagerEventBridgeSQSSESTransfer FamilyCloudWatch

The decision worth arguing about

The non-obvious decision is choosing bitemporal tables in Postgres over event sourcing, which is the architecture every senior engineer proposes for an HRIS and which is genuinely a better fit for the problem on paper. Event sourcing gives you a perfect audit trail for free, and HR is full of retroactive corrections — a promotion backdated six weeks, a leave type reclassified after a tribunal, a cost centre change applied to the wrong quarter. The reason we do not use it is that every real question an HR system gets asked is a point-in-time projection across many entities at once: headcount by cost centre as of 31 March, as we understood it on 31 March. Answering that from an event log means replaying to a point for every entity in the query, and it turns a 40ms report into a 4-second one. Ensemble instead stores two tstzrange columns per row with a GiST exclusion constraint, so an as-of query is a plain WHERE clause with an index behind it. The trade is that a retroactive correction rewrites ranges rather than appending, so downstream consumers who have already been fed the old values must be re-fed. The payroll feed therefore carries a correction channel as a first-class message type rather than assuming append-only, which is more work up front and considerably less at month-end close.

Microsoft Azure

Compute
Azure Container Apps (api, accrual, feed, worker) with a Container Apps job for the nightly accrual run
Data
Azure Database for PostgreSQL Flexible Server zone-redundant with a read replica for analytics, Azure Cache for Redis
Storage and edge
Blob Storage with per-jurisdiction containers, customer-managed keys and immutable policy on retention-bound documents
Identity
Microsoft Entra ID, with Ensemble publishing worker events to Entra as the authoritative attribute source
Observability
Azure Monitor with Application Insights, payroll variance as a Log Analytics alert rule
Infrastructure as code
Bicep in an azd-compatible layout

Services

Container AppsContainer Apps JobsFront Door StandardPostgreSQL Flexible ServerCache for RedisBlob StorageEntra IDKey VaultEvent GridService BusCommunication ServicesLog Analytics

The decision worth arguing about

The Azure shape diverges on the payroll feed, and the reason is duplicate detection. A payroll file sent twice pays people twice, and the second most common cause of that is not a bug but a retry — a network blip during upload, an operator re-running a job they thought had failed. Service Bus offers built-in duplicate detection with a configurable window, and the obvious move is to switch it on and stop worrying. The catch is that the maximum window is seven days, and monthly payroll cycles mean a duplicate can plausibly arrive 30 days later when someone reprocesses a period. Ensemble therefore does not rely on the broker: every feed batch carries a deterministic idempotency key derived from pay period, entity and content hash, recorded in Postgres under a unique constraint with no expiry, and Service Bus duplicate detection is enabled at seven days purely as a cheap first filter. The trade is an extra database round trip per batch and a table that grows forever, which at 4,000 employees is about 500 rows a year and worth every byte.

Sources

Every price on this page, with the page we read it from and the date we read it.

ProductPlanList priceCheckedSource
Workday HCMWorkday HCMNot published2026-09-05www.workday.com/en-us/products/human-capital

Workday publishes no list price and has no public pricing page; its own HCM product page carries no figures and routes every pricing question to sales, so every contract is a negotiated per-employee-per-month rate with no public benchmark.

BambooHRPro$17 / seat/month2026-09-05www.bamboohr.com/pricing

Priced per employee per month. Core is $10 and Elite is $25. Organisations under 25 employees pay a flat rate starting at $250 a month.

Should you still be paying for Workday HCM?

Two weeks, fixed price. We audit what you actually use, map it against Ensemble, cost the replacement on your own AWS or Azure account, and give you a delivery plan. If the honest answer is to keep the licence, that is what the report will say.