Automating bulk admin with browser automation
How an ops team stopped losing hours to repetitive clicks
“The system runs the same way on record 1 and record 1,000. We don't have to check the work anymore — the report does that for us.”
— Operations Lead, water risk & compliance platform
The client
A Dutch SaaS platform for water risk and compliance, managing thousands of locations — each with subscriptions, sensors, documents, and inspection workflows tied to regulatory obligations.
The challenge
Bulk admin — updating subscriptions, reassigning inspectors, archiving locations — ate entire afternoons, done one record at a time through the platform UI. No safety net, no audit trail.
Solution
I designed and built a custom internal automation platform around the team's highest-volume bulk workflows: a browser automation engine paired with an operator dashboard. Staff load a record list, preview what's in scope, optionally dry-run a small batch, then execute — with real-time per-record progress and a structured report (succeeded / skipped / errored) at the end of every run.
The platform is plugin-based: each workflow is a self-contained module, so adding workflow 17 means writing a new plugin, not touching the core. Sixteen workflows shipped at launch — subscription setup, price updates, inspector reassignment, document uploads, location archiving, and more.
Why it works
Preview before execution. Dry-run before scale. A full report after every run. Automation nobody can observe is worse than the manual process it replaces — it just moves faster toward a state nobody can verify. This one doesn't.
Outcomes
Hours recovered
Bulk tasks that took entire afternoons now run in minutes.
Consistent execution
Same logic, same result, whether it's 10 records or 2,000, with no variance from fatigue.
Built-in audit trail
Every run produces a per-record report, with no extra documentation effort.
Compounding returns
Each new workflow inherits the full platform on day one.
If a bottleneck on your team looks like a process problem but feels like a tooling problem, that's usually where I can help.
Get in touch →