← All work Case 06 / 07 — HRMS — Onboarding
06 / 07
Case study 06 — HR-tech · lifecycle & audit

AIVision HRMS Onboarding

Four sequential stages, two roles with different authority, and a field-level audit trail — because in HR the argument is never “what is the status”, it's “who changed my CTC”.

Outcome Five screens covering candidate → employee onboarding, a role-gated approval path, and an audit view that records every field change with its actor — shipped and running.
Product
AIVision HRMS — Manager Portal
Roles designed
HR Manager · Super HR Manager
Role
Sole designer, system + all screens
Deliverable
Built, running prototype
The problem

Onboarding a hire touches an offer letter, four KYC documents, an HR approval and a joining confirmation. In practice each of those lived somewhere else — a mail thread, a shared folder, a spreadsheet — so the honest answer to “where is Arjun Mehta” was “let me check with someone”.

The second problem was quieter and worse. Offer terms get edited: CTC, grade, joining date, reporting manager. Those edits were invisible after the fact, which turns a routine correction into a dispute with no record.

So this wasn't a dashboard problem. It was a state machine and an evidence problem.

Index card — the four stages, in order
01Offer LetterSix states, because a real offer gets negotiated before it gets accepted.
02KYCAadhaar, PAN, bank, driving licence — each verified independently, not as one blob.
03ApprovalSuper HR Manager only. The one gate an HR Manager cannot open.
04OnboardedCandidate becomes employee. The record stops being editable and starts being history.
The decision that made it work

Every stage needed a not_required

A checklist that can only be pending or done can never be finished for a hire who doesn't drive. Without an explicit “not required”, HR does what HR always does: marks it verified anyway, and the audit trail starts lying. Adding the state cost one extra chip per stage and saved the integrity of the whole record.

StageStatus vocabulary as shipped
Offer Lettergeneratedsentnegotiatedacceptedrejectednot_required
KYC × 4 docspendingverifiedrejectednot_required
Approvalpendingapprovedrejectedno opt-out — approval is the gate
Onboardedpendingcompletedrejected
shipped as spec'd Driving licence ships as not_required for two of the eight seeded people — exactly the case that would otherwise be faked.
The build — live, interactive

Five screens, running

This is the real prototype below. Switch the role chip between HR Manager and Super HR Manager, open Arjun Mehta, click a KYC document, then open the audit trail.

aivision-hrms.app/manager/onboarding — live, interactive
The list answers one question

Four stage columns, one row per person, so “where is everyone” is a single downward scan. Candidate and employee live in the same table — the distinction is a chip, not a separate screen.

Documents open, they don't download

Clicking a KYC document shows the extracted fields in a popup — masked Aadhaar, masked account number. Verifying shouldn't require downloading someone's identity documents to a laptop.

Role changes authority, not layout

Super HR Manager sees the same record with the approval action unlocked and the fuller history. Same shell, so an HR Manager can be walked through it by their lead.

The screen I'd defend hardest

Diffs, not an activity feed

Most audit views say “Priya Sharma updated the record”. That is useless in the only conversation it exists for. Every event here carries the field name, the old value, the new value, the actor and whether the actor was a human or the system — and where one action changed two fields, both diffs sit inside a single event rather than reading as two separate edits.

It's a vertical timeline, not a table: a colour-coded marker rail carries the action type down the left, the date sits in its own narrow column, and the actor is attributed underneath the change rather than in a far-right column — so each event reads as one small paragraph of evidence.

Audit TrailArjun Mehta · AIV-2025-0142 · 12 events Export Last 30 days
All CREATE UPDATE DELETE All Stages All Actors
28 Apr11:45 AM UPDATEcandidate_onboarding onboarded.statuspendingcompleted PSPriya Sharma· via HR Portal
28 Apr11:45 AM UPDATEcandidate_onboarding approval.statusnot_startedapproved PSPriya Sharma· via HR Portal
28 Apr11:00 AM UPDATEcandidate_onboarding kyc.aadhar.statuspendingverified SYsystem· automated check
24 Apr04:45 PM UPDATEcandidate_onboarding ctc₹16,00,000₹18,00,000 gradeL3 — EngineerL4 — Senior Engineer PSPriya Sharma· via HR Portal
18 Apr10:00 AM CREATEcandidate_onboarding Onboarding record created for candidate SYsystem· automated check
Showing 5 of 12 events skip=0 · limit=50

Five of the twelve events, reproduced from the shipped build's own audit data — the full timeline is reachable in the live prototype above. The highlighted event is the one that justifies the screen existing; the two 11:45 AM events show a single approval action landing as two audited field changes.

Decisions worth defending

Four calls, and what each cost

DecisionReasoning · trade-off
Candidates and employees share one tableOnboarding is a continuum, not two systems — a chip carries the distinction. Costs the ability to give employees a purpose-built view later without a migration.
Four KYC documents tracked independently“KYC pending” hides which document is blocking. Per-document status makes the blocker nameable. Costs a wider, denser row in the list view.
System is a first-class actorAutomated verification is attributed to system with its own neutral avatar, never silently to the logged-in human. Costs a row of explaining in onboarding, buys trust in the trail.
Approval is the only hard gateEvery other stage is editable by either role; approval belongs to the Super HR Manager alone. One gate people remember beats five permissions nobody can recall.
What I'd change

There's no bulk action anywhere. A real HR Manager onboarding a cohort of twelve graduates will update the same stage twelve times, and I designed for the single-candidate case because that's the case that demos well. That's the honest gap.

What it proved

Status vocabulary is design work, not data modelling. The difference between a record people trust and one they quietly work around came down to which words a status field is allowed to hold — and arguing for one extra one.

Next case study — 07 of 07
HRMS — Offboarding

The same lifecycle from the other end: clearance, settlement, closure.

Read it →
← Previous: PeopleVision
All work About Email me