yoandry
I build systems whose state can be proved rather than asserted, whether that state is money moving through an exchange or an answer from a language model.
Two problems that look unrelated are the same problem. An append-only event ledger can prove what happened; a mutable table can only assert it. An answer checked by entailment can prove it is supported by the documentation; one checked by embedding similarity can only assert that it is on the same subject. Both are the difference between a system that can be audited and one that asks to be trusted.
At NDAX, a regulated Canadian crypto exchange, I work on both layers. I own the architecture across agent orchestration, a layered guardrail stack, a replayable evaluation harness and the authenticated gateway between models and customer accounts, and I lead the team that builds on it. Before the AI work I built back-office, reporting and payments services for the exchange itself.
The grounding work is the clearest case. I replaced embedding-similarity grounding with an entailment-based judge after showing that similarity both false-blocked safe replies and passed answers the corpus did not support. In a regulated environment, “the model said so” is not an acceptable answer to a compliance reviewer, and designing for that from the start is most of the work.
Agent orchestrator. The service that turns a customer message into a grounded answer: intent routing, prompt assembly with few-shot selection, tool calling against internal APIs, streamed responses over WebSockets, session continuity and erasable user memory.
Guardrails. Sixteen independent response-safety checks covering groundedness, structured-output validation with fallback, formatting integrity, provenance and compliance-sensitive content. Grounding is checked by entailment, not embedding similarity.
Evaluation harness. An in-repo framework (runner, assertion library, LLM judge, versioned baselines), so a prompt or model change is measured against a replayable suite instead of judged by hand.
AI gateway. A NestJS service that is the single authenticated ingress for AI traffic and the only path to exchange internals, exposing internal APIs to agents as typed tools with generated parameter schemas, per-tool access control and full audit logging.
MCP tooling. Model Context Protocol servers turning OpenAPI specs and internal service operations into tools over STDIO and HTTP, under the same access controls as the APIs beneath them. They run in production for internal testers.
Coding agent. ndax-pilot, a Go command-line coding agent that runs on the company’s own Azure AI Foundry deployments, with a context engine, persistent memory per repository and a skill system, so engineers get agent help without code leaving our tenancy.
Chat surface. A Preact and Vite chat widget compiled to a standalone CDN bundle, embeddable on any page, plus the assistant and marketing surfaces that consume it.
Team. I lead two junior engineers and write every ticket they pick up to a ready-for-work standard: one repository, one pull request, one working day, and no design decision left open. Weekly sprints, estimates calibrated against measured cycle time, and security review on every authentication, money-movement and personal-data change.
Agent tooling. The team’s Claude Code plugin marketplace, which carries our ticket, estimation and review process into the coding agents we use. Releases pass a behavioural eval suite first, and agents must ask a person before writing to the issue tracker or the code host.
Exchange platform. A multi-tenant admin portal for the exchange’s business clients, built from scratch in Next.js with a NestJS backend, role-based access and four-eyes approvals. Also customer statement generation and a payments service brought under strict TypeScript.
Direction and standards. The cross-service contracts and the engineering organisation’s operational record: incident post-mortems, runbooks, workstation hardening and the development workflow the team works to.
- Languages
- TypeScript · Go · Python · SQL
- AI
- Azure AI Foundry · Model Context Protocol · RAG and grounding · LLM-as-judge evaluation · guardrail design
- Backend
- NestJS · Node.js · GraphQL · WebSockets · Redis · OpenAPI
- Event-driven
- Event sourcing · Kafka · Kurrent (formerly EventStore) · microservices · Nx monorepos
- Platform
- Linux · Docker · Kubernetes · Terraform · AWS · Azure
- Daily driver
-
Arch Ubuntu Debian