Building financial systems that stay correct when things go wrong.
Software Architect and Developer at Banco Sofisa, working on backend systems in the .NET ecosystem.
My focus is the part of software that only shows up under failure: consistency across service boundaries, idempotency, compensation, and the observability you need to prove any of it works. Most of my repositories here are built around a single question — what happens when a dependency goes down mid-transaction?
- 🏗️ Distributed systems, event-driven architecture, and pragmatic API design
- 📐 I document decisions as ADRs with the alternatives I rejected and why
- 📊 I state non-functional requirements as numbers and test against them
- 🌍 Based in Brazil (UTC−3) · Working in English and Portuguese
Two-service cash flow platform built around one hard requirement: the transaction service stays available even when the consolidation service is completely down — and there is a test that proves it.
Transactional Outbox, idempotent consumers, compensating reversals, circuit breakers, and liveness/readiness separation. Ships with 9 ADRs, C4 diagrams, failure-path sequence diagrams, an operational runbook, and k6 load tests with SLO thresholds enforced in CI.
| Measured | Result | SLO |
|---|---|---|
| p95 latency | 1.98 ms | < 100 ms |
| Error rate @ 50 req/s | 0% | ≤ 5% |
| Read-model consistency lag | ~2.2 s | < 5 s |
.NET 10 CQRS Outbox RabbitMQ PostgreSQL Redis Polly Testcontainers k6
Double-entry bookkeeping API where balances can never drift: entries are append-only, corrections happen through reversals rather than updates, and concurrent writes are resolved with optimistic concurrency. Integration tests run against a real PostgreSQL instance.
.NET 10 Minimal APIs PostgreSQL EF Core Vertical Slice Testcontainers
An AI agent and Model Context Protocol server written from scratch — no SDK. JSON-RPC 2.0 over stdio with Content-Length framing, tool-calling orchestration, path-traversal protection on file access, and 18 scenario tests covering realistic agent workflows.
.NET 10 MCP JSON-RPC 2.0 AI Agents OpenAI API xUnit
Messaging abstraction that lets application code publish and subscribe without binding to a provider SDK. Factory-based multi-broker support, pluggable serialization, and a correlation-aware message envelope. Published to NuGet.
.NET 10 Kafka RabbitMQ Azure Service Bus NuGet
Task Manager API where each use case owns its endpoint, handler, validation, and tests — organized by feature instead of by technical layer.
.NET 10 Vertical Slice CQRS MediatR Carter FluentValidation
Working comparison of the four ASP.NET Core rate limiting strategies — Fixed Window, Sliding Window, Token Bucket, and Concurrency Limiter — with the trade-offs of each.
.NET ASP.NET Core Minimal APIs Rate Limiting
Core — C# · .NET 10 · ASP.NET Core · Minimal APIs · EF Core · Dapper
Architecture — CQRS · Vertical Slice · DDD · Transactional Outbox · Saga & compensation · Idempotency
Data & Messaging — PostgreSQL · Redis · RabbitMQ · Kafka · Azure Service Bus
Reliability & Ops — OpenTelemetry · Polly · Docker · GitHub Actions · k6 · Testcontainers · xUnit
AI — Model Context Protocol · OpenAI API · tool-calling agents
Working through the operational side of the cash flow platform — Kubernetes deployment, autoscaling driven by queue depth, and infrastructure as code.
Open to conversations about distributed systems, architecture, and interesting problems.

