luccas@portfolio: zsh
luccas@portfolio:~$

Luccas Candido

Senior Backend & AI Engineer | Go · TypeScript · AWS | DevOps · Platform | Fintech · Open Finance

Plan: 6 years remote with EU, US and Brazil teams. English C1. Based in Brazil.

luccas@portfolio:~$ ls -l cases/
luccas@portfolio:~$ whoami

I take systems on end-to-end. Schema, deploys, identity, on-call. Decisions go into ADRs before the code. The alternatives we rejected. The cost we accepted.

Go and TypeScript backends. AWS and Terraform on the infrastructure side. Postgres or DynamoDB depending on the access pattern. Most recently, a regulated Open Finance data cache in fintech, from design to production.

I work on the engineering side of AI. Retrieval, evaluation, guardrails, cost. Calling the API is the easy part. Knowing whether the answer is grounded, and what it cost, isn't. My guardrails are code. A rule the model can ignore isn't a rule.

luccas@portfolio:~$ cat experience/*.log | sort -r
Celcoin (Outsourcing)
Senior Backend Engineer, through Luby · Remote, Brazil

Brazilian Banking-as-a-Service fintech. I led the design of its Open Finance data cache, a multi-tenant internal product, then took the collector to production and kept it stable.

  • Designed the cache so a fintech's screen never spends the bank's regulatory call quota. Only scheduled collection calls the institution, under a call budget per institution. Reads come from an Aurora PostgreSQL read model, with raw data append-only in S3.
  • Chose a relational read model over query-on-S3 analytics, because a screen needs a synchronous answer. Drawn in C4, recorded in an ADR, presented to the Open Finance board.
  • Designed the modular monolith that replaces two legacy backends. Strangler Fig migration with contract parity, one database per domain.
  • Stabilized the collector in production by measuring first. Next-job lookup from about 6 s to 1 ms, nightly out-of-memory restarts ended, slow institutions isolated. case >
  • Reviewed the team's merge requests on payment and consent paths, and set up the AI-assisted workflow the team uses.
Cyrex Enterprise
Senior Software Engineer · Remote, Belgium

Software consultancy based in Belgium, with European clients and US squads. Two very different engagements.

Salon-management multi-tenant SaaS. Two years as its backend and platform engineer, from an empty repository to the features the business runs on.

  • Built the Go backend behind the back office and the storefront: ports and adapters, two OpenAPI APIs with a drift check in CI, event-driven workers on SQS and Lambda.
  • Built online booking over staff, services and opening hours. Advisory locks prevent double booking.
  • Automated invoicing into each salon's accounting ERP. Webhooks queued and processed with idempotency by destination state. case >
  • Kept every salon's data isolated and erasable: shared-schema multi-tenancy, fail-closed RBAC, GDPR erasure by anonymisation.
  • Ran the platform as code across three environments in two AWS regions: OpenTofu and Atlantis, ECS Fargate, OIDC-federated CI, anomaly-detection alarms and Sentry.

Licensed real-money game platform (web and Telegram Mini App), 2026. The only engineer, working directly with the client.

  • Built card and crypto payment rails that credit each payment exactly once. The unsigned provider callback only triggers a server-side re-read. case >
  • Implemented the player protection the gaming licence requires: rolling-window deposit limits, session limits, self-exclusion, KYC before withdrawal.
  • Kept live games honest over WebSockets: default-deny authorization, revocation checked on every request and socket.
Enkel TI
Senior Backend Engineer · Remote, Brazil

Allocated to Smiles (Gol Airlines), on its corporate travel platform. I designed and reviewed the architecture of each feature, serverless on AWS.

  • Designed the trip request flow: employees request, managers approve level by level, approved trips are booked on the Sabre GDS with holds that expire.
  • Modeled multi-tenant access: Auth0 per tenant, an IAM-inspired permission model each tenant configures, on a single-table DynamoDB design.
  • Cut Enkel's own onboarding time by 40% with a Python Slack bot on the 1Password API.
Earlier
  • Software Engineer · Sambatech · Sep 2021 – Jul 2022 · multi-tenant learning platform for enterprise clients.
  • Software Engineer · Claranet Brasil · Feb 2021 – Sep 2021 · customer and partner portals, in a team of two.
  • Software Engineer · SharePrime · Jul 2020 – Jan 2021 · intranet features in React and TypeScript.
luccas@portfolio:~$ ls side-projects/
This site's chat

Retrieval, not a prompt with my CV pasted in. Same content as these pages, chunked, embedded and searched before the model answers. All on Cloudflare.

Moonforge

My own production SaaS for World of Warcraft market analysis. OAuth2 written from scratch, session tokens stored as hashes. A custom exporter cut scrape latency from about 14 s to about 3 s.

dAIvid, 1st place, Amazon-sponsored AI hackathon, Istanbul

With my Cyrex team: a Slack bot that turns a messy thread into a ready Jira ticket, grounded in the team's own Slack history. A human approves every ticket.

luccas@portfolio:~$ ls skills/

backend/Go · TypeScript · Node.js · NestJS · REST · OpenAPI · GraphQL

infra/AWS · ECS Fargate · Lambda · SQS · Terraform/OpenTofu · Atlantis · Docker · Kubernetes (app side) · GitHub Actions · GitLab CI

data/PostgreSQL · Aurora · DynamoDB · MongoDB · Redis/Valkey · SQLite · pgvector

ai/structured output · RAG (BM25 + vector) · evals · LLM-as-judge · red teaming · multi-agent · MCP

auth/OAuth2/OIDC · PKCE · Auth0 · Keycloak · RBAC

practice/C4 · ADRs · event-driven · ports and adapters · modular monolith · mutation testing · observability

luccas@portfolio:~$ echo $CONTACT
luccas@portfolio:~$ ./chat --interactive
◆ AI Chat: ask me anything about Luccas online

Ask about the Open Finance cache, the payment rails, Cortex, or how I work with agents. Type clear to reset.

visitor:~$
luccas@portfolio:~$