~/gpraca

Guilherme Praça

Product Engineer · Technical PM · Fintech B2B

Do problema ao deploy. Descubro o problema, decido a solução, escrevo o código e confiro o resultado em produção. Venho de produto (PO, PM, Head of Product) e hoje entrego código em fintech B2B, com um sistema próprio de agentes de IA que trabalha sob regras e travas.

From problem to deploy. I find the problem, decide the solution, write the code and check the result in production. I come from product (PO, PM, Head of Product) and now ship code in B2B fintech, backed by my own system of AI agents that runs under explicit rules and guardrails.

781PRs mergeadosPRs mergedtotal na org · sincronizado do GitHuball-time in the org · synced from GitHub
145incidentes de produção resolvidos na causa raizproduction incidents fixed at the root causelogs, banco e código até a linha do problemalogs, database and code down to the failing line
5+anos entre produto e engenhariayears across product and engineeringde gestão de projeto a Product Engineerfrom project management to product engineer
Pagamentos no ar em 13 diasPayments live in 13 daysGo-live de um novo parceiro BaaS de ponta a ponta: mTLS, webhooks, runbook e alarmes.End-to-end go-live of a new BaaS partner: mTLS, webhooks, runbook and alarms. Regra de KYC em 2 diasKYC rule in 2 daysDa spec à entrega de uma validação de titularidade em camadas, com fonte oficial e e-CNPJ.From spec to delivery of a layered ownership check, backed by an official source and e-CNPJ. O dado derrubou a premissaThe data killed the premiseUma métrica antiga apontava a causa errada. Medi o motivo real antes de construir.An outdated metric pointed to the wrong cause. I measured the real reason before building.
01 / métodomethod

Como eu trabalhoHow I work

  1. 01

    DescobertaDiscovery

    Converso com clientes e com o CS, faço entrevistas, leio o banco de produção, os funis no PostHog e os logs. Mais de uma vez o dado derrubou a premissa que todo mundo repetia.

    I talk to customers and to CS, run interviews, read the production database, PostHog funnels and logs. More than once the data killed the premise everyone kept repeating.

  2. 02

    DecisãoDecision

    Decido recorte, regra de negócio, prioridade e arquitetura, e respondo pelo resultado. Valido antes de escalar: teste A/B, protótipo, rollout por flag e conversa direta com cliente.

    I decide scope, business rules, priority and architecture, and own the outcome. I validate before scaling: A/B tests, prototypes, flag-based rollouts and direct customer conversations.

  3. 03

    ConstruçãoBuild

    Desenho o modelo de dados e o contrato da API e implemento ponta a ponta:

    I design the data model and the API contract and build end to end:

    backend
    Node + TypeScript em clean architecture, TypeORM e Postgres, migrations idempotentes, filas, outbox e jobs assíncronos. Também Python com Flask para APIs e serviços.
    Node + TypeScript in clean architecture, TypeORM and Postgres, idempotent migrations, queues, outbox and async jobs. Also Python with Flask for APIs and services.
    frontend
    React + TypeScript: telas do produto e do backoffice sobre um design system próprio, em monorepo pnpm.
    React + TypeScript: product and back-office screens on a custom design system, in a pnpm monorepo.
    integraçõesintegrations
    Pagamentos (FitBank, Asaas, Pix, BolePix), fiscal (Emissor Nacional, Focus NFe), identidade (Serpro) e contratos (Autentique), com mTLS, webhooks, retry e idempotência.
    Payments (FitBank, Asaas, Pix, BolePix), tax invoicing (Emissor Nacional, Focus NFe), identity (Serpro) and contracts (Autentique), with mTLS, webhooks, retries and idempotency.
    API
    API pública com chaves por cliente, limites de uso e referência documentada.
    Public API with per-client keys, rate limits and documented reference.
    qualidadequality
    Testes unitários, de integração e e2e com Playwright; PRs pequenos, revisados e com CI.
    Unit, integration and Playwright e2e tests; small, reviewed PRs with CI.
    IAAI
    Agentes que eu orquestro aceleram a escrita; arquitetura e revisão final são minhas.
    Agents I orchestrate speed up the writing; architecture and final review are mine.
  4. 04

    OperaçãoOperate

    Infra como código (OpenTofu) na AWS, deploy contínuo por GitHub Actions com OIDC, alarmes, métricas e runbook antes do go-live. Incidente eu sigo até a causa raiz.

    Infra as code (OpenTofu) on AWS, continuous deploys through GitHub Actions with OIDC, alarms, metrics and a runbook before go-live. I chase incidents down to the root cause.

  5. 05

    ResultadoResult

    Meço o efeito em produção e itero. Incidente recorrente vira fix definitivo; feature sem adoção volta para a descoberta.

    I measure the effect in production and iterate. A recurring incident becomes a permanent fix; a feature without adoption goes back to discovery.

  6. 06

    Ownership

    Assumo frentes inteiras, não tarefas. No go-live de um novo parceiro de pagamentos fui da integração técnica ao runbook, aos alarmes e ao primeiro cliente operando. O problema continua meu depois do merge: acompanho em produção, respondo ao CS e corrijo a causa quando algo volta.

    I take on whole areas, not tasks. On the go-live of a new payments partner I went from the technical integration to the runbook, the alarms and the first customer live. The problem stays mine after the merge: I follow it in production, answer support and fix the cause when something comes back.

  7. 07

    Frentes em paraleloParallel fronts

    Toco várias frentes ao mesmo tempo: num mesmo mês conduzi o go-live de pagamentos, uma adequação regulatória, uma regra de KYC, a API pública e o suporte de nível 3. Dá certo porque cada frente tem estado e próximo passo escritos (issue e board no GitHub, e um daily com uma linha por frente: o que travou e o que decidi), porque entrego em PRs pequenos que andam sem bloquear as outras, e porque os agentes executam várias issues em paralelo, em ambientes isolados, enquanto eu fico com as decisões.

    I run several fronts at once: in a single month I led a payments go-live, a regulatory compliance project, a KYC rule, the public API and tier-3 support. It works because every front has its state and next step written down (GitHub issues and board, plus a daily with one line per front: what is blocked and what I decided), because I ship in small PRs that move without blocking the others, and because agents run several issues in parallel, in isolated environments, while I keep the decisions.

02 / casoscases

Casos de usoCase studies

Frentes que conduzi numa fintech B2B de gestão de prestadores PJ (contratos, notas fiscais e pagamentos): o contexto, o caminho que segui e o que mudou.

Work I owned at a B2B fintech for companies that hire independent contractors in Brazil (contracts, service invoices and payouts): the context, the path I took and what changed.

caso 1/4case 1/4

Go-live de um novo parceiro de pagamentosGo-live of a new payments partner

2026-10
contextocontext
Os repasses aos prestadores iam passar para um novo parceiro BaaS. Não havia painel de operação, e o passo a passo manual estava na cabeça das pessoas.
Contractor payouts were moving to a new BaaS partner. There was no operations dashboard, and the manual playbook lived in people's heads.
como fizhow
  1. Assumi a frente inteira e fechei com o parceiro cada detalhe de produção: ambiente, autenticação mTLS com certificado de cliente, conta de tarifas, transferência entre contas e o contrato dos webhooks.Took over the whole front and settled every production detail with the partner: environment, mTLS client-certificate auth, fee account, account-to-account transfers and the webhook contract.
  2. Escrevi o runbook de operação: o que olhar, quem acionar e como tratar cada falha conhecida.Wrote the operations runbook: what to watch, who to call and how to handle each known failure.
  3. Criei alarmes no CloudWatch a partir de metric filters no access log, para a falha aparecer antes de o cliente perceber.Built CloudWatch alarms from metric filters on the access log, so a failure shows up before the customer notices.
  4. Entreguei de ponta a ponta o fluxo de estorno de repasse recusado: tela, permissão, e-mail e backend.Shipped the rejected-payout refund flow end to end: screen, permission, email and backend.
  5. Validei em produção em etapas, primeiro a integração, depois os webhooks, e só então abri para cliente.Validated in production in stages: the integration first, then the webhooks, and only then opened it to customers.
resultadoresult
Integração validada em produção 13 dias depois de eu assumir a frente, com o primeiro cliente operando na sequência.
Integration validated in production 13 days after I took over, with the first customer live right after.
caso 2/4case 2/4

Validação de titularidade em camadasLayered account-ownership check

2026-10
contextocontext
A conferência de quem é o dono da conta que recebe dependia de dado digitado pelo cliente e de revisão manual. Um dado errado conseguia passar.
Checking who owns the receiving account relied on data typed by the customer and on manual review. Wrong data could get through.
como fizhow
  1. Mapeei com o time de atendimento como a conferência acontecia de fato e em que ponto um dado errado passava.Mapped with the support team how the check actually happened and where wrong data slipped through.
  2. Desenhei a regra em camadas: o nome sozinho nunca aprova, o CPF é confirmado em fonte oficial e um certificado e-CNPJ válido basta por si só.Designed a layered rule: a name match never approves on its own, the tax ID is confirmed against an official source, and a valid e-CNPJ certificate is enough by itself.
  3. Deixei o rigor como escolha do cliente: cada empresa decide o modo de revisão, e o padrão é a plataforma revisar.Made strictness a customer choice: each company picks its review mode, and the default is that the platform reviews.
  4. Escrevi a spec e quebrei a entrega em PRs pequenos, com backend e frontend andando em paralelo.Wrote the spec and split the delivery into small PRs, with backend and frontend moving in parallel.
  5. Escrevi o anúncio para os clientes: o que mudava e o que cada um precisava decidir.Wrote the customer announcement: what changed and what each of them had to decide.
resultadoresult
Da spec à produção em dois dias. A aprovação passou a depender de prova, não de dado digitado.
From spec to production in two days. Approval now depends on proof, not on typed data.
caso 3/4case 3/4

Adoção da emissão automática de notas fiscaisAdoption of automatic invoice issuing

2026-09..10
contextocontext
A emissão automática de NFS-e estava pronta e pouca gente usava. Um e-mail para a base inteira chegaria também a quem não podia usar.
Automatic service-invoice issuing had shipped and few people used it. Emailing the whole base would also reach people who could not use it.
como fizhow
  1. Construí a jornada de ativação: card na tela de notas, formulário campo a campo e a checagem do acesso ao emissor antes de ligar.Built the activation journey: a card on the invoices screen, a field-by-field form and a check of the issuer access before switching it on.
  2. Fui ao banco de produção para saber quem de fato podia usar e tirei do recorte quem só envia nota já emitida.Went to the production database to find who could actually use it, and left out people who only upload invoices issued elsewhere.
  3. Mandei o aviso só para esse público, com a ação direta para ativar.Sent the announcement only to that audience, with a direct call to activate.
  4. Medi as ativações antes e depois do envio para saber se o aviso funcionou.Measured activations before and after the send to know whether it worked.
resultadoresult
Ativações crescendo nas semanas seguintes, sem ruído para o resto da base.
Activations grew in the following weeks, with no noise for the rest of the base.
caso 4/4case 4/4

Medir antes de mexer no login do emissorMeasure before touching the issuer login

2026-10
contextocontext
Um número antigo dizia que a maior parte das falhas de emissão era de login, e a próxima frente seria refazer esse fluxo.
An old number said most issuing failures were login problems, and the next project would be rebuilding that flow.
como fizhow
  1. Reabri o dado: cruzei a classificação dos erros com os registros recentes e vi que ela vinha de regras antigas.Reopened the data: cross-checked the error classification against recent records and found it came from outdated rules.
  2. Reclassifiquei e achei o gargalo real numa etapa de validação, que travava prestadores já prontos para emitir.Reclassified and found the real bottleneck in a validation step that blocked contractors who were ready to issue.
  3. Antes de escrever qualquer correção, instrumentei o motivo exato da recusa no crawler e no backend.Before writing any fix, instrumented the exact rejection reason in the crawler and the backend.
  4. Levei o achado para uma pesquisa de preenchimento automático: o que trava a primeira nota é o acesso, não o preenchimento.Carried the finding into an autofill study: what blocks the first invoice is access, not filling in the form.
resultadoresult
A prioridade mudou com base em dado, e o time não reconstruiu um login que não era o problema.
Priority changed based on data, and the team did not rebuild a login that was not the problem.
03 / IAAI

IA com governançaAI with governance

Um conjunto de agentes sobre o Claude Code que multiplica minha entrega. A IA executa sob as regras que eu escrevo; produto, arquitetura e merge são decisões minhas.

A set of agents on top of Claude Code that multiplies my output. AI runs under the rules I write; product, architecture and merge are my calls.

pstree -a claude
claude
 ├─ coding-fleet   issues → worktree por issue → código → revisor independente → PR
 ├─ ticket-fleet
 │   ├─ reader      quarentena: lê o texto do cliente, sem outras ferramentas
 │   └─ executor    nunca vê o texto bruto; diagnostica e corrige
 ├─ merge-fleet    leva cada PR a CI verde + revisão aprovada
 └─ guardrails     hooks contra push indevido, vazamento e credencial
claude
 ├─ coding-fleet   issues → worktree per issue → code → independent reviewer → PR
 ├─ ticket-fleet
 │   ├─ reader      quarantined: reads customer text, no other tools
 │   └─ executor    never sees raw text; diagnoses and fixes
 ├─ merge-fleet    drives each PR to green CI + approved review
 └─ guardrails     hooks against bad pushes, leaks and credentials
04 / stack

Stack e domínioStack & domain

MAINTAINERS
PAYMENTS / BaaS
K:  FitBank, Asaas, Pix, BolePix, mTLS, webhooks

NFS-e
K:  Emissor Nacional, Focus NFe, NBS, MEI/ME

KYC / IDENTITY
K:  Serpro Integra Contador, Receita, e-CNPJ

CONTRACTS · PUBLIC API
K:  Autentique, API keys, rate limits
lsmod
react_ts        frontend, backoffice, design system
node_ts         clean arch, TypeORM, queues, outbox
postgres        RDS, migrations, SQL
aws             RDS Lambda SQS S3 CloudWatch IAM
opentofu        IaC · GitHub Actions + OIDC
observability   New Relic, Sentry, PostHog
playwright      e2e, browser QA
05 / princípiosprinciples

PrincípiosPrinciples

  1. Meça antes de mudar.Measure before you change.O número que todo mundo repete pode estar errado.The number everyone repeats may be wrong.
  2. Eu decido e assumo.I decide and I own it.Produto, arquitetura e prioridade: escolho, explico o trade-off e respondo pelo resultado.Product, architecture and priority: I choose, explain the trade-off and answer for the result.
  3. Fix definitivo acima de workaround.Permanent fix over workaround.Como isso nunca mais acontece?How does this never happen again?
  4. Entrega contínua.Continuous delivery.Muitos PRs pequenos em vez de um gigante, com revisão e CI antes de cada merge.Many small PRs instead of one giant one, with review and CI before every merge.
  5. PR pra quem não lê diff.PRs for people who don't read diffs.Impacto no fluxo e na UX; rollback e flags.Flow and UX impact; rollback and flags.
  6. Produção com segurança.Production done safely.Menor privilégio no acesso a dados, deploy só por pipeline e mudança de dado revisada como código.Least-privilege data access, pipeline-only deploys and data changes reviewed like code.
06 / trajetóriacareer

TrajetóriaCareer

git log --graph --oneline career
* 2026-08  fintech B2B   Product Engineer          (HEAD)
* 2025-12  fintech B2B   Head of Product / Technical PM
* 2024     uCondo        Product Owner / PM        700k+ usuários
* 2023     IBM           Product Owner
* 2022     Stefanini     IT Project Manager
* 2021     Dix Capital   Project / Product Manager fintech de crédito
* 2026-08  fintech B2B   Product Engineer          (HEAD)
* 2025-12  fintech B2B   Head of Product / Technical PM
* 2024     uCondo        Product Owner / PM        700k+ users
* 2023     IBM           Product Owner
* 2022     Stefanini     IT Project Manager
* 2021     Dix Capital   Project / Product Manager credit fintech
07 / códigocode

Veja meu códigoSee my code

Projetos meus, do zero e abertos, com as decisões de engenharia explicadas no README: problema, decisão e trade-off.

My own projects, from scratch and open, with the engineering decisions explained in each README: problem, decision and trade-off.

$ git clone https://codeberg.org/guilherme-praca/ abrir no Codeberg ↗open on Codeberg ↗

$ contribuições open source em github.com/guilherme-praca

$ open source contributions at github.com/guilherme-praca

demos, rodam no seu navegadordemos, running in your browser
no fornoin the oven

payments-webhook-playground

planejadoplanned

Projeto público: webhooks com HMAC, duplicação e desordem; consumidor idempotente, retry e DLQ.

Public project: HMAC webhooks with duplicates and reordering; idempotent consumer, retry and DLQ.

nfse-ops-dashboard

planejadoplanned

Projeto público: máquina de estados da nota, retry, logs estruturados e alerta.

Public project: invoice state machine, retry, structured logs and alerting.

pr-reviewer

planejadoplanned

Projeto público: revisor de PR com IA sobre o Hermes Agent, com regras explícitas e medição de acerto.

Public project: an AI PR reviewer on top of Hermes Agent, with explicit rules and measured accuracy.

08 / agoranow

AgoraNow

ouvindolistening
estudando e aprofundandostudying & going deeper
09 / contatocontact

ContatoContact

Quer trocar uma ideia sobre algum problema, ou pensando em me contratar? Bora conversar. Me chama por e-mail ou no LinkedIn que eu respondo.

Want to talk through a problem, or thinking about hiring me? Let's talk. Reach out by email or on LinkedIn and I'll get back to you.

  • Autodidata, sem graduação: 5+ anos de mercado e o que aprendi entregando em produção
  • Comecei o Tecnólogo em Banco de Dados (UniCesumar) e parei
  • Hoje estudo por conta própria, com um plano semanal (veja /now)
  • G4 Leadership Academy · Scrum Foundation · ITIL 4
  • Claude 101 · Agent Skills · N8N Automation
  • Self-taught, no degree: 5+ years in industry and what I learned shipping to production
  • Started a Database Technology program (UniCesumar) and stopped
  • Studying on my own today, on a weekly plan (see /now)
  • G4 Leadership Academy · Scrum Foundation · ITIL 4
  • Claude 101 · Agent Skills · N8N Automation