Lab notes

Fifteen projects, from governed AI agents to quantum research. Each note covers the problem, what we built, how it is controlled, and the evidence behind it.

"Reference" and "demonstration" mean the work ran on synthetic or public data. Client engagements are summarised at a level that protects confidentiality.

Governed autonomous agents

Agents that investigate, decide and act through controlled tools. Autonomy is set per workflow, from advisory to act-with-approval. Every step is logged, and consequential actions require human approval.

The bridge of a ship, with rows of monitors and control panels
  1. Diagram: a planner hands work to an investigation loop. A critic sends weak findings back for remediation, and a deterministic verifier checks the result before it becomes a report in which each claim cites its evidence. ERP data, public filings and internal documents feed the investigation through read-only access. code runs the process remediate Plan Investigate Critique Verify ERP Filings Docs read-only, guarded access Report each claim cites evidence

    Finance

    Autonomous financial investigation platform

    Explains why profitability moved, with an evidence trail an auditor can follow.

    Read the full note
    The challenge
    Finance questions draw on ERPs, external filings and internal documents. An answer without provenance cannot be audited or signed off.
    The solution
    An investigation platform in which code, not the prompt, controls the process: planner → investigation loop → adversarial critic → remediation loop → deterministic verifier.
    Controls and evidence
    • Every fact is stored with its source. Every claim is classified (fact, calculation, assumption, scenario or inference) and lists the evidence for and against it.
    • Database access is read-only and guarded. State, memory, recovery and permissions are explicit policy.
    • A configuration-driven evaluation suite scores the agent before any demonstration.
    Data sources
    Guarded database queries, public regulatory filings, public macroeconomic series, internal documents, anomaly detection and a scenario engine.
    Status
    Full platform with continuous integration, documentation and a demonstration script. It runs on a labelled synthetic ERP, so it can be evaluated without client data.
    Autonomy level
    Advise. The platform reads, analyses and reports, and a person acts on the findings.
    Relevant to
    Corporate finance, internal audit and risk functions.
    Technology
    Python 3.11, FastAPI, SQLAlchemy (Postgres/SQLite), Pydantic, OpenAI Responses API, Next.js, Tailwind, Docker Compose, GitHub Actions (ruff, mypy, pytest)
  2. Diagram: six agents share one pipeline. They gather, assess, validate and decide, then a person approves before the agent executes and verifies the change by reading it back. Every tool call is written to an audit log. six agents, one pipeline Gather Assess Validate Decide Approve Execute Verify Audit log a person approves read-back every tool call

    Supply chain, maintenance, field service

    Operations automation agents

    Six agents that investigate a business event, decide, act through controlled tools and escalate to a person when required.

    • 6agents on one shared pipeline
    • 7steps from event to verified action
    Read the full note
    The challenge
    An agent that can commit spend or change records needs hard limits and a full audit trail before it can be connected to core systems.
    The solution
    Agents for supplier disruption, maintenance triage, field-service rescheduling, procurement exceptions (three-way match), inventory stockouts, and a cross-domain operations control tower.
    Controls and evidence
    • One shared pipeline: gather → assess → validate → decide → approval gate → execute → verify.
    • Spend limits, approved vendors and tolerances are enforced in code. Writes are idempotent and verified by read-back. Every tool call is audited.
    • Run state is persisted, so a human approval can resume the work later.
    • The stockout agent survives a forced shutdown and replays safely.
    • Each agent ships with deterministic evaluations and unit tests. Without a model API key it falls back to a deterministic heuristic.
    Status
    All data is synthetic. The tool layer is designed to map onto a production ERP or enterprise asset-management system.
    Autonomy level
    Act with approval. Consequential actions wait for a person.
    Relevant to
    Global manufacturing, utilities, procurement and field-service operations.
    Technology
    Python 3.12, LangGraph, MCP, FastAPI, Pydantic, SQLite (simulated ERP/EAM), TypeScript, Vite
  3. Diagram: a customer chats with the agent, which reaches the retailer's catalogue and ordering systems through the Model Context Protocol to search, check delivery and build a cart. The conversation ends in a payment link that the customer completes. Birthday gift ideas? 3 picks within budget Add the second MCP Search Delivery Cart Payment link the customer pays

    Retail and e-commerce

    Conversational commerce agent

    A single conversation takes a customer from intent to a working payment link, in three languages.

    Read the full note
    The challenge
    Gift purchasing involves search, comparison, delivery checks, payment and tracking. Each extra step between intent and payment is an opportunity to lose the customer.
    The solution
    A chat-first agent integrated with a retailer's catalogue and ordering systems through the Model Context Protocol. Built for an industry agent-building competition in 2026.
    Capabilities
    • Search, delivery check, cart, guest checkout with a live payment link, and order tracking, all within the conversation.
    • Photo-based search, a bundle builder that works to a stated budget, side-by-side comparison, and personalised message previews in a non-Latin script.
    • Three languages, including a non-Latin script and a mixed local-English style.
    • Persistent memory of recipients, occasions, location, language and budget, with a local holiday calendar.
    • Streaming responses with parallel tool calls, rendered as rich product cards and delivery quotes.
    Resilience
    A dependency-free integration client with synonym retry, browse fallback when search returns nothing, stale-on-error caching, jittered retries and session reconnect. Installable progressive web app that meets accessibility requirements (live regions, focus management, reduced-motion support).
    Autonomy level
    Act with approval. The customer reviews the cart and completes payment.
    Relevant to
    Retail, gifting and marketplace operators.
    Technology
    Next.js 14 (App Router), TypeScript, Tailwind, OpenAI function calling, Model Context Protocol, custom SSE protocol, Vercel

Auditable knowledge systems

Retrieval, knowledge-graph and ontology solutions in which each answer traces to a source or a rule.

Rolling archive shelves in a records store
  1. Diagram: a question is answered from a knowledge graph of people, companies, regions and case stories, following a path through the graph to the answer. When the graph holds no answer, the assistant falls back to web search. Question person company region case story person Answer no answer in the graph Web search

    Advisory services

    Knowledge-graph advisory assistant

    An assistant that answers from a knowledge graph first, and states clearly when the graph holds no answer.

    Read the full note
    The challenge
    Interviews and case notes hold an organisation's expertise, but the material cannot be searched. Plain vector search misses how people, companies and events relate.
    The solution
    Two connected components for an advisory product.
    • The assistant: Answers questions from a Neo4j graph through a Cypher query tool, falls back to web search when the graph has no answer, and summarises long conversations to manage memory. Runs with Qdrant indexing and a Redis/Postgres-backed LangGraph server.
    • The extractor: Converts raw interview transcripts into a graph of people, companies, regions and case stories, with typed output ready to load.
    Related build
    An incident-knowledge assistant in which a router selects vector search or generated graph queries for each question.
    Status
    Client engagement, delivered with colleagues. Client confidential.
    Autonomy level
    Advise. The assistant answers questions and does not change records.
    Relevant to
    Advisory, consulting and any firm with years of unstructured case material.
    Technology
    LangGraph, Neo4j, Qdrant, GPT-4o, Groq, Pydantic, Docker Compose
  2. Diagram: a question goes to four specialist agents for interactions, conflicts, similarity and alternative medication. Each one queries a formal medical ontology, and a language model only phrases the structured result as the answer. Question Interactions Conflicts Similarity Alternatives facts from the ontology Ontology Answer the model only phrases it

    Life sciences

    Ontology-grounded drug-interaction analysis

    Drug-interaction answers that trace to a formal medical ontology rather than to a model's recollection.

    Read the full note
    The challenge
    In a clinical setting, a fluent but incorrect answer is worse than no answer.
    The solution
    Four specialist agents (interaction, conflict, similarity and alternative medication), orchestrated with LangGraph. Each queries an OWL/RDF ontology. A language model then converts the structured results into a readable answer.
    Controls and evidence
    Facts come from the ontology, and the language model only phrases them. Every query is logged.
    Status
    Public demonstration with inference tracking, a web interface and a command-line tool.
    Autonomy level
    Advise. The system answers questions and does not act on them.
    Relevant to
    Pharma, clinical decision support and any domain governed by a formal rulebook.
    Technology
    Python, LangGraph, LangChain, RDFlib/OWL, Groq (open-source models), Streamlit, Hugging Face Spaces
  3. Diagram: a technical paper is read by parallel agents for terminology, figures, mathematics and structure, which produce a glossary, answers and figure notes. The source text is left intact. ∑ f(x) dx source left intact parallel, with live progress Terms Figures Maths Structure Glossary Answers Figure notes

    Research-intensive teams

    Technical document intelligence

    Dense technical papers made easier to read, with the source text left intact.

    Read the full note
    The challenge
    Specialists spend hours on terminology, equations and figures before reaching the substance.
    The solution
    Three iterations, from a research prototype to a full-stack application to a containerised retrieval stack.
    • Parallel analysis agents cover terminology, figures (through vision models), mathematics and document structure, and report progress in real time.
    • The latest version routes each request (question, glossary or figure) across a vector store, cache and relational database.
    Evidence
    Run end to end on a landmark machine-learning paper: sections parsed, figures described, glossary built and a quality report produced.
    Relevant to
    R&D, due-diligence and compliance teams with heavy technical reading.
    Technology
    FastAPI, LangGraph, Azure OpenAI (GPT-4o and embeddings), Next.js 14, KaTeX, Qdrant, Redis, Postgres, Docker Compose
  4. Diagram: collectors take dated snapshots from three supermarket chains and normalise unit prices and promotions into one product model. A free-text shopping list is searched and reranked to find the lowest-priced items in stock. Chain A Chain B Chain C dated snapshots Normalise unit prices Shopping list Search vector search, rerank cheapest in stock Basket

    Retail data

    Retail price intelligence

    A natural-language shopping list matched to the lowest-priced in-stock items across several supermarket chains.

    Read the full note
    The challenge
    Retail data is inconsistent, changes daily and arrives in a different format from every source.
    The solution
    Our scope was the data collection and the retrieval and agent layers.
    • Collectors for three regional supermarket chains write dated snapshots with error manifests and normalise unit prices and promotions into a single product model.
    • A LangGraph agent parses the free-text list, runs vector search, reranks and summarises.
    • Hybrid filtering on store, branch, maximum price and stock, using Firestore vector search with Gemini embeddings. An earlier Qdrant implementation is retained.
    Controls and evidence
    The model provider can be swapped (Groq, OpenAI, DeepSeek or Gemini), and the architecture is documented with UML and Mermaid diagrams.
    Status
    Team engagement.
    Relevant to
    Retail intelligence, pricing and marketplace teams.
    Technology
    Python, Playwright, Crawlee, LangGraph, Firestore, Qdrant, Streamlit, Expo/React Native

Simulation and decision support

Deterministic engines with live operational interfaces, used to compare strategies before capital is committed.

A drone flying over a dense forest
  1. Illustration: drones leave a base to search terrain and reach fires. In testing across 30 scenes in three regimes, no learned policy beat a simple nearest-fire rule. fire drone 30 scenes, 3 regimes Base Simple rule unbeaten

    Emergency response, logistics

    Autonomous response-planning simulators

    Teams of autonomous drones learn to coordinate, and a live map interface lets stakeholders compare strategies before committing resources.

    • 30scenes across 3 regimes
    • 0learned policies beat the simple rule
    Read the full note
    The challenge
    Emergency and logistics plans are costly to test in the field. A simulator lets decision-makers test them first.
    The solution
    Two connected platforms.
    • Wildfire response: Drones search bushland for fires and suppress them. Policies trained with DQN, MAPPO and MADDPG are compared against a hand-written greedy expert across 30 scenes in three regimes, including a stress regime with eight fires, lossy radio and a binding battery constraint. Documented in a research paper in conference format.
    • Flood relief: Drones deliver medicine and water to cut-off communities, scout roads and monitor slopes at risk of failure. Built on real terrain, road, population and river data from a recent major flood event. Runs on a standard CPU laptop.
    Controls and evidence
    • The flood model is calibrated against satellite-derived flood extents. Every calibration score and every failed acceptance gate is recorded.
    • Fixed seed pools separate training, checkpoint selection and held-out reporting.
    • Reported finding: A simple nearest-fire rule proved very difficult to beat, and no learned policy outperformed it. The paper lists its own limitations.
    Applicable to
    Logistics, emergency response, infrastructure monitoring and any problem of the form "compare strategies before committing capital". A deterministic simulation core, a streaming API and a map front end.
    Technology
    Python, NumPy, PyTorch, PettingZoo, FastAPI, WebSockets, React, MapLibre, Cesium, pytest
  2. Diagram: farm work moves from plan to recommendation to work order to actual, with automatic warnings on application rates and pre-harvest intervals. The offline-first app queues records on the device and syncs them without creating duplicates. fields, mapped offline queue, no duplicates Plan Recommend Work order Actual ! rates checked, intervals warned

    Agriculture

    Field-operations and compliance platform

    A collaborative farm-management application, taken from market research to a working product.

    Read the full note
    The challenge
    Farm records feed audits, safety rules and cost control, and fields often have no connectivity.
    The solution
    Market study → product requirements → technical architecture report → working application.
    • Offline-first progressive web app with an idempotent sync queue, so a retry never creates a duplicate record.
    • A plan → recommendation → work order → actual pipeline that validates application rates and warns automatically about pre-harvest and re-entry intervals.
    • Audit evidence-pack PDF export, a cost-of-production ledger, five user roles and map views on PostGIS.
    Relevant to
    Agriculture and any field-operations business with compliance obligations.
    Technology
    Next.js 14, TypeScript, Prisma, PostgreSQL/PostGIS, Leaflet, turf, pdf-lib, jose
  3. Diagram: customer records pass through business rules first and a machine-learning model second. Customers likely to leave are flagged, each prediction comes with its main reasons, and every decision is written to an audit log. customers Rules Model rules first, model second reasons Audit log

    Subscription businesses

    Churn prediction for data-sparse businesses

    Identifies customers likely to leave, explains why, and keeps a record of every decision.

    Read the full note
    The challenge
    Businesses with limited history and strict privacy obligations need predictions they can defend.
    The solution
    A clean-architecture churn system. Business rules run first and machine learning second. SHAP explains each prediction. A GDPR-style audit log records every decision. Served through an API and a command-line tool.
    Status
    Demonstration trained on synthetic data.
    Relevant to
    Subscription and membership businesses.
    Technology
    scikit-learn, SMOTE, SHAP, FastAPI, pytest

Applied machine learning with evidence

Vision, fraud and prediction models, reported on held-out data with stated limitations.

A crate of tomatoes at different stages of ripeness
  1. Diagram: a piece of produce with two defects outlined and measured. Background removal and four segmentation methods find each defect, and an ontology reasoner returns a diagnosis together with its reasoning. size · colour · coverage Remove background Segment (4 methods) Ontology reasoner Diagnosis + reason

    Agriculture, quality control

    Explainable visual inspection

    Finds, measures and explains defects on produce, and shows the reasoning behind each diagnosis.

    • 85.0%F1 on a public fruit-disease benchmark
    • 4segmentation methods per defect
    Read the full note
    Recognition
    Originated as an academic research project and became the basis of a Best Paper Award at an international AI conference in 2025.
    The solution
    Automatic background removal, then defect segmentation by four methods (colour ranges, K-means, adaptive thresholding and edge detection). For each defect: size, colour, centre, bounding box and share of total coverage.
    Controls and evidence
    A plant-disease ontology with a reasoner encodes symptoms, colour profiles and morphology, so every diagnosis arrives with its logic.
    Result
    85.0% F1 on a public fruit-disease benchmark, competitive with established deep-learning image models while remaining fully interpretable.
    Also delivered
    A web application with live parameter tuning and a real-time camera mode.
    Relevant to
    Agri-tech, food quality control and any inspection task where the reason matters as much as the result.
    Technology
    Python, OpenCV, rembg, scikit-learn, OWL, Pellet, Streamlit
  2. Diagram: a link is scored by three independent models: gradient-boosted trees on URL features, an LSTM on characters and a language model for meaning. A confidence-weighted vote gives the verdict, and the vote re-weights automatically if the language model drops out. https://… XGBoost LSTM Llama 3.1 Vote verdict re-weights if one drops out

    Security and fraud

    Multi-model phishing detection

    Three independent models vote on whether a link is malicious, and the service continues if one drops out.

    • 97.1%LSTM accuracy on 62.5k held-out URLs
    • 99.6%LSTM ROC AUC on the same set
    • 92.0%ensemble accuracy, 1.71 s per URL
    Read the full note
    The challenge
    Any single model has a blind spot. Three different model types cover for one another.
    The solution
    XGBoost on 20+ URL features plus TF-IDF, a bidirectional LSTM on character sequences, and Llama 3.1 (via Groq) for semantic analysis with reasoning. An orchestrator fuses their confidence-weighted scores. If the language model is unavailable, the remaining models are re-weighted automatically.
    Results
    • The LSTM, trained on 250k URLs, reached 97.1% accuracy, 98.3% precision, 95.8% recall and 99.6% ROC AUC on a 62.5k held-out set.
    • The full ensemble reached 92.0% accuracy at 1.71 seconds per URL on a 600-sample benchmark.
    • Benchmark scripts for each model and for the ensemble are included, so the figures can be reproduced.
    Also delivered
    A web interface with confidence indicators and per-model breakdowns, a command-line tool and a Python API.
    Relevant to
    Security, fraud and trust-and-safety teams.
    Technology
    Python, XGBoost, PyTorch, Groq/Llama 3.1, scikit-learn, Streamlit

Advanced research

Computational biology, quantum computing and multi-agent reinforcement learning, taken from paper to working software.

Gloved hands pipetting a sample into a test tube
  1. Illustration: a small molecule docked in a protein pocket, with two alternative poses outlined. Poses from three docking engines are rescored and then validated. poses compared across engines Vina DiffDock Boltz-2 Rescore poses Validate

    Drug discovery, gene therapy

    Molecular docking and binding-affinity research

    Multi-engine docking pipelines and foundation-model research for drug discovery and gene therapy.

    Read the full note
    Note
    Proprietary engagement. Described at summary level only.
    The challenge
    Different docking engines produce different poses. Teams need a way to compare, rescore and validate them.
    Scope
    • Docking pipelines that combine several engines (AutoDock Vina, DiffDock and Boltz-2), with pose rescoring and validation.
    • Foundation-model research on protein-ligand binding affinity and pose-confidence estimation.
    • Molecular dynamics simulation and engineering of viral capsids for gene-therapy delivery, and quantum methods for molecular simulation.
    • Agentic architectures with memory, planning and tool orchestration, plus research on agentic explainability.
    Relevant to
    Biotech, pharma and gene-therapy R&D.
    Tools
    AutoDock Vina, DiffDock, Boltz-2, GNINA, molecular dynamics, Qiskit, PennyLane
  2. Diagram: 17,967 compounds are cross-checked against 142 approved-drug seeds across five databases and clustered into a labelled set of about 14,400 drug-like and 3,200 non-drug-like compounds. A classifier is trained, then a validity review checks what its score really means. 17,967 compounds Cross-check Cluster 142 drug seeds, 5 databases Labelled set Classifier Validity review 14.4k drug-like, 3.2k not score partly circular

    Cheminformatics

    Drug-likeness modelling with validity review

    A labelled dataset and classifier built from 17,967 compounds in a public medicinal-plant database, with an independent review of what the score means.

    • 0.999headline AUC, partly circular
    • 0.945AUC from a single-feature rule
    Read the full note
    The solution
    A pipeline that cross-references 142 approved-drug seeds across 5 public databases. Clustering and PCA outlier removal yield about 14.4k drug-like and 3.2k non-drug-like compounds. Fingerprint-based structural splits, SMOTE/ADASYN for class imbalance, and an XGBoost classifier.
    The validity review
    The headline AUC of about 0.999 is partly circular, because the labels derive from the same features. A single-feature rule already reaches 0.945 AUC, so the next phase requires verified negative examples.
    Why it is included
    It shows the validity check we apply to any model before calling it complete.
    Relevant to
    Cheminformatics and ML teams that want an independent review of a result.
    Technology
    Python, RDKit, pandas, scikit-learn, imbalanced-learn, XGBoost, ChEMBL API
  3. Diagram: an image patch is split into frequency bands by a quantum Fourier transform, a trained variational circuit learns which bands to keep, and the result is measured on real quantum hardware and under simulated noise, then scored by PSNR and SSIM. real hardware and simulated noise patch QFT Rθ Rθ Rθ Rθ kept bands scored by PSNR and SSIM

    Quantum computing

    Hybrid quantum-classical compression

    A hybrid compressor tested on real quantum hardware and under realistic noise.

    • 50image patches scored
    • 6noise levels tested
    Read the full note
    The challenge
    Claims about quantum advantage are easy to make and hard to verify. This work runs the circuits on real hardware and measures them against a classical baseline.
    The solution
    A Quantum Fourier Transform splits image patches from a standard benchmark into frequency bands. A variational quantum circuit, trained with PennyLane, learns which bands to keep.
    Method
    Evaluated on real quantum hardware (Qiskit Runtime) and under gate noise in a simulator, against a classical thresholding baseline. Scored with PSNR and SSIM over 50 patches at 6 noise levels.
    Delivered as
    Self-contained packages, single-file notebook versions, verification scripts and publication-ready figure generation.
    Relevant to
    Organisations assessing where quantum methods are, and are not, ready.
    Technology
    Qiskit, Qiskit-Aer, IBM Quantum Runtime, PennyLane, NumPy

What are you building?

Tell us what you're working on and we'll get back to you within two working days.

Start a project