An internal AI platform for a lending-technology company: an assistant that can act across forty-seven tools, finance queues where the model proposes and a person confirms, and a browser agent whose limits are written in code rather than in the prompt.
Practice area
Applied AI
AI is where the gap between a demonstration and a system is widest. Everything here runs in production, inside systems that businesses depend on — which is why the model proposes and a person decides wherever the outcome matters, and why the limits are written in code rather than in the prompt.
What this covers
Assistants that act inside a company's own tools, decisions made from incomplete evidence, records read and coded, fleets watched for the faults nobody has named — in production, with a person approving what matters.
What we build
Agents that act, with a person at the gate
Assistants that answer from a company's own data and act in its tools — email, calendar, tickets, documents, even a browser — pausing for approval before anything leaves the building, and bound by the same permissions as the person using them.
Decisions from incomplete evidence
Models that decide when some of the evidence is missing — and know which part is missing. Credit decisions from four independent analysers; approval models trained on expert judgement before there was any outcome data.
A consumer lending platform →Credit decisions from incomplete data: four models and an arbiter →
Reading records
Handwritten charts and call recordings turned into codes, summaries and action items — with the reasoning shown, and an alert instead of a guess when the record does not contain the answer.
Watching fleets
Unsupervised anomaly detection across thousands of devices, predictive maintenance, and repair guidance drawn from manuals and past fixes — feeding a rule engine that resolves faults without sending anybody to site.
Three thousand chargers →Anomaly detection for EV charger faults nobody has named →
How we build it
- Facts are read; decisions are proposedA number a source system knows is never set by a model. The model proposes the judgement calls, shows its reasoning, and a person confirms.
- The model goes lastRules and past human decisions answer first. The model handles only what they cannot — and sees only what it needs to, so its reasons stay reasons.
- Limits live in code, not in the promptPermissions, allowed sites and approval points are enforced outside the model. A prompt asks it to behave; code decides what actually runs.
- A person approves what leaves the buildingAnything that sends, posts, pays or deletes pauses for confirmation, and every decision is audited.
- Say what is missingA model that cannot see the answer should say so. An alert a person can act on beats a plausible guess that gets billed.
- Every call has a priceBudgets per user, caps on anything unattended, and the smallest model that is accurate enough for the job.
Case studies
An AI coding engine for a US healthcare revenue-cycle company. It reads anaesthesia charts, assigns every billing code with its reasoning, flags what the record leaves out — and puts each code in front of a coder to accept or reject.
A consumer lending platform that underwrites, prices and disburses a loan in about five minutes — and decides seven thousand applications a day without a human reading most of them.
A remote management platform for three thousand EV chargers worldwide — where the design goal is not to detect faults faster, but to resolve them without dispatching anyone.
A customer success platform competing with Salesforce, serving tens of thousands of users across five continents — and the architectural decisions that let a small team keep pace with a company a thousand times its size.
Engineering notes from this work
Made to choose a code the chart could not support, the model in the medical coding engine we built picked the most common one. So the engine flags the missing detail instead of guessing, and a coder asks the clinician. It has coded more than 19,000 anaesthesia charts.
In the finance review queue we built, the source system, rules and past reviewer decisions answer each transaction first; an LLM handles only what they cannot. It sees only the fields it needs, returns only a client and a reason, and leaves the line for a person when it cannot answer.
We run a random cut forest over telemetry from 3,000 EV chargers to catch the faults no rule describes, by flagging units that behave unlike their peers. Each finding is paired with the record of how similar cases were fixed before.
A new digital lender had no repayment history to train a credit model on, so we trained its approval models on about 8,000 decisions its credit officers had made by hand. The model inherits their biases too, and their own decisions are the control group for finding them.
The lending platform we built decides 7,000 applications a day, many from first-time borrowers with no credit history. Four separate models — credit bureau, bank statements, device, SMS — feed an arbiter that knows which evidence is missing and refers a case to a person rather than guessing.