Understanding the Process First
This was an advisory project. Our job wasn't to write the tool. It was to work out exactly what the tool should be, so that when it was built, it would work the first time.
We started with how Gramian's team actually handled these updates: which fields they looked at, what each status really meant, and what they did in the edge cases. We were also clear about the limits. The client platform offers no public API for this data, so instead of proposing a fragile workaround that could break its terms of service, we planned around the exports it does provide.
Turning Judgment Into Rules
Much of the manual work was judgment: reading a status and a reviewer's comment, and deciding what should happen to the candidate. We turned that judgment into explicit decision rules.
Rejected candidates get exactly one reason recorded, chosen by a clear order of checks, so the reason is always specific and never ambiguous. Approved candidates have any earlier rejections cleared and move to the right stage of the pipeline, based on where they are in the client's process and how they did in its technical assessment. Written down like this, every rule can be reviewed by the recruiters and tested before it touches real records.
Designing for Safety at Scale
With around 130,000 records at stake, the plan put safety first. The specification set out that the automation must:
- process only what changed since the last run, instead of reworking everything each time
- be safe to re-run, picking up where it left off after an interruption, with no duplicate updates
- keep going when one record fails, logging the problem instead of stopping the whole run
- leave a full audit trail, with a clear summary at the end and a direct link to every record that needs a person to look at it
- keep every credential, stage, and rule in configuration, so the process can change without rewriting the tool
Guidance on How to Build It, Not Just What to Build
The final specification went beyond requirements. It covered scope, what was deliberately left out, and the assumptions behind every decision, along with our recommendations for the technical design and the rollout: a short first build, followed by a break-in period on real production data to catch the edge cases no plan predicts.