Lifecycle Ledger
What the HR module can actually do today, verified page-by-page against the running code and organized the way an employee walks it — from requisition to retirement.
Coverage at a glance
Recruitment
BuiltJob openings, candidates, interviews, selection — the full pipeline exists and is wired end to end.
- Job Requisitions — open a requisition against an org unit and designation, set the opening count, track status (Open / On Hold / Closed).
- Jobs — publish a posting against a requisition with a location and employment type; mark it Open or Closed.
- Candidates — log applicants per posting, capture source and resume link, move them through Applied → Screening → Interviewing → Offered → Hired → Rejected.
- Interviews — schedule a round against an internal employee as interviewer, record a Pass / Fail / Pending outcome and free-text feedback.
- Offers — draft an offer with salary, joining date and expiry date; track it Draft → Sent → Accepted / Declined / Withdrawn.
Gap — there’s no automatic hand-off from an accepted offer to a new Employee record; HR still creates that manually in Hiring.
Hiring
PartialOffer letter, employee creation, joining details.
- Employee creation — code, name, email, designation, reporting manager, employment type and date of joining captured at intake.
- Login provisioning — generate a username and one-time password for a new hire, or reset it later from their record.
Gap — no offer-letter document generation or e-signature, and no link back to the requisition/offer that triggered the hire.
Onboarding
PartialDocuments, bank/PF/ESI details, onboarding tasks.
- Employee Documents — upload, download and delete files (ID proof, contracts, and similar) against an employee, tagged by document type.
- Statutory & banking fields — PAN, masked Aadhaar, UAN, ESI number, bank account + IFSC, and an emergency contact all exist on the employee record, but only PAN and UAN appear on the quick-create form today; the rest need a direct API call until a fuller edit form exists.
Gap — no onboarding task checklist or workflow (asset issuance, policy acknowledgment, and so on).
Employee Management
BuiltProfile, department, designation, location, documents — the most complete stage in the module.
- Employees — a searchable directory showing designation, org unit, manager and status; every field editable.
- Employee profile page — a per-employee view of core details, access/credential status, and direct reports.
- Reporting line — reassign a manager, view an employee's direct reports, or browse the whole company as a lazily-loaded org chart.
- Org Structure — a company → branch → department tree, each level independently creatable, editable and deletable.
- Designations & Grades — each designation links to exactly one grade; grade level 1 is the most senior.
- Locations — a master list of physical offices, referenced by job postings and (once extended) employee assignment.
Attendance & Leave
BuiltAttendance, shifts, holidays, leave requests — including approvals.
- Attendance — mark Present / Absent / Half-day / On-leave per employee per date, with remarks.
- Shifts — define named shifts with start/end time and a grace period.
- Roster — assign an employee to a shift for an effective date range.
- Attendance Regularization — an employee requests a corrected status for a past date; pending requests can be approved or rejected.
- Overtime — log extra hours worked with a reason; pending entries can be approved or rejected.
- Leave — apply for Annual / Sick / Unpaid / Other leave over a date range; pending requests can be approved or rejected, including directly from the Dashboard.
- Holidays — maintain the company holiday calendar, optionally recurring every year.
Payroll
BuiltSalary calculation, deductions, payslips — component-based, not a flat structure.
- Salary Components — define named Earning/Deduction components, each Flat or a Percentage-of-Basic, flagged taxable, basic, and active.
- Salary Structures — assemble an employee's pay from those components with an effective date; gross pay, deductions and net pay resolve automatically.
- Payroll Runs — open a run for a given month/year, then process it.
- Payslips — generated per employee per run, viewable by run or drilled into per employee, with the full component breakdown.
Benefits & Compliance
PartialPF, ESI, TDS, PT, statutory compliance.
- Tax Config — the API supports creating and updating per-financial-year tax configuration, but no page renders it.
Gap — the /finance/tax-config sidebar link has no matching route, so this is currently unreachable from the UI. And no PF, ESI or professional-tax calculation exists — the ESI number captured at onboarding is only an identifier, not a computed contribution.
Performance
Not builtGoals, appraisals, reviews, ratings.
No controller, page, or data model exists for this stage in either repository yet.
Career
Not builtPromotion, increment, transfers, career progression.
Reassigning a manager, or editing an employee's designation and grade, is possible via the existing Employee Management APIs — but there's no dedicated promotion/increment/transfer workflow, approval trail, or career-history record.
Exit
Not builtResignation, notice period, clearance.
An employee's status can be flipped to Inactive or Terminated, but there's no resignation capture, notice-period tracking, or clearance checklist.
Full & Final
Not builtPending salary, leave encashment, deductions, settlement.
No settlement calculation exists yet.
Retirement
Not builtRetirement processing and applicable benefits/documents.
No retirement-specific processing exists; this would likely reuse Exit and Full & Final once those are built.
Employee & Manager Self-Service
MinimalCuts across every stage above rather than being one itself — today it's the thinnest layer in the module.
- My Details — a signed-in user can see their own username, tenant, role and timezone (read-only).
- Inline manager approvals — a manager acts on Leave, Overtime and Regularization requests directly from those pages, and pending leave also surfaces as a Dashboard widget.
Gap — no dedicated self-service portal: an employee can’t see their own payslips, attendance history or leave balance in one place, and there’s no manager-scoped “my team” view distinct from the full admin tables.
Worth flagging
/help still lists Recruitment, employee documents, and login-credential generation under its Roadmap tab — all three are live in the code as of this review. Its Docs tab is also missing Shifts, Roster, Regularization, and Overtime entirely. This ledger reflects the code directly; the in-app page doesn’t yet.
Earlier planning notes described Salary Structure as a flat basic/HRA/allowances model. That’s no longer accurate — Salary Components and component-based Salary Structures are both live, ahead of where prior scope discussions assumed the module stood.