Full stack developer in Belo Horizonte, Brazil. I work on web systems and Salesforce applications, and I care most about the parts that are hard to get right — concurrency, failure handling, and keeping domain logic independent of the framework around it. Most of what I build now has an agent in it: language models that call real tools and take real actions, constrained and evaluated like any other production dependency.
| Salesforce | Apex · LWC · Platform Events · Tooling API |
| Backend | Java / Spring · C# / .NET · Python / FastAPI · PHP / Laravel · Kotlin |
| Frontend | Angular · Vue · React / Next.js · React Native |
| Data & infra | PostgreSQL · Oracle · Redis · Kafka · Docker · GitHub Actions |
Full Stack Developer at Teknisa · English (fluent)
Full Stack Developer — Teknisa · 2026–present
Enterprise products in PHP 8.4 and Laravel, with Angular, Vue and React Native on the front end. My tech lead put me in charge of introducing unit and integration testing to the team; I review the tests on every merge for a team of five developers.
Software Engineer, Intern — PRODEMGE · technology agency of the State of Minas Gerais · 2024–2026
Almost two years on a govtech platform used every day by more than 100 analysts. Backend in Java and Spring Boot over Oracle, front end in Angular and React, plus production support and incident resolution. Real users, real data, real production incidents.
Systems Analysis & Development (technologist) — Centro Universitário Newton Paiva, 2026
Where I take the architecture further than a day job usually allows. Each repository's README explains the design decisions and is explicit about the tradeoffs and the limitations.
agenttrace · Apex · LWC · Claude API
An agent that debugs a Salesforce org — it reads the real Apex, proves the cause by running a test live, and proposes a fix only a human can ship.
You describe an incident in plain language; the agent decides on its own what to investigate, opens the source, confirms the blast radius against real data, and stops when the problem is genuinely out of its reach instead of inventing a cause. Thirteen tools behind Claude's native function calling, with a deterministic privacy guard — a hard-coded check in Apex, not a prompt instruction — that refuses any SOQL touching personal data and answers with an aggregate instead.
The design constraint is the interesting part. The reasoning loop first ran as a chain of Queueable
jobs and hit Developer Edition's five-level depth limit, so it was rewritten as a loop inside a
single Apex transaction — which then breaks live streaming, because a platform event published the
normal way only fires after the transaction commits. The fix is PublishImmediately, the one
publish behaviour that escapes an uncommitted transaction, so the UI still watches the agent think
step by step. 52 Apex test methods, ~88% coverage, and an eval harness that scores the agent against
known scenarios instead of trusting a demo run.
GovFlow · C# / .NET 8 · PostgreSQL
A multi-tenant workflow engine where every process instance is an explicit state machine.
Organizations define their own process types and steps, and each instance advances under Clean Architecture and CQRS/MediatR. Real-time updates over SignalR, SLA monitoring on Hangfire background jobs, per-tenant scoping, and an immutable audit timeline. Around 60 tests across the domain, application and integration layers — the largest of these codebases and the closest to a full product.
atlas-customer-success-cloud · Apex · LWC
An enterprise Customer Success platform built the way a platform team would, not as a pile of triggers.
Every read goes through a selector in user mode and every write through a Unit of Work, so CRUD, field-level security and sharing are enforced in exactly one place. The health-scoring engine is a set of metadata-driven strategy classes — re-weighting a dimension is a configuration change, not a deployment. Application logging survives transaction rollback by publishing an immediate platform event instead of writing a row that would roll back with the failure. Eight ADRs record why each decision was made; CI runs static analysis, Jest and Apex tests against a scratch org.
orbit · Next.js 15 · TypeScript · Prisma
A collaborative team workspace on the App Router — kanban with drag and drop, task dependencies, comments, attachments and workspace analytics.
Around 9,400 lines of strict TypeScript over fifteen Prisma models, with mutations written as Server Actions across twenty-five modules rather than hand-rolled API routes. Auth.js v5 handles both credential and Google OAuth sign-in, role-based workspace membership gates every action, and due-date reminders go out on a scheduled job. React Server Components keep data fetching on the server, so the client bundle carries interaction code and little else.
oracle-trader-assist · Python · FastAPI · Claude API
A decision-support system for market analysis — stateless, and horizontally scalable behind a Redis event bus.
Multi-modal AI analysis, session replay, scheduled briefings and trade lifecycle tracking — explicitly not an execution bot. Clean Architecture held strictly: the domain layer imports nothing external, use cases depend only on typed ports, and every adapter is swappable behind them. Real-time delivery is decoupled from request handling through Redis pub/sub, so any instance can serve any WebSocket client and the system scales out without sticky sessions. 206 tests across the domain, application and API layers.
distributed-rate-limiter · Java · Redis
Four rate-limiting algorithms behind one interface, correct under concurrency without a distributed lock.
Fixed window, sliding-window log, sliding-window counter and token bucket, swappable at runtime and backed by Redis so the limit holds across instances instead of per process. Each check-and-increment runs as a single atomic Lua script rather than separate Redis commands, which is what prevents two concurrent requests from both being allowed through on the last available token.
- event-sourcing-ledger — a ledger whose
balance is never stored, only replayed. The optimistic-lock version check has a race window, so
the real guarantee is a
UNIQUE (aggregate_id, version)constraint; the README also states plainly that a cross-account transfer is two appends on two streams, and therefore not atomic. - laravel-helpdesk — Laravel 13, Vue 3 and Inertia, where the interesting part is defining what counts as an "open" ticket before routing one to the least-busy agent.
- StudyLensAI — native iOS in SwiftUI and SwiftData: Vision OCR over handwritten notes, generated decks, SM-2 spaced repetition.
- Plus an AI sales-intelligence app on Salesforce, an end-to-end finance product (Quarkus API, Angular client, React Native app), and an event-driven payment service on Kafka.
- LinkedIn — https://www.linkedin.com/in/renan-ferreira-souza/
- Email — [email protected]