Wilham Brodwolf
Tech Lead & Software EngineerSanta Catarina, Brazil · GMT-3

WilhamBrodwolf

Systems that hold.

I build software that behaves at 3 a.m. exactly the way it did in the demo.When code becomes a commodity, engineering is what makes it work as it should.

–contributionsLessMore
About

I work where engineering, architecture and leadership overlap.

I lead the development of scalable and reliable systems — helping engineering teams break down complex problems while keeping a hard focus on business impact, operational efficiency and long-term maintainability.

Eight years across e-government, e-commerce, payments and insurance. Most of what I ship is the unglamorous kind: reconciliation that has to balance, SLAs that can't slip, pipelines nobody should have to think about.

Technical leadershipDistributed systemsPlatform & observabilityAI-assisted delivery
Impact*
ExperienceExperience: 8+years shipping production systems
SectorsSectors: 4government, retail, payments and anti-fraud, insurance
GMVGMV: $270M+processed on the payments platform I led
ThroughputThroughput: 1M+events a day through the commissions API

* Yes, these are real. No, compliance won't let me show you the cool stuff. I asked.

Agent runSample6 sources

Data2

API2

Tests2

LEDGER-482TicketSplit commissions by broker tierAPI
ADR-014DocsLedger writes stay idempotentData
schema.prismaRepocommission, broker and tier tablesData
Trace 3121LogsPayout batch times out over 5k rowsAPI
payout.contract.tsTestsCurrent payout contractTests
commission.evalEvals42 golden cases from financeTests

Eval pass rate per iteration

62% this run

+35 ptssince the first draft

  • Unit tests148/148
  • Type check0 errors
  • Eval suite97%
AI workflow

Agents write the code. Engineering decides what ships.

I use AI the way I use any production system: grounded in real context, checked by tests and evals, signed off by a human.

  1. 01

    Grounded before it writes a line

    The agent starts from the ticket, the decision records, the schema and the logs — not a blank prompt. Context is assembled, not improvised.

  2. 02

    A plan you can review in a minute

    Work is split into small changes by layer, so the diff is predictable before anything is generated.

  3. 03

    Tests and evals decide, not vibes

    Every iteration runs types, unit tests and an eval suite built from real cases. The pass rate has to climb before it earns a human's time.

  4. 04

    Human sign-off before anything ships

    A reviewer approves and merges. From there nothing goes out by hand: the merge itself starts the pipeline.

  5. 05

    Every merge earns its way to production

    Lint, unit and end-to-end tests run on every merge. Only a green pipeline ships a canary, and the same dashboards watch it. If a number moves, it rolls back on its own.

Automation

Manual work, rebuilt as workflows.

Most teams lose hours copying data between WhatsApp, spreadsheets, email and the CRM. I map the process, then rebuild it in n8n: an LLM where judgement is needed, plain rules where it isn't. Every run is logged, retried and easy to change.

n8nLLM agentsWebhooks and APIsProcess mapping
n8nSample workflowWaiting
WhatsAppMessage received
ClaudeClassify and extract
DecisionIs it a lead?
Google SheetsAppend row
GmailSend proposal
CRM webhookPOST /leads
WhatsAppAuto reply
Responsiveness

One product, every screen.

Overview4 batches waiting to close
Export

Waiting for data

Top partners
Bradesco Seguros2m ago$1.24M99.8%
Vita Brokers5m ago$486k99.1%
API partner12m ago$318k96.4%
Retail Plus1h ago$92k99.9%
390pxbase
Dashboard.tsxbasesmmdlgxl
1export function Dashboard() {
2 return (
3 <Theme accent="#ec3013" font="Inter" mode="light">
4 <div className="flex h-screen bg-white dark:bg-zinc-950">
5 <Sidebar className="hidden md:flex md:w-16 lg:w-60" />
6 <main className="flex-1 p-4 md:p-6 lg:p-8">
7 <Outlet view="overview" />
8 <Header className="flex flex-col gap-3 sm:flex-row" />
9 <Kpis className="grid grid-cols-2 gap-3 lg:grid-cols-4" />
10 <div className="grid gap-4 xl:grid-cols-[1fr_280px]">
11 <RealtimeStream range="30d" />
12 <Activity className="hidden xl:block" />
13 </div>
14 <PartnerTable className="hidden md:table" />
15 <PartnerList className="md:hidden" />
16 </main>
17 <TabBar className="fixed bottom-0 md:hidden" />
18 </div>
19 </Theme>
20 )
21}
Live sessionALY3 online
Accent
Font
Mode

You are in the session too: click the screen or change the theme, and the code follows.

01

Architecture that fits the problem

Not a monolith out of habit, not microservices out of fashion. The shape follows the domain and the team.

02

Reliability is a feature

SLAs, idempotency, replayable events and dashboards that answer the question before someone asks it.

03

Leave it documented

Decision records, runbooks and tests, so the team keeps moving after I step out of the room.

Right-sized

Start small. Scale when the numbers ask.

A system should be as complex as the problem it solves, and no more. I start with the smallest architecture that works, validate it with real users, and add pieces only when traffic, the team or the risk calls for them. You spend less up front, learn sooner, and skip the premature over-engineering nobody has time to maintain.

Start small, spend lessValidate first, scale laterNo premature over-engineering
Growth pathReady
Stage 1 of 6

One server

Web app, API and database share a single server. It costs little, ships this week and is easy to change while the product finds its shape.

Next step when: CPU stays above 80% at peak hours

Active users
Peak load
Monthly cost
$$$$$$
Moving parts
3

Not every system grows the same way. This is just one example of complexity added step by step.

The purpose of software engineering is to control complexity, not to create it.
Pamela Zave
Reliability

If you haven't planned for failure, you've failed to plan.

Every system fails at some point: a region goes dark, a disk fills up, a deploy goes wrong. It is a matter of when, not if. So failover is planned from day one. Health checks, weighted routing and slow start are design decisions, and this drill runs long before production needs it.

Stack

What I reach for, and why.

The orbit rests while you aim. Filter by category or pick a logo to see where it fits.

Wilham Brodwolf

Toolbox

29 tools, 22 in production

Pick a logo to see where I use it. Arrow keys step through them.

22 of 29 connected in total

Contact

Pick a time.

Thirty minutes, no deck. Tell me what is breaking, or what you are about to build.

wilham@brodwolf.dev
Working languages
EnglishPortuguêsEspañol
30-minute intro callTimes shown in GMT-3 (Brazil)

30 min.