Neil Cayton

Business Systems Engineer

I build systems that refuse to guess.

Document automation, retrieval chatbots, and event-driven orchestration — in production, with numbers attached. When confidence is low, my systems stop for a human instead of writing a wrong record.

Remote for UK hours · based in the Philippines, GMT+8 · BS Computer Science, Saint Louis University (2026)

Neil Cayton

prompt

reply

Who is Neil Cayton. Neil Cayton, Business Systems Engineer. 5,900 documents to date. 9,900 line items across 11 layouts. Low confidence stops for a human, never guessed. To talk to Neil, use the booking link on this page.

Documents are classified before they are read. Rules handle the layouts the system knows, a model handles the ones it does not, and broken pages are read as images. Anything the system is not sure about stops in one review list with the reason attached — the same gates now generalize to invoices, bank statements and KYC packs.

5,900

documents processed to date

9,900

line items extracted and normalized

11

document layouts in production

1

review queue — low confidence stops here, never guessed into the ledger

Selected work

Four systems, each with the same spine: parse the mess, normalize it, validate before writing, and fail loudly.

01 · Production · current role

Document automation pipeline

The order ledger for a UK food and beverage supplier selling into large national grocery chains runs on a pipeline I own end to end: ingestion, classification, extraction, validation, deployment.

  • Classification before reading — rules for known layouts, a model for the rest, broken pages read as images
  • One review queue with the reason attached; nothing silently guesses into the ledger
  • Grew from the first layout to 11 layouts without adding reviewers
PythonNode.jsLLM APIsPostgreSQLSupabase Edge FunctionsDocker Compose
Documents in email · PDF · scan Classify rules first, model for unknowns, OCR fallback Extract + validate Confidence gate high Ledger grocery POs low Review queue reason attached PostgreSQL state · Slack audit log · rate-limited retries · loud failures

02 · RAG chatbot

Grace — support chatbot that keeps answering

A support assistant that answers from the company's own documents — and keeps answering when an LLM provider goes down, because the provider is treated as an unreliable dependency, not a prerequisite.

  • RASA NLU for intent, FAISS retrieval over the knowledge base, FastAPI backend
  • Multi-provider fallback: an outage degrades to the next model, not an error page
  • Answers cite the retrieved source, so a wrong answer is traceable to a document
PythonFastAPIRASA NLUFAISSMulti-LLM fallback
User message FastAPI backend RASA NLU intent + entities FAISS retrieval, top-k LLM router primary → next Answer + cited source provider outage → automatic failover to the next model

03 · Data pipeline

Order extraction — GPT-4 normalization

Customer purchase orders arrive as email bodies, PDF attachments and scans, in formats that disagree with each other. The pipeline parses each layout, normalizes with GPT-4, and validates against one schema before anything is written.

  • Multi-format parsing: email text, structured PDFs, scanned images via OCR
  • GPT-4 normalization into one schema — quantities, SKUs, dates, delivery windows
  • Validation gate before write; failures return to review with the raw text attached
GPT-4PythonSchema validationOCRETL
POs in email · PDF · scan formats disagree Layout parser per-format rules GPT-4 normalization Schema validation Structured orders JSON failure → review with raw text attached 9,900 line items · 11 layouts · one schema

04 · Infrastructure

Event-driven orchestration

Company operations run through orchestrated workflows: n8n DAGs with custom Node.js triggers, webhooks across half a dozen platforms, and Postgres as the source of truth for execution state.

  • LLM-in-the-loop remediation: when a step fails, a model decides the response and retries under rate limits
  • Webhook integrations: Notion, Microsoft Graph, Slack, and an ERP platform
  • Containerized Python services with health checks and auto-restart via Docker Compose
n8nNode.jsPostgreSQLDocker ComposeWebhooksSlack
Webhooks in Notion · Microsoft Graph Slack · ERP platform Custom triggers Node.js, event-driven n8n DAG orchestration LLM remediation decide → retry, rate-limited Python services Docker · health checks Next step or resolved PostgreSQL — execution state + error logs Slack — every failure, loudly

Earlier work

QA

NOAH — System Integration Testing

QA internship: integration testing across release candidates, reproduction and regression passes before production sign-off.

Mobile

DOST-funded React Native app

Cross-platform mobile build for a government-funded project, from spec to device testing.

Community

AWS Learning Club · SLU

Cloud learning community at Saint Louis University — hands-on sessions alongside the BS Computer Science degree (2026).

Where a wrong record costs more than a delay

The same gates apply to invoices, bank statements and KYC packs. If your documents disagree with each other, that is the exact problem I work on.