Factorial
A weekend of work, and real gaps remain.
HR administration for small companies: staff records, holiday requests, time tracking, documents and the reporting around them.
Build the HR administration I actually need instead of Factorial — with one warning stated first. **Employment law is local and it changes.** Holiday accrual, overtime, working time records and payslip retention are all specified by your country and often by a collective agreement. Build the system; do not invent the rules. Put every rule in configuration, dated, so a change in the law is a new row rather than a rewrite. STACK - Node 20+ with Fastify, server-rendered HTML with a little vanilla JS - SQLite through better-sqlite3, WAL mode - Caddy in front THE DATA MODEL - people: id, name, email, started_at, ended_at, manager_id, contract_ref - contracts: id, person_id, kind, hours_per_week, effective_from, effective_to — **contracts change, so this is a history and not a column on the person** - absence_types: id, name, is_paid, accrues, carries_over, max_carry_days - balances: computed at query time from entitlements minus taken. Never a stored total that can drift - absences: id, person_id, type_id, from_date, to_date, half_day_start, half_day_end, status, requested_at, decided_by, decided_at, note - entitlements: id, person_id, year, days, reason, effective_from — append-only, because 'why did she have 26 days in 2024' must be answerable - time_entries: id, person_id, started_at, ended_at, source, edited_by, edit_reason - documents: id, person_id, kind, path, sha256, uploaded_at, visible_to_person HOLIDAY, WHICH IS ALL ANYBODY USES IT FOR - Request, approve, and a team calendar. That is ninety percent of the value - Half days matter and are always forgotten. Model them from the start; retrofitting is painful - Public holidays per country and region, in a dated table, and never hard-coded - Carry-over with an expiry date, and a warning to the person a month before they lose days - **Balances computed, never stored.** A stored balance drifts the first time a request is edited, and then nobody trusts the system TIME RECORDS, WHICH ARE A LEGAL DOCUMENT IN MANY COUNTRIES - Clock in and out, or a daily total, depending on what your law requires - **Every edit recorded with who and why, and the original kept.** A working-time record that can be silently changed is worthless to an inspector and to the employee - Weekly and monthly exports in whatever format your accountant or authority expects DOCUMENTS AND ACCESS - Payslips and contracts, visible to the person and to a named few. Access checked on the server for every file, every time - **Personnel data is the most sensitive data a small company holds.** Encrypt at rest, log every read of another person's record, and default to deny - Retention per document kind, per your local requirement, with a sweeper WHAT NOT TO BUILD - Payroll calculation. Getting tax and social contributions wrong is a fine and a very bad month. Export to whoever runs payroll and let them do it WHAT MATTERS MOST Dated rules in configuration and computed balances. One survives the law changing; the other keeps the numbers true.
What you lose
- Compliance with your own country’s labour rules, maintained
- Payroll connections that actually reconcile
- A mobile app employees will use for clocking in
- Document templates that are legally current
If you would rather not build
- A hosted HR product, if local compliance is the reason you are buying
- A shared calendar and a spreadsheet, which is what most small teams run
The escape hatch
open source · no votes, no paid placement
OrangeHRM
$0Open-source HR management with leave and personnel records.
orangehrm/orangehrmfree · open source
Why this verdict
our own opinion · changed only by a person
50/100
Verdict kinda at 50: the holiday and record-keeping half is a fortnight and genuinely useful. Payroll and local compliance are deliberately out of scope and the entry says so.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Factorial
answered from the record above
Is Factorial free?
No — the plan we track is $5 a month. From around €5 per employee per month for the core modules, priced by what you switch on.
Can you replace Factorial by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 50 out of 100, build time a weekend. Read what you lose before you decide.
How much does Factorial cost?
$5 a month on Core — $60 a year. Recorded 14 Aug 2026.
What do you lose by replacing Factorial?
Compliance with your own country’s labour rules, maintained; Payroll connections that actually reconcile; A mobile app employees will use for clocking in; Document templates that are legally current. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Factorial?
Yes: Kimai, OrangeHRM. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

