Every screen walked by hand. Every document opened and read.
No statutory rate enters this product on somebody’s memory, and no government module is called ready until a person has opened every document it generates and read it page by page. The last time we did that, six things came back. All six are on this page, with what each one was and what we did about it.
No statutory number enters the product on someone’s memory
Every rate, ceiling, factor and bracket in Dakila carries a verification state. A value is either traced to a primary government issuance — the circular, the memorandum, the law — or it is marked unverified and cannot be used in a computation that reaches an employee.
Contribution rates change, and an agency running a stale rate discovers it during a COA audit rather than during a release.
Verified against primary sources
- GSIS
- 9% / 12%
- PhilHealth
- 5%
- Pag-IBIG
- ₱200 / ₱200
- PERA
- ₱2,000
- Leave monetization factor
- ×0.0481927
Deliberately not published
None of these appears as a figure anywhere on this site, and the product ships no salary grade and step matrix:
- SSL salary grade and step matrix
- TRAIN per-period withholding tables
- PBB tier values and PRIME-HRM maturity scoring
Your agency’s own salary schedule loads at onboarding from the issuance that governs you.
A written record of everywhere we differ
Government HR requirements and general-purpose HR software never line up perfectly. We keep a register of every place they diverge: what the requirement says, what the software does by default, and the ruling we made — configure it, extend it, handle it in the interface, or leave it out and say so.
The register is why the module pages on this site can tell you what is not built. The alternative — discovering the gap during implementation — is how HRIS projects go wrong.
An automated test cannot see a glyph
A test can confirm a file was produced. It will happily pass a certificate that reads “This is to certify that Gavino, , has been employed” and a Personal Data Sheet that breaks a job title across a line in the middle of a word. Both of those are real, both are in the register below, and both were caught by a person opening the file and reading it.
A form that reaches CSC with a dangling comma in it is a form that comes back.
- Walked, not sampled
- Screen by screen on desktop and on a phone, in every role, including roles that should be refused.
- Denials tested on purpose
- We sign in with no rights and try each restricted administration screen, recording any control still reachable. A refusal with a live button on it counts as a finding.
- Findings written down
- Each one recorded with its severity and its fix, then published.
The last review, in full
Six findings. All fixed. Here they are.
The government modules, walked on desktop and on a phone, in every role. Reviewed 26 July 2026, with five friction or wrong and one a matter of taste. This is the whole list rather than a selection from it, and it includes the one that was a repeat of a defect we had already fixed once.
You know no software is perfect. What you are working out is whether we looked, whether we looked properly, and whether we will say so when we find something.
The severity scale, so the labels mean something
- S1
- Blocks a real user. They cannot complete the task at all.
- S2
- Friction, or wrong. They can get through, but it is confusing, misleading, or what they are shown is incorrect.
- S3
- Taste. It works and it is correct, but it reads or looks poorly.
- S2
Recruitment, onboarding and separations, seen by an employee with no rights
- What we found
- The refusal message appeared, and above it sat a live New button and a Refresh button. On recruitment there was also a working link to the applicant list. The server refused every one of those actions correctly, so nothing could be done with them, but the screen was advertising doors that were not there.
- Fixed
- Those controls now render only when the screen is not a refusal.
This was a regression. The same class of defect had been found and fixed once already, and it came back on three more screens. It is in this register rather than quietly dropped from it because a sweep that only ever finds new problems is not being run often enough.
- S2
Payroll, seen by an employee with no rights
- What we found
- A link to the Salary Register was kept beside the payroll refusal for every account, including ordinary employees, for whom it led to a second refusal. It belonged there for the HR accounts that can actually reach that report, and nowhere else.
- Fixed
- The link is gated to the same roles the navigation uses. The server remains the authority either way.
- S2
Personal Data Sheet, on screen
- What we found
- An employee record with no height or weight recorded displayed both as 0, while the printed CS Form 212 left both blank. The same record told two different stories about the same person depending on where you read it.
- Fixed
- An unset measurement and a zero now collapse to the same dash the printed form shows.
- S2
Executive dashboard
- What we found
- The browser console logged a markup error on every single load of the dashboard. Nothing was visibly broken, and all eight of the automated checks on that screen passed. But an evaluator from your ICT office opening developer tools on our flagship screen would have seen a red error sitting there.
- Fixed
- The offending wrapper was corrected, and a check now fails if that screen logs an error again.
- S2
Certificate prints
- What we found
- For any employee with no designation recorded, three of the four document prints produced “This is to certify that Gavino, , has been employed”. The fields themselves were guarded against being empty. The punctuation around them was not.
- Fixed
- The phrase is now assembled once, and its commas are printed only when there is something between them.
Found because a person opened the files and read them. Three of the four prints had never been read by a human before that pass. The Service Record was the one that was already right, and its correct handling became the model for the other three.
- S3
Personal Data Sheet print, CS Form 212
- What we found
- Words broke in the middle across a line on a signed CSC form. “Administrati / ve Officer V”. “BS Public Administrati / on”. “DEGREE/COURS / E”. A form that reaches CSC looking like that is a form that comes back.
- Fixed
- The four child-record tables on the form size their columns to their content instead of splitting into eight equal ones.
There is no automated test behind this fix. Catching a mid-word break automatically means rendering the PDF and reading the pixels, which our checks deliberately do not do. It was verified the only way it can be: by re-rendering the form and reading all four pages.
Every one of these was found by hand. Opening the files and reading them, and signing in with no rights and trying every screen that should refuse. The automated checks passed throughout. That is not an argument against automated checks, which catch the things they are pointed at every time. It is the reason we do not stop at them before telling you a government form is ready.
On having no agency to name yet
We have no completed government contracts, and we are not going to invent any. A fabricated case study on a page an auditor might read is a worse problem than an honest gap, and you would find out either way.
A logo wall would tell you that somebody else signed. It would not tell you whether anybody read the printed CS Form 212 before it went out.
Ask us the hard version
If you are evaluating Dakila, the useful questions are the uncomfortable ones. Which statutory values are still unverified. What the software cannot do that your office needs. What breaks if your ICT policy forbids something we assumed. What the next review turns up.
We will answer those in writing.
