Records with a real permission model
Who can see a salary, who can see a disciplinary note, who can see neither. A spreadsheet has exactly one answer to that question and it is the wrong one.
The software was never the hard part. The hard part was that the process being replaced had a dozen undocumented exceptions everybody relied on and nobody had written down, and you only find those by sitting with the people who do the work.
Employee records lived in a shared spreadsheet with no permission model, approvals lived in email threads that stopped being findable after a few months, and reporting meant somebody rebuilding the same pivot table every month and getting a slightly different answer than the person who built it last time.
Who can see a salary, who can see a disciplinary note, who can see neither. A spreadsheet has exactly one answer to that question and it is the wrong one.
Who asked, who approved, when, and on what basis, attached to the thing being approved rather than reconstructed later from an inbox.
So that two managers asking the same question get the same number, and the definition of that number is written down somewhere other than in one analyst’s head.
React, Node and SQL, deployed the way their IT team already deploys things. Nothing exotic, because the people maintaining it after us are theirs, not ours.
Every internal process has exceptions that exist for real reasons and appear in no document: the approval that skips a step for one department, the field that means something different in the field office, the report that is wrong in a way everybody has learned to correct for. Build the process as specified and you break all of them on day one. Finding them is not a technical exercise. It is sitting with the people who do the work and asking why, which is exactly the step the standard delivery chain removes.
Most of our contracts ask us not to name the client, and we would rather keep the work than the logo. We have also not put a percentage improvement on this page, because we would be estimating it and you would be right to discount it.
What we will do is arrange a reference conversation with the client, with their agreement, for work that resembles yours. Ask on the first call.
Thirty minutes. If your problem rhymes with this one we will say what we would do differently the second time, which is usually the more useful half.
Either one reaches Umer directly. No forms sitting in a queue.