One record.
The whole lifecycle.
Employees, locations, departments, teams, designations and reporting lines. This is the spine every other module reads from, and the tree that decides who is allowed to see which rows.


Why this module comes first
Every other module is only as good as this one.
Payroll, leave, attendance, performance and onboarding all resolve against the employee record and the org tree. When those are thin, the failures show up somewhere else and get blamed on the wrong module.
The record stops at “active”
Pre-hire, probation, notice and exit are states, not a checkbox. A system that stores only the current one cannot tell you what changed in March, or why.
The org chart is a text field
A manager written as a name string cannot be walked. So every manager view becomes a list somebody maintains by hand, and it is wrong within a quarter.
Sensitive fields sit next to ordinary ones
A bank account number stored like a phone number is readable by anyone who can open the profile. That is a permissions decision made by accident.
What the record holds
A person, their structure, and the history of both.
The employee record carries the lifecycle. The org objects around it — location, department, team, designation, manager — are real rows with real relations, which is what lets the rest of the platform reason about them.


Five states, one record
Pre-hire, probation, confirmed, on notice, exited. Every transition is stored with its date, so designation, department and manager as of any past date are answerable without archaeology.
Locations, departments, teams, designations
Four dimensions, each an object rather than a label. Filter payroll by location, target an announcement at a team, report headcount by designation — all without string matching.
Reporting lines as a real tree
A manager relation you can walk. Skip-level views, subtree reports and multi-level approval chains all read the same structure, so they cannot disagree with each other.
The tree is the authorization boundary
Row visibility is own record, my reporting subtree, or everything — decided by role. A manager sees their people because the tree says so, not because somebody maintained a list.
Sensitive fields, separately gated
Bank accounts live in their own table, off the record every manager reads. Payroll and HR see everyone's; anyone else sees only their own, with the number masked to its last four digits.
Custom fields and bulk import
Add the fields your organisation actually tracks, then load the whole company from a sheet on day one. Errors come back row by row, not as one failed upload.
Documents & sensitive data
Files on the record, not in an inbox.
Contracts, identity proofs and letters live against the employee they belong to. Uploads are validated by their file signature rather than by the extension someone typed, stored per tenant, and served only through a short-lived signed URL issued after a permission check — so a link that leaks is a link that has already expired.
Employee record · history
- Offer accepted12 Jan 2026
Record created from the recruitment pipeline
- Joined · probation03 Feb 2026
Bengaluru · Engineering · Platform
- Confirmed03 Aug 2026
Designation → Senior Engineer
- Manager changed01 Sep 2026
Reports to A. Nair · subtree visibility follows
Bank details sit beside the record rather than on it, behind a scope that shows everyone else only their own row.
Reports & exports
Attrition is a rate, not a tally.
Four leavers is a crisis in a team of twelve and a quiet month in a company of four hundred. Attrition here is exits over average headcount, month by month, with headcount rebuilt from joining and exit dates rather than a snapshot table that can drift from the record.
- Broken down where it mattersBy department, by exit type — resigned, let go, contract ended, retired — by tenure band at exit, and by whether the exit was regrettable.
- Annualised, with the raw figure beside itA monthly and a quarterly rate cannot be compared by eye. Both as a yearly rate can, and the period figure stays visible because one month of a seasonal business is a projection.
- Exports you can open safelyDirectory, leave balances, expense claims, asset register and helpdesk tickets as CSV. Every cell is escaped against formula injection, and every export is written to the audit log.
Attrition · last 12 months
CSV · one row per monthTenure at exit · 31 leavers
Sixteen of 31 left inside their first year. That is an onboarding question, and a mean tenure of 19 months would have hidden it.
What reads from it
Nine modules, one spine.
Nothing downstream keeps its own copy of a person. Change a location, a manager or a designation once, and the modules that depend on it are already correct on the next request.
Payroll
Salary structure, location, statutory registrations and the exit date the full and final settles against.
Learn moreLeave
The holiday calendar comes from the location; the approver comes from the reporting line.
Learn morePerformance
Review cycles resolve reviewers from the tree, and a manager's team scorecard is their reporting subtree.
Learn moreOnboarding
A new record instantiates its onboarding plan, with tasks owned by named people rather than by a department.
Learn moreIn the product
One record, and the tree around it.




Book a demo · 30 min
Bring the messiest org chart you have.
Thirty minutes on your real structure: multiple offices in different timezones, the team that just reorganised, the leaver whose clearance is still open. We will show you how it is modelled.