Senior engineer with 6 years of experience building production systems in Go and TypeScript on AWS.
I work on the engineering side of AI. Retrieval, evaluation, guardrails, cost. Calling the API is the easy part. Knowing whether the answer is grounded, and what it cost, isn't. My guardrails are code. A rule the model can ignore isn't a rule.
The rest is backend/platform ownership. API design, schema modeling and event-driven workflows. CI/CD and infrastructure as code. Auth boundaries, observability and production debugging.
Right now that's Open Finance, in fintech. Before that: multi-tenant SaaS, European research-computing platforms, aviation, travel and a self-hosted personal SaaS.
// C1 English. 6 years remote with international teams. Based in Brazil.
Cortex, an agent for people with ADHD (2026 – Present). ADHD makes it hard to start a task on your own, hold a plan, and switch back after an interruption. Cortex carries that load instead of the person. It reaches out on its own schedule, escalates when it keeps getting refused, and never writes anything until the person taps. It came out of the harness I first built for my own ADHD, rebuilt as a product for other people. Today it organises what you are carrying, learns your profile from what you confirm, and takes the first move. Where it is going: finance, email and calendar in one place, so your whole life sits in one agent instead of five apps. Built and run by me on Cloudflare Workers, TypeScript and Postgres/pgvector, with models reached through one gateway.
I orchestrate, the agents execute. Work goes out in parallel, each agent isolated so one cannot touch another's files. Cheap models handle the mechanical passes, strong ones the judgment calls. The rules that hold are mechanical: hooks that refuse a bad edit at write time. A rule the model can ignore isn't a rule. Every delivery gets an adversarial review, the diff read and the tests attacked by mutation, because an agent's own report is a summary with a bias.
- Structured output with a strict JSON schema · Cortex's model gateway
- Closed vocabulary of actions (discriminated union) · Cortex's conversation flow
- Separation between model intent and code execution · Cortex's writes
- Human-in-the-loop by explicit confirmation · Cortex's writes
- Schema retry that names the error · Cortex's model gateway
- Model routing by latency requirement on a provider-agnostic gateway · Cortex's routes
- Prompt as versioned code, with named sections and an instruction hierarchy · Cortex's system prompt
- Deterministic pipeline with the model only on the fuzzy step · job-search bot
- Hybrid retrieval fused by best rank (BM25 and vector search) · personal harness RAG
- Retrieval evaluated by hit@k and MRR before tuning · harness RAG gold set
- Chunking and indexing by document structure · harness index and Cortex
- Embedding space identity (model, dimension, version) travelling with the vector · harness and Cortex retrieval
- Long-term memory with provenance and confidence levels · Cortex's user profile
- Knowing when not to use retrieval · Cortex architecture audit
- Golden set of multi-turn conversations with deterministic assertions · Cortex's eval bench
- Prompt lock as a CI regression gate · Cortex's CI
- Variance controlled by median of N runs and a declared tolerance · Cortex's eval bench
- LLM-as-judge with a strict schema, temperature 0 and fail-high on truncation · harness gates
- Eval-of-eval with planted and clean fixtures · judge calibration
- Mutation testing as proof a guard actually catches something · Cortex and the harness
- Prompt injection defense by fencing untrusted sources · Cortex's profile, history and retrieved text
- Red teaming with a published attack battery (garak) · Cortex
- False-refusal rate measured beside violation rate · Cortex's guardrails
- LLM judge as a fail-closed write-path guardrail, in cascade · Cortex's memory writes
- Grounding check on self-referent facts · Cortex's memory writes
- Tracing per model call, one row per attempt · Cortex's telemetry
- Cost attribution per trace with a per-model price table · Cortex
- Latency budget against the platform deadline · Cortex's webhook
- Agent harness with mechanical rules (hooks that deny at write time) · three codebases and a portable kit
- Adversarial review of agent deliveries, by diff and by mutation · personal harness
// Also studied, not yet built: agent loops and compounding per-step error. Workflow versus agent design, and RAG versus fine-tuning versus long context. Cross-encoder reranking, KV cache and prefill, and semantic caching are next.
- Structured output / schema-constrained generation
- Hybrid retrieval (BM25 + vector, RRF)
- pgvector (HNSW) / Cloudflare Vectorize / MongoDB Atlas Vector Search
- Evals: golden sets, prompt lock, mutation testing
- LLM-as-judge guardrails, fail-closed
- Prompt injection defense / red teaming (garak)
- Cost and latency tracing per model call
- Agent harnesses / deterministic gates / MCP
- Go
- Node.js
- TypeScript
- NestJS
- Hono / Chi / Huma
- REST APIs
- OpenAPI
- React
- Next.js
- Astro
- Tailwind CSS
- HTML / CSS
- Playwright
- Vitest
- Jest
- TDD
- AWS (Lambda, ECS, SQS, SNS, S3, EventBridge, DynamoDB)
- Terraform / OpenTofu
- Docker
- GitHub Actions
- CircleCI
- CloudFormation
- Atlantis
- PostgreSQL (PostGIS)
- SQLite
- DynamoDB
- MongoDB
- MongoDB Atlas Vector Search
- Redis / Valkey
- MySQL
- System Design
- Clean Architecture
- Event-Driven Architecture
- SOLID Principles
- TDD
- Microservices
- Serverless
- AI-assisted engineering guardrails
- Auth0
- Clerk
- Casbin (RBAC)
- OAuth2 / OIDC
- AWS IAM
- Sentry
- CloudWatch
- Prometheus
- Grafana
- Structured logging
Open Finance platform at a Brazilian fintech. I designed and reimplemented the data plane end to end, then designed the cache architecture behind it.
- Strangler Fig reimplementation with contract parity · two legacy JavaScript backends into one NestJS service
- Modular monolith with database-per-domain · Open Finance backend
- CQRS applied to ingestion · regulated Open Finance data cache
- Cache as a quota shield · Open Finance cache · a hard monthly call ceiling per customer on the upstream API
- Idempotency across three layers · Open Finance metering and cache
- Typed in-process events · scheduler-API contract
- Architecture decision records and C4 diagrams before implementation · Open Finance cache design
- Code review and infrastructure specification for another team · cache team
TypeScript · NestJS · MongoDB · PostgreSQL (Aurora) · AWS S3 · BullMQ · Redis · Keycloak · GitLab CI · Open Finance · Pix
Software consultancy based in Belgium, clients in Europe, squads in the US.
Belgium-based salon-management multi-tenant SaaS: two years as the backend engineer, Go on AWS, with Next.js surfaces when the product needed them.
- Ports and adapters (hexagonal architecture) · Go backend of the salon platform
- Contract-first OpenAPI generated from code, with a CI drift gate · backoffice and storefront APIs
- Event-driven workers on SQS and Lambda, with partial batch failure and dead-letter queues · order, notification and audit-log events
- Circuit breaker with exponential backoff · ERP OAuth token renewal
- Advisory lock inside a transaction · double-booking prevention on the video-consult booking
- Infrastructure as code with plan reviewed in pull requests (OpenTofu and Atlantis) · AWS platform for the salon SaaS
- AI code review in CI, and end-to-end test agents on Playwright · the team's pull requests
A licensed real-money game platform (2026): sole engineer on the codebase: NestJS, PostgreSQL, Redis, Socket.IO, React, Phaser, on AWS.
- Idempotent crediting under concurrent webhooks · card deposit and crypto payout
- Webhook treated as a trigger, never as proof · card deposit
- Default-deny authorization by route metadata · the player API
- Signed identity validation with an anti-replay window · Telegram Mini App authentication
- Authoritative state at end of turn, with event recovery on reconnect · real-time match state
- Deposit limits over a rolling window · cashier · required by the gaming licence
- Irrevocable self-exclusion as a server-side state machine · deposit, matchmaking and rematch · required by the gaming licence
Go · TypeScript · NestJS · PostgreSQL/PostGIS · Redis/Valkey · Socket.IO · React · Phaser · AWS (ECS Fargate, Lambda, SQS) · Terraform/OpenTofu · Atlantis · GitHub Actions · Huma · Chi · Casbin
Allocated to Smiles Viagens (Gol), corporate travel platform.
- Serverless event-driven architecture (Lambda, SQS, EventBridge, Step Functions, CloudFormation) · corporate travel platform
- Multi-tenant authentication with Auth0 and per-tenant RBAC · corporate travel platform
- Single-table DynamoDB with hierarchical composite keys · permissions, roles and tenant hierarchy
- Multi-level approval workflow · corporate travel requests
- GDS integration (Sabre) · flight and hotel reservations
- Architecture review per feature, correcting serverless function granularity by domain boundary · corporate travel platform
- Onboarding automation with a secrets vault (Python Slack bot + 1Password) · Enkel TI internal onboarding · cut onboarding time 40%
TypeScript · Python · AWS (Lambda, DynamoDB, EventBridge, SNS, CloudFormation) · Auth0 · Serverless
Built custom Learning Management Systems for enterprise clients at a company recognized by Fast Company for innovation in online video.
- Developed and maintained REST APIs with TypeScript/Node.js, focusing on SQL query optimization and efficient database management with PostgreSQL
- Built interactive frontend interfaces with React.js, contributing to user experience improvements across multi-tenant LMS platforms
- Integrated AWS IAM for secure multi-tenant authentication and access control
TypeScript · Node.js · Express · React · PostgreSQL · Docker · AWS
Early-career role in a small innovation team (2 developers) at a global technology leader, building internal products before the team scaled through acquisition.
- Built and maintained Client Portal and Ally Portal (affiliate/reseller management), taking ownership of features end-to-end despite limited team size
- Built frontend features and implemented APIs to automate internal processes
TypeScript · Node.js · Express · React · PostgreSQL · MongoDB · Docker
An agent for people with ADHD, on the thesis that ADHD isn't about knowing what to do. It's about doing it without someone else carrying the load, so advice does not help much and a system that carries that load does. It takes the first move, because starting is the expensive part. It offers one named thing to carry rather than a list, because a list is another decision. Its memory of the person is auditable and confirmed by her, never silently inferred. Semantic retrieval runs on the same Postgres that holds the rest of the data, so there's no second system to keep in sync. Every stored vector carries the model that produced it, since vectors from different models aren't comparable.
The chat below is retrieval, not a prompt with my CV pasted into it. Content is chunked, embedded and stored in a vector index, and a question retrieves the relevant pieces before the model answers. Runs entirely on Cloudflare: Pages Functions, Workers AI for embeddings and generation, Vectorize for the index.
A solo production SaaS for World of Warcraft auction and crafting analysis, with Battle.net OAuth2 and a self-hosted Prometheus/Grafana monitoring stack. A custom exporter cut scrape latency from roughly 14s to roughly 3s.
Product/platform work around allocation, proposal, review, and administrative workflows for European research-computing systems, reusing backend and infrastructure patterns from production SaaS work.
Cyrex internal AI hackathon winner: Slack + Jira workflow assistant with human review, ticket/documentation retrieval with a similarity threshold, and LLM-assisted summaries for project flow questions. Vector store migrated from Pinecone to MongoDB Atlas Vector Search to drop a dependency.
dAIvid: an AI-powered Slack/Jira workflow bot with human review and semantic retrieval over Slack history, using MongoDB Atlas Vector Search. It kept humans in the loop for ticket creation, answered project-flow questions from retrieved documentation, and generated summaries on demand.
Built a Python Slack bot with 1Password API integration that automated access generation for new collaborators. Was the only engineer to successfully implement the 1Password integration, cutting onboarding time by 40%.
Developed a build generation tool in Go and GitHub Actions, automating NFS scans and release scheduling for Avalanche Studios.
Ask about experience, skills, work style, or even hobbies. Type clear to reset.