Domain model first
A wrong schema is the only technical debt that compounds. A week spent on the model saves a month of migrations and a year of subtle bugs.
Money that actually moves. Bets that settle in seconds. Lab reports that carry legal weight. Luxury pieces changing hands across borders, with a valid invoice and provenance you can prove. I build the kind of software where a mistake has consequences — from the data model to the server running it in production.
no balance changed by UPDATE — entries only.
Every industry below breaks in its own way. What changes is not the language — it is what happens when the system gets it wrong. Open any of them to see the real problem and the engineering decision that solved it.
An OTC desk moves fiat and crypto within the same minute, on a volatile price, through third-party custody, under KYC/AML duty. One wrong rounding cent, repeated a thousand times, becomes a hole nobody can explain — and a balance stored in a column that gets UPDATEd can never prove where it came from.
OTC · Ledger · KYC/AML
Daily close reconciles on its own. Any balance, at any past date, can be reproduced from the entries — which turns audit from a nightmare into a query.
Payment integration is an exercise in distrust. The provider replays the same callback three times, delivers "paid" before "created", or simply goes down at 3am. A payment counted twice is a loss; counted zero times is a lost customer and a burned support day.
PIX · Webhooks · Idempotency
Final state converges to the correct one even with an unstable provider. Divergence becomes an alert, not a month-end discovery.
Odds move in milliseconds and an arbitrage window lasts seconds. Worse: every bookmaker names the same event and market differently, so comparing prices first requires proving you are looking at the same game. Meanwhile player balances take concurrent writes and everything must stay auditable.
Live odds · Arbitrage · Concurrency
Sub-second detection, opportunities delivered while they are still worth taking, and every balance movement traceable for audit.
A swapped biological sample is not an error you fix with a deploy: it corrupts a parentage result, a breed registry and the value of an animal. The lab must prove, at any moment, where a sample went and who handled it — and the report it issues is used by breed associations and by people who will never open the system.
LIMS · Chain of custody · Verifiable reports
Reports third parties can verify without system access, an intact custody history and far less bench rework.
Toxicology screening for driving licences and employment has direct legal consequences in a person’s life. The deadline is regulatory, the integration with the receiving authority can fail silently, and the content is sensitive health data — a leak here is not an IT incident, it is harm to a person.
Sensitive data · Privacy law · Regulatory deadlines
Deadlines tracked by the system, submissions confirmed and self-healing on failure, and sensitive data encrypted with auditable access.
In luxury goods the product holds its value because the chain of trust around it holds. A high-value piece changes hands with provenance that must be evidenced, payment that often crosses borders and currencies, and a tax document that has to be valid before the authority of the country where the sale happens — each with its own rules. Above a certain value the deal also becomes a duty to identify and to report. Getting this wrong is not a checkout bug: it is an invalid invoice, a sale with no documentary backing, and regulatory risk handed straight to the client.
Provenance · Invoicing across BR/PT/ES · AML
Cross-border sales that close with a valid tax document in the right country, provenance traceable from supplier to buyer, and the trail ready when the authority asks — with no side spreadsheet patching the gaps.
Putting a language model in front of real customers is easy to demo and hard to sustain: it invents data, obeys instructions injected by the customer itself, and runs on WhatsApp infrastructure that disconnects on its own. Automation that fails in public costs more than automation that never shipped.
Agents · WhatsApp · Own infrastructure
Automated service that follows the script, scales per number and fails visibly — with a human taking over at the right moment.
These are not style preferences. Each one is the lesson from an incident I would rather not repeat.
A wrong schema is the only technical debt that compounds. A week spent on the model saves a month of migrations and a year of subtle bugs.
A state machine beats half a dozen scattered booleans. If a transition is impossible, the code must refuse it — not rely on someone remembering.
Networks drop, providers replay, users double-click. Every inbound event carries a key and every effect happens exactly once.
Decimal, never float. Entries, never an UPDATE on a balance. If a number cannot be rebuilt from history, that number is not trustworthy.
Structured logs, alerts and dashboards ship with the feature. Learning about a problem from the customer costs twice.
Database, queues, nginx, deploys, backups and firewall. Whoever only hands over code never feels the real cost of their own decisions.
The language is an implementation detail — but these are the ones I take to production and keep alive afterwards.
If your problem involves money, regulatory deadlines, sensitive data or real concurrency, it is exactly the kind of thing I enjoy solving. Tell me the context — and if it is not my kind of problem, I will say so in the first conversation.