AI Automation
AI where it reduces manual judgement, behind review where it does not.
We use language models and classical machine learning as components inside automation, not as the product. The systems we ship still run when a model is slow, returns empty, or disagrees with the schema. That difference matters more than the model choice.
Suitable work
Tasks with a clear right answer and a tolerance for review.
- Extraction of fields from invoices, receipts, and statements with a known schema.
- Classification of tickets or messages into a fixed, reviewed taxonomy.
- Drafting responses, summaries, or reports that a human approves before sending.
- Semantic search across documentation, contracts, and support history.
- Normalising messy free text into controlled vocabularies.
Not suitable
Where we push back.
- Decisions that must be correct the first time with no review window.
- Sensitive routing where a hallucination cannot be caught downstream.
- Anything whose success metric is "sounds convincing".
- Projects where the underlying data is ungoverned or contradictory.
In those cases we usually recommend deterministic rules, extra validation, or changing the data model first.
How a model is used
Small, scoped, observable.
-
Prompt and schema versioned
Every model call uses a versioned prompt and a strict JSON schema. Changes are tracked in source control.
-
Confidence and fallback
Low-confidence outputs route to a review queue or fall back to a rule. The system never accepts silently.
-
Cost and latency visible
Token use, latency, and error rates are measured per step. We design against them, not around them.
-
Human feedback loop
Corrections are captured and used to evaluate prompt and model changes before release.
Data handling
Your data, your boundary.
We prefer models that can run on your infrastructure or on providers with a data processing agreement you approve. Prompts and responses are logged only when needed for evaluation, and redacted versions are used in development. We do not train on your data by default.