Prabhu HRIS
Prabhu HRIS
Payroll is unforgiving — it runs on a date whether or not the data behind it is clean. Prabhu covers the whole chain: employees clock in from the app, file cuti, izin or overtime, HR approves, and that record is what the payroll run, the tax calculation and the payslip are built from. My work was on the services behind it and on making the slow parts quick enough to actually use.
What it does
- Attendance from an Android app, with requests when the clock-in itself needs correcting.
- Time off in the shapes companies actually use: cuti, izin, sakit and overtime, each with its own approval path.
- Payroll run built straight from approved attendance, not from a separate re-entry.
- Income tax calculated on top, with payslips generated and distributed per employee.
- Employee data, structure and roles managed in one place for HR.
- Part of a 35% cut in system response time across the Krida product line.
How it fits together
- Step 1Clock in
- Step 2Requests
- Step 3Payroll run
- Step 4Tax
- Step 5Payslip
Diagrams
How the product behaves, and how the pieces behind it talk to each other.


Stack
- PythonBottleMicroservices
- Flutter
- Server-rendered web app
- Relational database
Worth noting
- Payroll periods are closed data: once a run is locked, a later fix has to be a correction, not an overwrite.
- The heavy calculations sit in their own service rather than in the request path.
- Approvals are the source of truth — payroll never reads raw attendance that nobody signed off.