# Vinícius Bispo > Brazilian software engineer with around six years of experience, mostly in Rails and Python, mostly on backends for products that move money or documents. Based in Belo Horizonte, BR (GMT-3). Fullstack engineer. Rails, Python, React. E-commerce, real-time systems, fintech. ## At a glance - **330** — PRs shipped, last 6 months - **567** — Code reviews, last 6 months - **6+** — Years building production systems - **25%** — Operational cost reduction delivered ## Availability - Currently at GarantiaBR - Open to: Remote roles with US/EU teams - Based in Brazil (GMT-3) - Contact: vini.bispo015@gmail.com ## Skills - Ruby on Rails - Python - Django - TypeScript - React - PostgreSQL - AWS - GitHub Actions - LLM agents and evals - Event-driven backends ## Case studies - [AI PR review with area graders](https://vinibispo.com/cases/ai-pr-review) (2026, Python, TypeScript, GitHub Actions, AWS): Code review automation via an LLM agent on every pull request, with per-area graders (migrations, frontend, CI, documentation) and an adaptive approval gate. - [Structured document extraction with LLM + schema validator](https://vinibispo.com/cases/ai-document-extraction) (2026, Python, Django, PostgreSQL, AWS): Extracting regulatory documents at scale with an LLM constrained by per-type, per-department JSON schemas — model proposes, deterministic validator accepts only well-formed output. - [AI agent hooks for secrets, scoring, and developer experience](https://vinibispo.com/cases/ai-agent-hooks) (2026, Python, TypeScript, Bash, GitHub Actions): Productionizing internal LLM-agent tooling with custom hooks: layered secret redaction (input, output, rules), weighted PR-size scoring, and slash commands that wrap ops workflows. - [Stack-wide migration for alphanumeric tax identifiers](https://vinibispo.com/cases/alphanumeric-tax-id-migration) (2026, Python, Django, TypeScript, PostgreSQL): Adapting an entire platform — API validation, check digit logic, admin, and frontend masks — to a regulatory change that turned a numeric-only identifier into an alphanumeric one. - [Bulk spreadsheet reconciliation against a canonical entity catalog](https://vinibispo.com/cases/bulk-spreadsheet-reconciliation) (2026, Python, Django, PostgreSQL, Pandas): Resolving thousands of free-text entity references in operator-uploaded spreadsheets against an internal catalog — with cross-region dedup, sub-region capture, twin matching for inactive duplicates, and deterministic tiebreakers. - [Document Purchasing API with batch + webhooks](https://vinibispo.com/cases/document-purchasing-api) (2025, Python, Django, AWS, Webhooks): Document acquisition service with batch CPF/CNPJ ingestion and webhook callbacks — async flows, idempotent retries, and event-driven integration with downstream microservices. - [Digital credit pipeline](https://vinibispo.com/cases/credit-pipeline) (2025, Python, Django, React, AWS): End-to-end onboarding pipeline for buyers and sellers in a B2B credit product — data collection workflows, automated due diligence, and risk integrations replacing manual review. - [Notifier — multi-channel delivery on a custom Bun Lambda runtime](https://vinibispo.com/cases/notifier) (2025, TypeScript, Bun, AWS, Webhooks): Event-driven notification service on AWS SNS/SQS with a custom Bun Lambda runtime — async multi-channel delivery (Slack, email, webhook) with per-channel isolation and retry. ## Experience - **GarantiaBR** — Software Engineer, 2025 →. Credit pipeline work — digital onboarding for buyers and sellers in Brazilian B2B credit. Recent work has been LLM-shaped: PR review agents with per-area graders, structured document extraction behind deterministic validators, and productionizing internal AI tooling with secret redaction and DX hooks. In parallel, a stack-wide migration to alphanumeric tax identifiers and bulk spreadsheet reconciliation against canonical catalogs. - **Applaudo** — Senior Software Engineer, 2022–25. Fully remote, collaborating daily with US-based teams on a high-scale Rails platform: customer search, query optimization, Jira integration, and an internal declarative DSL operator for approval workflows that became reusable across the platform. - **Sopha** — Software Engineer, 2021–22. Forecasting and SQL optimization that cut operational costs by 25%, decomposing a monolith into microservices, batch CSV ingestion with Pandas, and document signature security work. Founded a small internal programming school to mentor interns on production work. - **UpMedal** — Software Engineer, 2020. Built an e-commerce platform for athletes — Rails full-stack plus the internal tools that keep an e-commerce shop running: logistics, inventory, shipping calculation, cashback. ## Open source - [rails/rails #47852](https://github.com/rails/rails/pull/47852) — Enable force_ssl=true in production by default (Co-authored) - [rails/rails #53417](https://github.com/rails/rails/pull/53417) — Remove storage from gitignore if skip_active_storage and database is not sqlite3 - [Shopify/ruby-lsp #2834](https://github.com/Shopify/ruby-lsp/pull/2834) — textDocument/documentSymbol for instance variables using shorthand assignment - [neovim/nvim-lspconfig #3435](https://github.com/neovim/nvim-lspconfig/pull/3435) — Add support using erb files to ruby-lsp - [catppuccin/nvim #158](https://github.com/catppuccin/nvim/pull/158) — Add coc.nvim support - [rails/jsbundling-rails #202](https://github.com/rails/jsbundling-rails/pull/202) — Add a rails 7.2 Gemfile - [avo-hq/docs.avohq.io #206](https://github.com/avo-hq/docs.avohq.io/pull/206) — Fix typo in folder in Manually defining resources ## Pages - [About](https://vinibispo.com/about): background, trajectory, teaching, open source - [Now](https://vinibispo.com/now): what I'm focused on right now - [Full content](https://vinibispo.com/llms-full.txt): every case study in full - [RSS](https://vinibispo.com/feed.xml): case study feed - [MCP server](https://vinibispo.com/api/mcp): JSON-RPC endpoint for agents ## Links - GitHub: https://github.com/vinibispo - LinkedIn: https://linkedin.com/in/vinibispo - Email: vini.bispo015@gmail.com