Ensemble
Scheduled Sep 14, 2026One 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
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.
| Capability | Workday HCM | Ours | Note |
|---|---|---|---|
| Effective-dated worker record and org history | Yes | Yes | Ensemble is bitemporal, which is stronger than effective-dated: it distinguishes when something was true from when you learned it. |
| Position management and supervisory hierarchy | Yes | Yes | — |
| Absence, accrual and statutory leave | Yes | Yes | Rules are code with a test suite per jurisdiction you operate in. |
| Compensation bands, compa-ratio and review cycles | Yes | Yes | — |
| Self-service and manager-service | Yes | Yes | — |
| Outbound payroll integration | Yes | Yes | One properly specified feed per payroll provider, with reconciliation, rather than a generic connector nobody owns. |
| Native payroll in 90+ countries | Yes | No | Workday 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 content | Yes | No | Workday 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 suite | Yes | Partial | Shortlist 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 connections | Yes | Partial | Ensemble 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 audit | Yes | No | An 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 analytics | No | Yes | A read-only, PII-masked schema your analysts query without an integration ticket or a report-builder licence. |
| Mobile self-service | Yes | Partial | Installable 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
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
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.
| Product | Plan | List price | Checked | Source |
|---|---|---|---|---|
| Workday HCM | Workday HCM | Not published | 2026-09-05 | www.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. |
| BambooHR | Pro | $17 / seat/month | 2026-09-05 | www.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.