Connect business systems
APIs, CRM data and recurring workflows. Define the source of truth, handle duplicate events and make failures visible.
Shaaf · Software Engineer · UK-based, remote worldwide
I design and build integrations, internal tools and AI-enabled workflows. Python services, React interfaces and data processing—with demonstrations you can run and results you can inspect.
Python · SQL · FastAPI · TypeScript · React · Data engineering · AI & LLM integration · n8n · Docker · Linux
Bring the current workflow, the tools involved and the result you need. We agree a useful first milestone, then build against explicit acceptance criteria.
APIs, CRM data and recurring workflows. Define the source of truth, handle duplicate events and make failures visible.
Internal tools, reporting dashboards and web applications with a usable interface and checked outputs.
Document processing, knowledge retrieval and tool-connected features, with task-specific evaluation and a practical handover.
Selected work
Self-directed projects, with synthetic demonstration data clearly identified. Explore the working lab, the web application and the data outputs.
JavaScript · State machine · Idempotency · Recovery
An executable browser demonstration of event identity, queued work and a simulated CRM connector. Trigger duplicate input, a temporary timeout, an interrupted write or a permanent error. Inspect the stored state and download the execution trail.
TypeScript · React · FastAPI · pytest · Playwright · CI
A small order web app with a Python JSON API, SQLite and a strict TypeScript front end, rebuilt in React 19 and on a FastAPI server. The same API, database and browser tests judge every version.
Python · PDF · XML · OCR · Data quality
Synthetic invoice, customer and sales datasets turned into clean, checked outputs. These are demonstration projects, independently recounted; they are not client engagements.



Python · Web data · Structured data
Answers "what is the cheapest price, and who sells it" in code: finds shops, reads structured product data, keeps prices without VAT and in other currencies apart, and respects robots.txt.
Python · Public registers · Data validation
Checked a list of UK businesses against Companies House and their own websites before any contact, following UK PECR rules. Register lookups also cover France (Sirene) and Australia (ABN).
Python · Search · Official sources
Searches in each country's own language, reads official pages and PDFs, scores every source and quotes each finding with its link.
Swift · SwiftUI · macOS
A menu-bar app that brings email from 3 accounts, alerts, approvals and finished work into one panel.
Debian · Docker · n8n
An always-on server running n8n workflows, a private search engine (SearXNG), a monitoring service and a local model server.
The platform
An independent platform project connecting persistent jobs, tools, retrieval and verification. It is where I investigate orchestration, recovery and how to turn model output into checked work. The results below describe specific recorded experiments.
Turns a request into steps and runs each step with a tool. Every result is stored with a checksum, so any answer can be traced back to what was read.
26 tools behind one registry: web search, page and PDF readers, OCR, company registers, prices, tables, files and calendar. Each tool declares what it may do, and sending an email waits for a person’s approval.
Code pulls records out of every tool result. A fact in an answer stands only if a single record holds both its value and what it describes, so a swapped or invented figure is refused.
When code can answer, no model is asked. Price comparison, business checks, counting and table work run as fixed methods; a live UK price question took 49 seconds.
A search engine over 83,589 passages of technical documentation that combines keyword ranking with vector embeddings, and a research engine that searches each country in its own language.
A supervisor restarts failed work with growing pauses between tries. Jobs wait out internet outages instead of failing, and stop, pause and resume take effect on the next turn.
Heavy work starts only when memory, heat and battery allow it. If the user starts a game, a running job steps aside at once and picks up again afterwards.
The code is private. I walk through it in interviews and can share source under NDA.
Problem-solving record
Selected engineering investigations: the observed failure, the repair and its recorded checks.
Skills
Broad, hands-on skills across the stack, each one used in a real project shown above.
Python services and REST APIs (also on FastAPI) with SQL storage, and typed front ends in TypeScript and React. Built with retries, idempotency and failure handling.
Messy data turned into clean, checked outputs: cleaning, de-duplication, validation, reconciliation, PDF and XML extraction, OCR and reporting.
Agents that use real tools step by step, local and on-device models, retrieval, and evaluation on held-out tests, with code that checks every answer.
Workflows and integrations that connect systems and data sources reliably, including polite web data extraction and public registers.
Automated tests at every layer, regression tests written from real faults, and release gates that stop a bad build.
Always-on services: supervision and restarts, admission control, release gates with rollback, monitoring, tracing, containers and backups.
A native macOS app in Swift and SwiftUI, plus command-line tools for on-device OCR, speech-to-text and Core ML.
Approval workflows, command allowlists, process sandboxing, signed audit logs and a consent-based data vault, plus OWASP practice in an isolated lab.
International
My projects already cross borders. I build software that handles other countries’ documents, registers, languages and currencies correctly, and I work remotely with teams anywhere.
About
I’m a self-taught software engineer based in the UK. Since mid-2026 I have independently designed, built and run the platform above, along with the projects around it.
Vorthryss is my independent engineering practice. I originate ideas and architecture, compare competing approaches, and use AI tools to implement, critique and test them. I take responsibility for the scope, design choices and acceptance criteria.
I like problems where software meets the real world: messy data, documents from other countries, machines that restart in the middle of a job. I make small, tested changes and write down what changed and why.
Experience
Principles
I pair implementation changes with relevant tests and inspect the result. Versioned releases can be rolled back.
When something breaks, I find the cause, fix it, and turn the failure into a test so it can’t quietly come back.
Where there is no record, I write “unknown” instead of a likely-sounding guess.
What changed, why, and the evidence beside it, so anyone can pick up the work.
Contact
Have a workflow to connect, an application to finish or an AI feature to make reliable? Send the goal, current stack and one example of the desired result. I also welcome remote software-engineering roles.