Software Developer · Automation & Decision Systems

I build systems that decide things under time pressure.

Most of my work sits in an awkward place: noisy input, a few seconds to act, and a decision that costs real money if it is wrong. Screenshots instead of APIs, GPS instead of ground truth, a phone in a moving vehicle instead of a server rack.

The interesting engineering there is rarely the arithmetic. It is deciding which arithmetic reflects reality, and building something that stays correct when the inputs are bad.

London, United Kingdom LinkedIn GitHub onisai.com
Selected work

Two systems, written up properly

Both come from the same problem domain — helping a rideshare driver judge an offer before the timer runs out — but they solve different halves of it, and the second exists because the first turned out to be insufficient.

Route corridor engine

Shadow mode

Endpoint scoring says a trip is fine if the fare and the destination look fine. It is wrong often enough to matter, because it never asks what the route actually passes through on the way.

This engine builds a corridor between pickup and dropoff, then intersects it against a graph of traffic observations logged by the driver — weighting hits by whether they are inside the corridor, near it, and whether their time profile matches the current trip. Evidence the driver gathered themselves, rather than generic congestion assumptions.

Traffic corridor map built from logged beacons
Python Spatial indexing Graph construction GPS / reverse geocoding Swift contracts
Read the engineering →   Source →

A multi-tenant platform that turns a screenshot of an offer into a scored accept or decline verdict. OCR ingestion from a one-tap iOS Shortcut, a parser that survives promotional overlays painted across the source, and a scoring engine that charges the unpaid pickup miles and the per-job overhead before judging the rate.

Roughly 98% OCR accuracy through multi-stage validation and fallback, and around a 90% reduction in manual document handling.

OnisAI offer scoring demo
Node.js Express 5 PostgreSQL Tesseract / Cloud Vision Stripe
Read the engineering →   Source →
Also built

Other automation work

Same shape of problem, different domain: unstructured input in, validated structure out.

Document automation and structuring

A multi-stage PDF pipeline converting unstructured documents into validated JSON, cutting manual review by roughly 80%. The multi-stage part is the point — a single extraction pass is confident and wrong, whereas staged validation can tell you which fields it is unsure about.

Python OCR JSON Schema validation

Email attachment classification

An automated workflow that classifies inbound attachments, extracts metadata, runs OCR, and routes files onward for processing.

Python OCR Workflow automation
How I work

Three habits that show up in everything above

Label what is proven and what is not

My own design documents mark each idea as proven, shadow-mode, or aspirational, and I keep that distinction on this site too. A corridor score running in shadow mode is genuinely interesting; describing it as shipped would be a lie that collapses in the first technical conversation. Knowing which of your ideas are still unproven is part of the engineering, not an admission against it.

Assume the input is hostile

None of these systems get a clean API. They get OCR text with advertising painted through it, GPS that drifts, and a phone that may be thermally throttled. So failure paths are designed first: a missing OCR provider degrades one request instead of killing the process, a bad parse lands in a recoverable state with its raw text intact, and every correction is rescored through the same function as the original rather than patched in beside it.

Prefer evidence to assumption

The corridor engine exists because static zone heuristics were guesses dressed up as rules. Replacing them meant building the boring part first — a two-tap logger that records what the driver actually observed, by area and time of day — and only then letting the scoring lean on it. Slower to start, and the only version that improves with use.

Background

Route in

I came to software through design and through years of operational work, which is probably why I gravitate to problems where the constraint is real-world rather than theoretical.

May 2026 – Jul 2026
Software Developer / Mobile Automation
Wally Driving London LTD · Freelance · Remote
Oct 2025 – Jun 2026
Software Developer & AI Automation
OnisAI · Contract · Remote
May 2023 – Sep 2025
Freelance Product & Web Designer
Client work · Greater London
May 2017 – Feb 2022
Customer Service Representative
Tesco · London
2021 – 2023
BSc Business Administration & Management
Anglia Ruskin University
Contact

Open to work

Currently open to software and automation roles in the UK — on-site, hybrid or remote. The fastest way to reach me is LinkedIn.