What I actually work on
Three systems, none of them a chatbot.
Employers and clients aren't named here — the first is under NDA and the second isn't my platform to advertise. What they're built from is exact.
Day job · since 2025
An enterprise AI intelligence platform for a US healthcare group
An internal platform that lets staff ask questions of a very large body of regulated company documents and get an answer with its sources, rather than filing a request and waiting two days.
- Python
- FastAPI
- LangGraph
- AutoGen
- MCP
- MongoDB Atlas Vector Search
- Docker
- Kubernetes
- Built retrieval pipelines over enterprise document corpora — chunking, embedding, and vector search on MongoDB Atlas — with the citation trail carried all the way through to the answer.
- Composed the agent layer as a graph rather than a chat loop: typed state, explicit routing between steps, and a defined failure edge for every node.
- Wrote MCP servers that expose internal systems to the agents as tools, so the model asks for data through a contract instead of being handed a database.
- Shipped the services as FastAPI on Kubernetes, with the usual unglamorous half — timeouts, retries, structured logs, health checks.
The interesting part
Regulated fields have to be unreadable at rest, but the platform still has to query them. Current work is MongoDB client-side field-level encryption inside the framework: the data is encrypted and decrypted in the application, the database only ever stores ciphertext, and the key material never reaches it. Deterministic encryption on the fields that must remain matchable, randomised on everything else. The verification step is the honest one — insert with the encrypting client, read back with a plain client, and confirm you get binary you cannot understand.
Freelance · since Jan 2026
The AI layer of a fund and portfolio management platform
A development-finance investor's system for funds, investments, disbursements, ESG compliance against IFC Performance Standards, and risk. The product already existed; the AI layer did not. I was the engineer who built it, end to end, on top of a live SQL Server schema.
- Python
- FastAPI
- MCP
- GPT-4o function calling
- SQL Server
- React
- Built an MCP tool server exposing roughly forty-five business operations over the existing database — each one a typed, permissioned contract rather than free-form SQL from a model.
- Built a conversational form assistant: an investment officer describes a deal in a sentence, and the agent fills a long multi-field form, validating each field against the same rules the UI enforces.
- Automated the risk workup — inherent, contextual and systemic risk plus outlook — as rules-based scoring for the numbers with a model writing the narrative, never the other way round.
- Put a human approval gate in front of anything that writes. The agent proposes; a person commits.
The interesting part
Letting a language model near an investment database is the easy version of this problem to get wrong. The scores are computed by rules, deterministically, and are reproducible without a model in the loop at all — the model's job is to explain a number it did not choose. Every tool is scoped, every write is staged behind an approval, and the agent cannot reach anything the tool server does not explicitly expose. That constraint is the product, not a limitation of it.
This studio
The assistant stack behind the sites I sell
The same shape of system, sized for a business with one owner and a phone. An enquiry arrives at midnight; by morning it has been understood, priced, logged and drafted a reply.
- Python
- FastAPI
- Next.js
- OpenAI SDK
- SQLite
- Vercel
- Five narrow workers behind one orchestrator — qualify, quote, follow up, write content, answer reviews — each with a single job it can be tested on.
- Typed conversation state carried between steps, so the routing is inspectable and a failed run can be replayed rather than guessed at.
- Quotes priced against the owner's real rate card by code, with the model doing the reading and the wording, never the arithmetic.
- A fallback path that answers from written rules when the model is unavailable or the day's budget is spent, so the assistant degrades instead of dying.
The interesting part
Nothing goes out unsent. Follow-ups to quiet leads are drafted in the owner's voice and wait for a thumb on a phone, because a decor studio's reputation should not depend on a language model's judgement at 2am. It is a smaller decision than it sounds and it is the one that makes the difference between a tool a business keeps and one they switch off in week three.
If you want the technical version of the pitch, ask for it.
I'm happy to go through how the assistant would be wired to your business, what it can and can't decide on its own, and where the costs sit. It's a better conversation than a brochure.