{"$schema":"https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json","basics":{"name":"Matheus Pavaneli","label":"Senior fullstack engineer · forward-deployed AI engineer","email":"matheuspavaneli@proton.me","phone":"+55 44 99775-2680","url":"https://matheuspavaneli.github.io/portfolio/en/","summary":"I take the broken, the abandoned and the not-yet-built — including the LLM systems a company is putting into production for the first time — and hand back an architecture, with the number it moved.","location":{"city":"Maringá","region":"Paraná","countryCode":"BR"},"profiles":[{"network":"GitHub","username":"matheusPavaneli","url":"https://github.com/matheusPavaneli"},{"network":"LinkedIn","username":"matheuspavaneli","url":"https://www.linkedin.com/in/matheuspavaneli/"}]},"work":[{"name":"Bernoulli Educação","position":"Senior Software Engineer","startDate":"2025-11","summary":"LLM orchestration architecture. Weekly release batches to daily continuous deployment with automated test suites. Authored the team's code review standard."},{"name":"Eicode","position":"Senior Fullstack Engineer · promoted from mid-level","startDate":"2024-10","endDate":"2025-06","summary":"Sole technical owner of a greenfield social platform: 12 feature modules, no senior above me, and the technical direction three other engineers built to. Recommendation engine written from scratch — TF-IDF with cosine similarity, no third-party ML service. Technical lead on international engagements, in English."},{"name":"Independent Contractor via Workana","position":"Senior Fullstack Engineer · 5+ concurrent engagements","startDate":"2024-01","endDate":"2025-11","summary":"Delivered alongside full-time roles. Multi-provider authentication built from the ground up — email, Google and Microsoft, 2FA, recovery — with no auth incident reported post-launch. Production Stripe billing for three client platforms, webhooks built for idempotency so retries never double-charged."},{"name":"Jorrovi Calçados","position":"Junior Fullstack Engineer · promoted from trainee","startDate":"2023-04","endDate":"2025-06","summary":"The abandoned financial dashboard, above. TypeScript rolled across the codebase after making the case to non-technical stakeholders, and Kubernetes deployments automated across dev, staging and production."}],"education":[{"institution":"Cruzeiro do Sul","area":"Software Engineering","studyType":"B.Eng.","endDate":"2029"}],"skills":[{"name":"Languages & frameworks","keywords":["TypeScript","JavaScript","Python","PHP","React","Next.js","Vue.js","Node.js","NestJS","FastAPI","Django / DRF","Fastify","Express","Laravel","TailwindCSS"]},{"name":"AI engineering","keywords":["LLM orchestration","Multi-agent routing","Provider failover","Response caching","Model evaluation","MongoDB retrieval","LangChain","Pydantic structured output","Embeddings & vector search (pgvector)","scikit-learn","NumPy"]},{"name":"Data & messaging","keywords":["PostgreSQL","MySQL","MongoDB","DynamoDB","Redis","Firebase","Kafka","RabbitMQ","BullMQ","Celery","SQLAlchemy / Alembic","pandas"]},{"name":"Cloud & infrastructure","keywords":["AWS EC2 · Lambda · S3","SQS · SNS · API Gateway","CloudFront · RDS","ECS · Fargate","Azure App Service · Functions","Azure Service Bus · AKS","Docker","Kubernetes","Nginx","Linux","Git","CI/CD","boto3"]},{"name":"Architecture & APIs","keywords":["Clean Architecture","DDD","Event-Driven","Microservices","CQRS","Hexagonal","Serverless","SOLID","REST","GraphQL","Jest","pytest","mypy / Ruff"]}],"languages":[{"language":"Portuguese","fluency":"Native"},{"language":"English","fluency":"C1"}],"projects":[{"name":"LLM systems in production","entity":"Bernoulli Educação · EdTech, 100K+ students","description":"The company's first AI feature, built so no single vendor can take it down","highlights":["I designed and delivered the orchestration architecture: an orchestrator routing requests across specialised agents, provider failover so one vendor outage cannot take the feature down, and a MongoDB layer carrying document retrieval, agent execution logs and a response cache that cuts the cost of repeat inference. The provider was not chosen by reputation — five models were benchmarked on cost, latency and output quality, and the numbers picked one. In production it serves 100K+ users, with latency down 90% and cost down 40%.","−90% latency — latency in production, alongside a 40% cut in inference cost, on a system 100K+ users rely on"],"keywords":["LLM orchestration","Multi-agent routing","Provider failover","MongoDB","NestJS"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-orchestration","startDate":"2025"},{"name":"rag-eval","entity":"Open source · a RAG pipeline that measures its own retrieval","description":"Whether the answer came from the right passage, measured before anything was tuned","highlights":["Thirty questions over fifty Python Enhancement Proposals, with the ground truth recorded as character spans rather than chunk ids, so changing the chunking cannot quietly rewrite the answer key. Dense, BM25, hybrid and a cross-encoder reranker are compared question by question: the reranker lifted recall to 0.833. Every answer quotes its sources, and code resolves each quote to characters in the document — 51 of 52 were found verbatim. CI replays BM25, dense, hybrid and every recorded answer with no key and no network call, and fails on any change.","847 chars → 104 — characters a reader has to check per citation: the whole chunk, against the quote resolved inside it"],"keywords":["Python","PostgreSQL","BM25","Gemini embeddings","Cross-encoder reranking","Astro"],"url":"https://matheuspavaneli.github.io/rag-eval/","startDate":"2026","endDate":"2026"},{"name":"The two-second query","entity":"Bernoulli Educação","description":"The planner was not slow. Its statistics were stale.","highlights":["A core query took two seconds and nobody could say why. EXPLAIN ANALYZE said it plainly: the divergence between estimated and actual rows exposed a sequential scan chosen over an index that already existed. I refreshed the statistics, restored correct index usage, tuned the autovacuum thresholds so it would not come back, and wrote the method down for the team — the fix is worth less than the second time somebody finds it themselves.","2 s → 150 ms — on the query that had been taking two seconds"],"keywords":["PostgreSQL","EXPLAIN ANALYZE","autovacuum"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-query","startDate":"2026","endDate":"2026"},{"name":"Seal","entity":"Open-core · Apache-2.0 local mode on npm","description":"Approval-as-an-API: human-in-the-loop as infrastructure, not as a code change","highlights":["An approval gateway for AI agents. An MCP proxy intercepts tools/call and holds the risky ones until a human signs, with a declarative policy engine so approval is by exception rather than by default, and elicitation and sampling relayed back in both directions. Every decision lands in a hash-chained audit trail that verifies offline. Agent code does not change to adopt it — the proxy is the integration.","0 lines — lines of agent code changed to put a human in the loop"],"keywords":["MCP","Hono","Drizzle","PostgreSQL","Apache-2.0"],"url":"https://useseal.dev","startDate":"2026","endDate":"2026"},{"name":"Nanquim","entity":"Pix checkout SDK · provider-agnostic","description":"The Brazilian market ships backend SDKs in seven languages and stops at the browser","highlights":["An embeddable Pix checkout that runs on the merchant's own domain, inside a Shadow DOM, with no runtime dependency in the browser and no request beyond the merchant's own backend. No credential can reach the bundle, because the SDK takes functions and not keys. There is no onSuccess, because the truth of a payment is a signed webhook and never the browser. Illegal states are unrepresentable and the promised amount is an invariant.","12.14 kB ≤ the gate — gzipped — a size the build refuses to exceed, not a number in a README"],"keywords":["TypeScript","Shadow DOM","Pix","Zero runtime deps"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-nanquim","startDate":"2026","endDate":"2026"},{"name":"Anchor","entity":"B2B SaaS · retention intelligence for performance agencies","description":"Churn is visible in the ad accounts weeks before anybody cancels","highlights":["A platform that scores client health from Google Ads and Meta Ads signals, learns the weights per client rather than applying one model to everybody, and writes a weekly brief an account manager can act on. Multi-tenant with row-level security, Stripe billing gates, and observability built in from the first deploy rather than added after the first incident.","6–10 weeks — of warning before a client churns"],"keywords":["Next.js","Multi-tenant RLS","Stripe","Google Ads","Meta Ads"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-anchor","startDate":"2026","endDate":"2026"},{"name":"technology-art","entity":"Scroll-led essay · WebGL","description":"Eight artefacts, 3.3 million years, one point cloud reassembled into each of them","highlights":["A history of technology told through eight objects, from a struck stone to machines that are learning to judge. One WebGL point cloud is reassembled into every era's form, the interval between two eras sets the height of the silence before it, and a single accent walks the spectrum as you read. The heavy layers wait for the reader's first move, which is why the artefact survives the score.","99 ≤ 100 — Lighthouse on mobile, against a ceiling of 100 — and 100 on desktop"],"keywords":["three.js","GLSL","GSAP","Lenis"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-artefacts","startDate":"2026","endDate":"2026"},{"name":"The abandoned dashboard","entity":"Jorrovi Calçados · financial and administrative systems","description":"Inherited with no handoff, no documentation, and numbers the business was already deciding on","highlights":["Revenue, cost and cash-flow reporting used from the operations floor up to the owners, handed over with nothing. I reverse-engineered it, assessed the debt and set the migration strategy alone, then stabilised it on three fronts: killed the crashes, traced and corrected the figures it had been reporting wrong, and cut load times. The migration ran incrementally while the system stayed in daily use — no feature freeze, no big-bang rewrite, no interruption to financial reporting. Promoted within six months.","40+ views — migrated to React over fifteen months, with the system live throughout"],"keywords":["React","TypeScript","Kubernetes"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-dashboard","startDate":"2023","endDate":"2025"},{"name":"The 1.9 GB image","entity":"Freelance · Workana","description":"Nobody had documented why it was that big, so the first job was finding out","highlights":["A frontend Docker image nobody wanted to touch, with no prior documentation to work from. I diagnosed the cause rather than trimming layers at random, then rebuilt the pipeline around multi-stage builds. Smaller artifacts dropped registry and transfer costs by over 60% on top of the build time.","1.9 GB → 210 MB — an 89% reduction, from a pipeline rebuilt rather than trimmed"],"keywords":["Docker","Multi-stage builds"],"url":"https://matheuspavaneli.github.io/portfolio/en/#case-image","startDate":"2024","endDate":"2025"},{"name":"depguard","description":"Preventive npm dependency risk scoring: registry metadata, lifecycle scripts, OSV advisories and typosquatting heuristics.","keywords":["TypeScript","OSV","CLI"],"url":"https://github.com/matheusPavaneli/depguard"},{"name":"env-validator","description":"Validates process.env at startup against a typed schema, collecting every error at once, with inference and no dependencies.","keywords":["TypeScript","Zero deps"],"url":"https://github.com/matheusPavaneli/env-validator"}],"references":[{"name":"Gleyver Coutinho Castro, Software Engineering Manager, Bernoulli Educação","reference":"I had the privilege of working with Matheus at Bernoulli, and I can attest that his impact goes far beyond the lines of code he delivers.\n\nWhat truly sets Matheus apart is his genuine autonomy and strong sense of ownership. Whenever we faced complex and ambiguous problems, he was the one who dove deep into the technical investigation, mapped out bottlenecks, made assertive architectural decisions, and drove solutions from start to finish with total responsibility.\n\nIn addition to his excellent technical background and analytical skills, his communication and collaboration with the team are flawless. He has a natural ability to translate difficult problems into clear discussions, engage the team, and keep everyone aligned. He is the kind of engineer who raises the technical bar of any team and someone you can trust implicitly to unblock the toughest challenges."},{"name":"Kevin Blair, QA Automation Engineer, Bernoulli Educação","reference":"I had the chance to work with Matheus, and one thing that always stood out was his enthusiasm for technology and learning new things. He's someone who genuinely enjoys exploring new ideas, takes on challenges with a positive attitude, and always puts in the effort to get things done right. On top of that, he's a great teammate who's always willing to help and share what he knows. It was a pleasure working with him."}],"meta":{"canonical":"https://matheuspavaneli.github.io/portfolio/resume.json","version":"v1.0.0"}}