Senior full-stack engineer. Python and FastAPI on the backend, React on the front, on PostgreSQL and the cloud. I build multi-tenant SaaS platforms for financial and enterprise workflows, with secure authentication and role-based access. PhD in distributed systems.
A multi-tenant governance platform: one product where every member organization signs in and runs its own operations end to end, fully isolated. React on the front, a Python FastAPI service behind it, with per-tenant role-based access, session authentication, an AI layer, and an immutable audit log. Serves 85+ organizations.
Multi-tenant by design: each organization’s data, members, voting and documents are isolated, with role-based access enforced per tenant.
React/Next.js front end over a typed API; a Python FastAPI service runs the AI layer (retrieval with cited answers, LLM document classification behind a human-review queue).
Session-based authentication, per-tenant RBAC, and a tamper-evident, hash-chained audit log for every action; containerized behind a load balancer with CI/CD.
Human approval gateA pending €31,450 movement with its full transaction log and grant attribution; balance records show current vs. pending impact before anyone signs off.
Append-only ledger38 movements across varied counterparties with approved, rejected and pending states — reversals are compensating entries, nothing edited in place.
Read-only AI agentsAgents reach the ledger through an MCP server under scoped, auto-minted keys; no write tools exist.
Counterparty CRMContacts with owners and follow-ups across the organization's counterparties.
A financial-operations platform, in production, where fund accounting, invoices and bank reconciliation run on an append-only ledger, and every movement waits on a human sign-off. Adopted across public and social-economy institutions. The closest thing I have built to a financial-automation platform: complex money workflows, auditable by construction.
Financial workflows end to end: fund accounting, invoices and bank-statement reconciliation on an append-only ledger — reversals are compensating entries, nothing edited in place.
Role-based access and an approval gate, so sensitive financial actions only execute after a human sign-off.
AI agents read the organization’s ledger, funds and documents through an MCP server under scoped, least-privilege keys.
Approval queueEvery agent action is a proposal — quick yes/no calls and deep reviews, tiered by estimated review time. Nothing executes without an explicit human verdict.
The fleetFive role agents — inbox, outreach, social, finance, research — with live sessions, current objectives and what is waiting on the owner.
A product built on LLM agents with a governance layer: AI proposes, a human approves, and nothing sensitive ships without a yes. The pattern for adding AI and LLM capabilities to an existing platform without giving up control or auditability.
LLM-powered features in production: retrieval-augmented answers over a knowledge base, with human-in-the-loop approval on sensitive actions.
Designed so AI capabilities can be bolted onto a platform safely, with every action on an audit trail.
Built and ran the platform as CTO of FYX Gaming: a settlement gateway moving in-game financial assets between game backends and public blockchains, for live titles with large user bases. The wider platform settled millions of transactions a day, on AWS.
Owned architecture and delivery end to end on AWS: took over a messy codebase and hardened it while live, including a database migration with the system running.
A C#/.NET settlement core with a TypeScript/Next.js web layer, settling financial assets across systems at high throughput; releases cut from manual hours to minutes.
Signature-based authentication and upgradeable smart contracts for the export/import flow.
A settlement and management platform for renewable energy communities, in production and backed by the EU LIFE programme. It turns raw meter data into clear, auditable financial accounts for every member, every month.
Multi-party financial settlement: register members, set a sharing coefficient once, and settle automatically every month with regulator-ready exports.
28,000+ quarter-hour meter readings processed into monthly auditable accounts.
Next.js/React front end, Prisma over PostgreSQL, and role-based access.
An AI decision-support platform for an inter-municipal government of 10 municipalities, live in production: the public archive ingested into a knowledge graph, searchable semantically and answerable through AI agents that always cite their sources.
Internal RAG agent for staff and an anonymous public WhatsApp assistant, both with cited sources.
Federated by municipality with per-tenant access control; Google Drive, SharePoint and Diário da República integrations.
Verification flowThe multi-chain transaction-verification flow in Windmill: one entry point fans out to a per-blockchain verifier branch (Tezos, NEAR, Neo N3, IOST, Mina…), then results are collected, normalized and labelled.
The workspace70+ scripts and flows behind the verification service — per-chain verifiers, RPC fallbacks and QA harnesses.
digitalsurge.com.auThe client: an Australian cryptocurrency exchange.
Workflow automation and blockchain-API integration for an Australian cryptocurrency exchange: pipelines over exchange APIs, on-chain data and scraped sources, reconciled into one clean structured store — with human handoff where an automated route was not safe.
Multi-source ingestion where sources had no clean API: endpoint reverse-engineering, structured extraction, reconciliation.
Blockchain transaction verification flows with QA batteries and audit trails.
Hired by Deepnote, the collaborative data-science platform, to build Python analytics pipelines in their product, applied to game analytics — and to teach them to others.
Data pipelines from raw game telemetry to decision-ready analyses, built in Deepnote notebooks.
Ran workshops teaching data workflows on the platform.
Unity tech lead for the leading MENA card-games platform — millions of players across a portfolio of live multiplayer titles. Modernized a legacy codebase and multiplayer state sync while the games stayed live.
Legacy modernization on live titles with large player bases.
Built a performance framework adopted across the studio’s portfolio.
Founded Xarp, a physical-AI company: smart mirrors deployed with Portugal’s largest retail group, with computation staying in the store — computer vision at the edge, no cloud round-trip.
In-store deployments with a major retail group; try-on and engagement analytics at the mirror.
Edge-first architecture: inference on-device, privacy by locality.
A research instrument published as a peer-reviewed tool paper (SRDS 2026): a deterministic simulator for stress-testing Byzantine fault-tolerant consensus protocols with fully reproducible traces.
Reproducible fault-injection traces for testing consensus and replicated systems.
The theory under data streaming, CDC and keeping distributed databases consistent.
A distributed marine-sensing system, field-tested on the Atlantic coast: networks of smart buoys whose graph neural networks detect and forecast events across the whole network. Published research.
Buoy networks with acoustic and environmental sensors, field-tested on the Atlantic.
GNNs detect and forecast events across the network; published research.
TypeScript · Chrome side panel · LLM triage · human-in-the-loop
The docketThe agent proposes archive/keep per email with a reason and confidence; uncertain calls surface first. The human approves, flips and teaches — before anything touches the inbox.
ActivityEvery propose/execute run logged with flips, rule updates and per-run cost.
A Chrome side panel for reviewing an LLM email-triage agent. The agent reads and proposes; nothing is archived until a human approves the run — and every flip or comment teaches the rules, so review tapers off.
Uncertain calls float to the top — ’teaching helps most here’; flips and comments fold back into versioned rules.
Sender rules, snoozes, and per-run cost tracking on an auditable activity log.