The services, the network, the infrastructure they run on, and the retrieval that makes model output dependable enough to rely on. Before this, twenty-two years running international operations: shift patterns, bad data, audits, and people who need an answer now. Those are the conditions I design for, because they are the ones software actually meets.
Autonomous CRM operations under maker and checker governance, with frozen rules that sit above the model and cannot be reasoned around. Tested across 33 sets, 330 runs.
PythonPolicy engineAudit trail
Also builtSelected
> ls ./other✓ storefront, logistics, capture
Further work
A reseller storefront with an automated product pipeline, an operational logistics platform, and a mobile capture app that streams documents over the local network.
StripeQueuesKotlin
Methods
How the systems above are built
Four techniques, and the question that decides between them. Does the answer sit inside one document? Then retrieval is enough. Do the relationships carry the meaning? Then a graph. Does the output vary between runs? Then a loop with a gate. Can the system change something in the world? Then a harness. Choosing the heavier method when the lighter one suffices is the most common way these systems get expensive without getting better.
Pattern
The field, and where I sit in it
flowretry or stopfeedbackPattern level, not implementation
What this is
The shape of AI engineering as the field describes it: building and deploying applications, software engineering fundamentals underneath, coding agents alongside, and shaping what gets built. The four methods below are how the middle two are actually done.
Why it is here
A stack list says what tools someone has touched. A map says whether they understand the field they are working in, and where their own work sits inside it.
Where I am partial
Operating at scale. The systems are built, deployed and tested, but none has carried production traffic from the public, and I would rather mark that than imply it.
Everything else
Covered by the five systems above, end to end: applications, data, architecture, security and reliability.
QAI Lab, the certification gate
Console
Problem
One assistant serving research, engineering and operations carries context across domains it should never cross. Answers drift, and nothing notices.
The platform
A REST API over the whole platform, running in two modes: domain reasoning, and an agentic development environment. Ten or more providers behind one interface.
Gate and learning path
Work is scored before it reaches the user, weak output regenerates, and the review seat fails closed. What each run establishes carries forward.
Product interface, scripted sequenceNot connected to production data
Sequence 01, plan through certification
DocuMiner, retrieval that crosses documents
Console
Problem
Legal and accounting firms hold the answer across a bundle, not in one file. Similarity search cannot answer what is connected to what.
Extraction
Each page is read by whichever method suits it, chosen automatically. A scanned 29-page bundle is transcribed in under a minute, in reading order, and the offline path works with no network.
Failure
Confidence is computed from what extraction produced, so a twenty-page PDF that yields zero words is stored as failed, never silently as confident.
Any organisation running vehicles has to prove compliance across drivers, documents and depots, and keep the driver safe while doing it.
Infrastructure
Terraform-provisioned AWS: load balancer across two public subnets, containerised app tier on ECS Fargate in private subnets, PostgreSQL in an isolated data tier with no default route, Cognito groups, Secrets Manager.
Decisions
Defined in code, so it rebuilds the same way every time and costs nothing while down. Capacity and network layout were planned before the first deployment.
Cairn is the driver-facing layer, sharing the trip log, so every active shift is a live route session with an in-cab voice co-pilot across seven languages.
Hazard model
Each alert keeps its confidence score and the reports behind it, a per-stop composite risk breakdown, and a lone-worker check-in.
Product interface, scripted sequenceNot connected to production data
Sequence 04, detour solved, SLA held
Kelvin, night cover
Console
Governance
Maker and checker on every action: the platform proposes, a verifier clears it, and consent and policy are checked before anything leaves.
Frozen rules
Above the model and not negotiable: no financial figures without approval, no credit issued autonomously, sensitive cases routed to a named human.
Measured
The signal tracked is how often a human had to correct it, not how much it produced. Tested across 33 sets, 330 runs, before it was trusted with real work.
Product interface, scripted sequenceShown with synthetic data
Sequence 05, a frozen rule refusing the model
Working with me
What I am strongest at
Backend and APIs. REST services other systems call, with the reliability work that decides whether an integration survives its first bad week.
Cloud infrastructure. AWS defined in Terraform, private by default, rebuilt from code and switched off when nobody is using it.
Networking. Addressing, routing, segmentation, TLS. Cisco CCNA certified, and the network was designed before the servers.
Retrieval and model orchestration. Dependable answers out of models, and recognising when an answer is not dependable enough to send.
How I work
Every number here came from a run. Not an estimate, not a round figure chosen because it looked convincing.
I hand over systems, not secrets. Documented, reproducible, runnable by someone who has never met me.
I fail closed. When a check cannot return a verdict the work stops.
Working and finished are different. Finished is when someone else can run it on a Sunday without calling me.
In a team
Two decades of leading international operations: teams across multiple plants and countries, supplier and logistics networks, compliance, and delivery dates set by customers rather than by me. Handover, audit and working to someone else's standard were the job.
That is the half engineers usually learn on the way up. I bring it already, alongside five platforms built end to end, so I can hold a technical conversation and a commercial one in the same meeting.
Experience
Two careers that feed each other
2023 – PRESENT
CaledonianAI Glasgow, Scotland
AI systems & infrastructure engineer
Designed, built and deployed five products from a blank page as the only engineer, across backend, data layer, infrastructure and frontend.
Built the orchestration platform behind them: isolated domain memory, graph-backed retrieval, a scoring gate in front of every response, and a review loop that fails closed.
Provisioned the AWS environments in Terraform: load balancing, containerised app tiers, private subnets, managed PostgreSQL, identity groups and secrets handling.
Published two technical papers with permanent DOIs, grounded in what the platform does.
2007 – 2023
International operations Supply chain and logistics
Operations & supply chain leadership
Ran international operations end to end, from supply chain through to delivery at the customer.
Just-in-time automotive distribution, where a late delivery stops a production line and the tolerance for error is zero.
Built and ran an industrial facility, then managed operations across multiple plants, including the people, the compliance and the systems.
This is the reason the software is built the way it is: audits, shift handovers, incomplete data and deadlines are the normal case.
Research
Permanent identifiers
Domain-isolated architecture for reliable LLM inference
The isolation and routing approach behind the orchestration platform: separate execution memory per domain, explicit routing between them, and the effect on answer reliability when domains stop sharing context.
The biological prerequisite for artificial general intelligence
Argues that probabilistic computation alone cannot produce cognition, developed against operational testing across more than fifty model configurations.
The systems on this page were built to be sold or to be hired for. This one is neither. Autistic children are among the heaviest users of assistive technology and the least served by it, because the products that reach them are built for a median user who does not exist. I would rather spend the same engineering discipline on a problem where the return is somebody else’s day getting easier.
A companion that listens all day, and keeps what it hearsProposal · nothing built, no data held
Problem
A child’s patterns show up in small things spread across a whole day, and by the time a parent or a therapist sits down to write notes, most of it is gone. What survives is what an adult remembered to record, which is not the same thing as what happened.
The idea
Something that is simply present and can be talked to for as long as the child wants, keeping behaviour and speech as a continuous record rather than a survey. Turn taking has to feel immediate, so speech in and speech out both run at conversational latency instead of the pause a round trip to a hosted model costs.
Isolation
One child, one domain, no shared execution memory and no route between domains. This is the architecture in my first paper, applied where the reason for it is not reliability but the fact that one child’s day must never be able to reach another’s.
Reaching out
Where something outside the sandbox would genuinely help the child, a narrow MCP server exposes it deliberately, one capability at a time, each reviewed before it is added. The default is that nothing leaves.
Safeguards
This is health data about a minor, so it is special category data under UK GDPR and it sits inside the PVG scheme in Scotland. Guardian consent before anything runs, withdrawn at any time with the record destroyed. Everything runs locally on open source models, on the family’s own device, so there is no processor and no transfer. Nothing the child says is used to train anything. A named clinician reads the record rather than a model acting alone, and the system offers observations, never conclusions.
What would stop it
It does not get built without a clinical partner and an ethics review. I am an engineer, not a clinician, and a system like this designed only by an engineer is exactly the kind that causes harm while meaning well.
The hard parts already exist, built for other reasons
QAI LabDomain isolation with no shared memory between domains, published with a permanent DOI.
KelvinFrozen rules that sit above the model and cannot be reasoned around, with maker and checker on every action.
DocuMinerEvery claim keeps the evidence it came from, and low confidence is stored as failure rather than dressed up.
Architecture view · scripted sequenceSynthetic records · nothing built
Sequence 06 · one turn through the stack
Credentials
Labelled as it stands
BSc Computing ScienceUniversity of the West of Scotland, expected 2028
In study
BA Business AdministrationAkdeniz University
Earned
Cisco CCNACisco, enterprise networking
Certified
AWS Solutions Architect AssociateSAA-C03
In progress
AWS Generative AI ProfessionalAmazon Web Services
In progress
Claude Partner NetworkAnthropic, Scotland
Member
Contact
Open to agentic AI systems, AI infrastructure, AI platform, LLM systems, backend and cloud engineering roles, and to project work for companies that need this built properly the first time. Scotland based, hybrid or remote.
Social responsibility
Work with no commercial returnThe systems on this page were built to be sold or to be hired for. This one is neither. Autistic children are among the heaviest users of assistive technology and the least served by it, because the products that reach them are built for a median user who does not exist. I would rather spend the same engineering discipline on a problem where the return is somebody else’s day getting easier.
A companion that listens all day, and keeps what it hearsProposal · nothing built, no data held
A child’s patterns show up in small things spread across a whole day, and by the time a parent or a therapist sits down to write notes, most of it is gone. What survives is what an adult remembered to record, which is not the same thing as what happened.
Something that is simply present and can be talked to for as long as the child wants, keeping behaviour and speech as a continuous record rather than a survey. Turn taking has to feel immediate, so speech in and speech out both run at conversational latency instead of the pause a round trip to a hosted model costs.
One child, one domain, no shared execution memory and no route between domains. This is the architecture in my first paper, applied where the reason for it is not reliability but the fact that one child’s day must never be able to reach another’s.
Where something outside the sandbox would genuinely help the child, a narrow MCP server exposes it deliberately, one capability at a time, each reviewed before it is added. The default is that nothing leaves.
This is health data about a minor, so it is special category data under UK GDPR and it sits inside the PVG scheme in Scotland. Guardian consent before anything runs, withdrawn at any time with the record destroyed. Everything runs locally on open source models, on the family’s own device, so there is no processor and no transfer. Nothing the child says is used to train anything. A named clinician reads the record rather than a model acting alone, and the system offers observations, never conclusions.
It does not get built without a clinical partner and an ethics review. I am an engineer, not a clinician, and a system like this designed only by an engineer is exactly the kind that causes harm while meaning well.
Architecture view · scripted sequenceSynthetic records · nothing built