Remote opportunities / International teams
Vitor Schiavo
Senior Platform & Site Reliability Engineer
Reliable systems.
Stronger teams.
Reliable cloud platforms and AI inference, with measured gains in delivery, resilience and cost.
Open to Senior and Staff opportunities in Platform Engineering and SRE.
Build once. Promote with confidence.
An isolated preview, the same tested image and an explicit cleanup path.
Two-repository pilot · 34 automated checks
Explore this caseSelected work
AI infrastructure & LLM serving
Operating multimodal LLMs across engines and clouds
I built serving workflows with vLLM and llama.cpp, isolated incompatible model runtimes and validated authenticated fallback across environments. The work spans a router POC and later production integration.
Read the decisions and results ↗Two serving engines. Production rollout validated separately from the router POC.
FinOps & cost engineering
Less cloud waste. More engineering value.
I reduced infrastructure spend through Kubernetes rightsizing, a monitoring migration and safe retirement of legacy services. Each result is tied to its own baseline and currency.
Explore the savings and decisions ↗Separate initiatives from 2025–2026. Monthly reductions × 12.
Observability & migration
Finding the failure behind a green dashboard
A runtime migration left alert filters silently matching nothing. I traced the logging changes and verified each fix against messages known to exist.
Read the decisions and results ↗Validate against a message known to exist.
Depth across the platform.
The disciplines behind the work. Explore the projects that put them into practice.
Platform & delivery
Reusable workflows that connect code to production.
Kubernetes · Terraform · ArgoCDExplore workReliability & observability
Signals engineers can use to diagnose and act.
Prometheus · Grafana · JenkinsExplore workCost engineering
Understand the bill. Change the architecture.
Cloud billing · Rightsizing · StorageExplore workSecurity & trust
Practical controls built into the platform.
mTLS · IAM · Private networkingExplore workAI infrastructure
Serving, startup and failure paths under scrutiny.
vLLM · GPU serving · Fallback POCExplore workCloud architecture
Connected environments with clear boundaries.
GCP · AWS · AzureExplore workExperience built in demanding environments
Make the next engineer's job easier.
My background in software development shapes the way I work in infrastructure. I look for shared causes, build reusable capabilities and document decisions so teams can operate independently.
How I work ↗Engineering work
Explore outcomes, architecture and operating lessons. Professional work and personal projects are labeled separately.
Restoring trust in the QA pipeline
40 platform failures to zero
The shared reporting defect was repaired; application failures remained a separate investigation.
What changed
A shared reporting defect had made passing tests appear broken. I traced the common failure, repaired the agent platform and separated real test failures from infrastructure noise. 65-job validation run; remaining application test failures identified separately.
A safe place to test every feature
Preview environments with a complete lifecycle
Two-repository pilot: promote the tested image, then remove preview resources when the PR closes.
What changed
I built a two-repository pilot that creates isolated environments from pull requests, promotes the same tested image and removes preview resources when the PR closes. 16 Go and 18 Node checks before builds; image digest verified during promotion.
Finding the failure behind a green dashboard
22 alert policies and 2 metrics repaired
Changing the resource type alone was insufficient; filters also had to match runtime-specific log formats.
What changed
A runtime migration left alert filters silently matching nothing. I traced the logging changes and verified each fix against messages known to exist. Positive controls proved that replacing the resource type alone would still miss structured Go logs.
Cloud Functions: staged Gen2 migration
Modernizing runtimes and deployment pipelines; production follow-up exposed and fixed an implicit runtime identity change.
A staged migration; production follow-up also checked the runtime service account.
What changed
Modernizing runtimes and deployment pipelines; production follow-up exposed and fixed an implicit runtime identity change.
Modernizing Grafana and Prometheus
Major-version upgrades, recording rules and a more maintainable monitoring stack.
The work combined version upgrades, recording rules and operational validation.
What changed
Major-version upgrades, recording rules and a more maintainable monitoring stack.
GKE networking: Dataplane V2 and a repeatable bootstrap
A staged non-production migration with explicit rollback and validation; production excluded from that delivery.
Non-production delivery with explicit checks and rollback; production was outside this scope.
What changed
A staged non-production migration with explicit rollback and validation; production excluded from that delivery.
Rebuilding GKE without reissuing certificates
September 2026 · A real rebuild rehearsal exposed failures that code review missed, then enabled three cluster rebuilds without consuming certificate issuance quota.
The rehearsal adopted 49 of 49 certificates without reissuing. It is a recovery test, not a production recovery-time SLA.
My contribution and outcome
I rehearsed a full cluster rebuild, repaired restore-order and controller-lifecycle defects, then reused the process while renumbering three environments.
Finding the latency hidden in Kubernetes DNS
July 2026 · Separating DNS lookup time from TCP connection time revealed why a healthy API kept triggering latency alerts.
The roughly 9× improvement describes the measured DNS lookup, not every API request or a sustained service-level guarantee.
My contribution and outcome
I isolated DNS overhead from database network latency, changed the shared Helm DNS configuration and verified the production rollout against the original measurement.
Observing an ephemeral AI inference fleet
April 2026 · Dynamic Prometheus discovery kept GPU workers and inference pods visible as their provider addresses changed.
Five targets were UP in the rollout snapshot. This delivery added visibility; paging rules were a separate follow-up.
My contribution and outcome
I connected the router inventory to Prometheus HTTP service discovery and a fleet dashboard, removing the need to maintain a static target list after each GPU deployment.
Making scheduled jobs observable
August 2026 · A reusable execution wrapper made short-lived jobs visible without changing their business logic or letting telemetry failures break them.
24 of 26 active entries were instrumented. Freshness thresholds reflect each schedule; telemetry failures do not replace the job result.
My contribution and outcome
I instrumented 24 of 26 active cron entries, added schedule-aware freshness rules and tested that monitoring preserved the real outcome of each job.
Fix the worker before scaling the fleet
September 2026 · A queue-based autoscaling rollout exposed stuck browser workers; scaling became useful only after the resource leak was contained.
KEDA was active in four environments. The 50-replica production ceiling is configuration, not demonstrated throughput capacity.
My contribution and outcome
I traced backlog and OOMs to stuck child processes, fixed their lifecycle and replaced CPU/memory scaling with a Pub/Sub backlog trigger across four environments.
Cloud cost engineering across the stack
Kubernetes, observability and legacy retirement · 2025–2026
Preserve required data and service behavior; measure each initiative against its own billing baseline.
Cost reduction as an engineering discipline
Documented annualized equivalents: approximately US$30.1K for one legacy retirement, £26.5K for a Kubernetes rightsizing snapshot and £14K for a monitoring ingestion line. Different currencies and baselines are kept separate.
Making Kubernetes cost visible
Namespace-level cost allocation, resource requests and node consolidation.
Cost allocation informs resource requests and consolidation; savings need a billing baseline.
What changed
Namespace-level cost allocation, resource requests and node consolidation.
Moving workloads between Kubernetes clusters
Phased application and data migration, DNS cutover, validation and rollback.
Prepare application and data migration before DNS cutover, then validate the destination.
What changed
Phased application and data migration, DNS cutover, validation and rollback.
A phased Strapi major-version upgrade
Adapting lifecycle hooks and validating compatibility before production cutover.
Major-version changes included lifecycle hooks and behavior checks before production cutover.
What changed
Adapting lifecycle hooks and validating compatibility before production cutover.
Keeping Metabase useful in production
Controlled dashboard load: ~49.7 s → ~3.1 s; upgrades, read-only access and query isolation.
A controlled production load improved from ~49.7 s to ~3.1 s; a separate MongoDB filter bottleneck remained.
What changed
Controlled dashboard load: ~49.7 s → ~3.1 s; upgrades, read-only access and query isolation.
Security posture as an observable system
Security scans, verified probe reachability and reversible secret controls, with documented rollout scopes.
Batch visibility includes risk dimensions and scan freshness; it is not real-time threat detection.
What changed
I connected security scans to Prometheus and Grafana, improved scanner reliability and verified configuration-exposure probes. Related work added scoped secret delivery and reversible version controls.
Reducing monitoring ingestion spend
£1,165.80/month removed from one Prometheus ingestion billing line.
The managed ingestion line was removed; self-managed compute, storage and maintenance still have costs.
What changed
I replaced the managed ingestion path while preserving monitoring targets and dashboards. The annualized equivalent is £13,989.60; hosting and maintenance costs remain outside that billing line.
GCP storage lifecycle and retention
Access-aware storage tiering and retention review.
A simplified lifecycle: the effective policy version and deletion requirements must be validated.
Scope and result
The historical portfolio reported a 95.9% reduction. Absolute savings are omitted until currency, billing baseline and policy version are reconciled.
Airflow consolidation — 86% fewer allocated resources
Consolidating an overprovisioned deployment.
The recorded resource allocation fell; this does not mean the platform has zero operating cost.
Scope and result
The recorded allocation changed from 100 to 14 pods, 20 to 2.8 vCPUs and 200 to 28 GB of memory. These are allocation reductions, not a claim of zero operating cost.
mTLS with Cloudflare — Zero-Trust Architecture
2024–2025 · Advanced Security · Network Architecture
Certificates, rotation and revocation complement network controls.
Problem
Standard TLS only authenticates server to client. Required mutual authentication where both client and server verify identity using certificates, critical for API security and ISO 27001 compliance.
Solution
- Set up Cloudflare for Mutual TLS; both sides now present certificates, not just the server
- Generated and distributed client certificates to each authorized service
- Added certificate revocation and rotation so compromised certs can be killed immediately
- Certificate validation adds an identity control alongside network restrictions
- Automated the certificate lifecycle so rotation doesn't require manual steps
mTLS Flow
Client (with cert) → Cloudflare (validates client cert) → Origin Server (validates CF cert)
Mutual verification at every layer · End-to-end encrypted + authenticated
Business Impact
- Every request authenticated by certificate; nothing gets through on network position alone
- ISO 27001 compliance requirement satisfied
- Protection against MITM attacks and API abuse
- Instant revocation if certificate is compromised
AWS-GCP HA VPN — Multi-Cloud Connectivity
2024 · Multi-Cloud Networking · High Availability
BGP provides routing and failover; IPSec encrypts traffic carried over the VPN.
Problem
Needed secure, reliable communication between AWS and GCP for hybrid workloads. Public internet routing unacceptable for sensitive data. Required redundancy for high availability.
Solution
- Built HA VPN between AWS and GCP with redundant tunnels on both sides
- Configured BGP so failover is automatic, with no manual intervention when a tunnel drops
- Assigned private IPs and set up internal routing tables so traffic uses private addressing over encrypted VPN tunnels
- Traffic inside the VPN tunnels is encrypted with IPSec
- Added monitoring and alerts for tunnel health so issues are caught before they affect workloads
Business Impact
- Redundant connectivity through multiple VPN tunnels
- Automatic failover via BGP (<30 seconds)
- Private service addressing over encrypted VPN tunnels
- Cross-cloud connectivity with private endpoints and monitored tunnels
Custom Canary Deployment System
2024–2025 · Progressive Delivery · Automation
Each release gate can stop progression and send traffic back to the stable version.
Problem
Traditional blue-green deployments require a 100% traffic switch, which is risky. Off-the-shelf tools didn't fit our multi-environment Kubernetes setup. Needed gradual rollout with automatic metric-based rollback.
Solution
- Wrote custom canary deployment automation from scratch; off-the-shelf tools didn't fit the multi-environment setup
- Progressive traffic split: 10% → 25% → 50% → 100%, with a gate at each stage
- Health checks run at each stage before traffic advances
- Automatic rollback kicks in when error rate or latency crosses defined thresholds
- Wired into Jenkins pipelines, works the same way for every team
Business Impact
- Failure containment: health gates and automated rollback limit exposure during progressive delivery
- Deployment frequency increased: teams ship more often because the cost of a bad release dropped dramatically
- Pipeline integration: custom automation fits the existing delivery workflow
Database security hardening — 60+ databases
2023–2025 · Security Architecture · Compliance
Private networking, encrypted transport and access controls form separate layers of defense.
Problem
Databases exposed with public IPs, unencrypted connections, password-only authentication. Non-compliant with ISO 27001. Vulnerable to network sniffing and unauthorized access.
Business Impact
- 60+ databases secured (MongoDB Atlas + PostgreSQL)
- Later platform controls: piloted External Secrets in three repositories; made secret updates preserve existing fields; reversibly disabled 133 older versions across 97 secrets in four projects. Production identity exceptions remained documented.
- Zero security incidents post-implementation
- ISO 27001 certification achieved
Kong Gateway — API Management at Scale
2023–2024 · API Management · Architecture
The gateway centralizes authentication, rate limits and routing for application traffic.
Problem
160+ applications with direct nginx ingress and no centralized API management, rate limiting, or authentication layer. Difficult to enforce policies or monitor API usage consistently.
Business Impact
- 160+ applications now go through a single gateway, giving one place to enforce policy
- Rate limiting configured centrally; no per-service implementation needed
- Auth, CORS, and headers applied globally; developers don't handle this per app
- Centralized logging and tracing cuts troubleshooting time significantly
ArgoCD GitOps — Multi-Cluster Continuous Delivery
March 2026 · GitOps · Kubernetes Multi-Cluster
GitOps separates the desired state in Git from its controlled application to clusters.
Problem
Deployments across four GKE clusters (dev · stg · prd · sdx) were manual, inconsistent, and error-prone. No single source of truth for cluster state, no audit trail, and high risk of configuration drift between environments. Teams needed kubectl access to deploy with no self-service model in place.
Solution — 9-Phase Implementation
- Phase 0: Installed ArgoCD on GKE PRD cluster via Helm with production-grade values
- Phase 1: Defined GitOps repository structure: apps/environments/charts hierarchy with Helm chart templates and per-env value overrides
- Phase 2: Configured ArgoCD Applications and AppProjects with RBAC boundaries per team and namespace
- Phase 3: Multi-cluster registration; all four GKE clusters (dev · stg · prd · sdx) as ArgoCD targets with cluster credentials stored in Secrets
- Phase 4: CI/CD pipeline integration via GitHub Actions image updater for automatic image tag propagation, branch promotion dev → stg → prd
- Phase 5: SSO/OIDC with Google Workspace + RBAC policies per team
- Phase 6: Prometheus metrics + Grafana dashboards for GitOps observability
- Phase 7: Incremental migration of existing workloads; audited all namespaces, converted to Helm charts, enabled self-heal and prune on non-prod
- Phase 8: Progressive delivery with Argo Rollouts, canary deployments with traffic splitting and automated rollback
Business Impact
- 4 GKE clusters managed as a single GitOps fleet (dev · stg · prd · sdx)
- Drift management: Git provides desired state, with reconciliation and self-healing where enabled
- Full audit trail: every deployment change tracked as a signed Git commit
- Instant rollback: revert a Git commit and the cluster reconciles within seconds
- Developer self-service: engineers deploy via PR, zero kubectl access required
- Automated promotion: GitHub Actions image updater pushes new tags across environments without manual YAML edits
GKE Infrastructure — Production-Grade Terraform + Shared VPC
February 2026 · Infrastructure as Code · GKE · Terraform
Reusable Terraform modules provision network boundaries and GKE resources consistently.
Problem
GKE clusters and the underlying network infrastructure were provisioned manually with no IaC. No consistent multi-environment strategy, no prevent-destroy protection on critical network resources, and Terraform configuration was monolithic and impossible to reuse across environments.
Solution — 8-Phase Delivery
- Phase 1 — Architecture Design: Defined Shared VPC topology, subnet strategy, and GKE cluster requirements for 4 environments
- Phase 2 — GCP Project Setup: Created projects, enabled APIs, and configured IAM service accounts with least-privilege bindings
- Phase 3 — Network Infrastructure: Deployed Shared VPC host project, subnets, Cloud NAT, and firewall rules via Terraform
- Phase 4 — Modular Terraform: Refactored from monolithic inline resources to reusable modules; converted root config to module calls with environment-specific variable files
- Phase 5 — CI/CD Automation: GitHub Actions workflows for terraform plan on PR and terraform apply on merge; separate workflows per environment
- Phase 6 — GKE Cluster Deployment: Deployed all four GKE clusters (dev · stg · prd · sdx) using the automated pipelines
-
Phase 7 — Safety Guardrails: Added
prevent_destroy = truelifecycle blocks on VPC, subnets, and Cloud NAT to protect against accidental terraform destroy - Phase 8 — Documentation: Architecture diagrams, operational runbooks, and module documentation for knowledge transfer
Business Impact
- 100% infrastructure as code: every network and cluster resource managed via Terraform
- 4 GKE clusters deployed in a single automated pipeline run
- Zero manual provisioning: new environments created from variable files only
-
Production safeguards:
prevent_destroyprevents accidental loss of critical network infrastructure - Validated Shared VPC + Cloud NAT: all service projects route egress through a centralized NAT gateway
Multimodal LLM serving across engines and clouds
Model-aware runtime selection, served-revision checks and authenticated fallback.
The router POC and the later production fallback integration have separate measurements and rollout scopes.
Scope and result
I built model-aware vLLM and llama.cpp serving paths, repaired deployments that served an old revision, and validated authenticated application fallback across four environments. The earlier three-provider router remains a separate POC.
Defending Kubernetes Against Supply-Chain Attacks
Security · Kubernetes · Supply-Chain Defense
Layer pipeline checks with node-level anomaly detection and an explicit containment procedure.
The threat
A compromised dependency can smuggle a cryptominer (such as xmrig) into a build and past code review, then quietly burn CPU on a production node with no application symptoms. The malicious code never appears in a diff, because it rides in on a transitive package and is assembled into the bundle at build time.
Detection & defense in depth
- Detect at the node: node-level CPU anomaly alerts (short threshold window) are the tripwire when the application itself looks healthy
- Contain fast: cordon the affected node, drain and reschedule onto clean nodes, then remediate the source and pin transitive versions
-
Gate the pipeline:
npm audit --audit-level=highplus Trivy image scanning on every pre-deploy build - Enforce lockfiles: committed lockfiles required; CI fails if missing or changed without review
- Restrict the runtime: Pod Security Standards (restricted) across namespaces to block privilege escalation
- Default-deny egress: network policies block outbound to mining pools and unknown endpoints, so an intrusion is a dead end
Production Incident Response — P1 Outage & Partner Auth Failure
March 2026 · Incident Response · Production Reliability
A simplified response model across dependency and authentication incidents; recovery work is shared.
Incident A — Third-Party CMS Loader [P1]: HTTP 500 across two regional markets
- Impact: 100% of page loads returning HTTP 500 from 13:08 UTC; full production outage across two regional markets
- Root cause: Third-party CMS API dependency had an outage; all pages failed server-side rendering
- Response: Identified dependency failure, implemented emergency static fallback, and escalated to vendor support
- Resolution: Service restored; added circuit-breaker pattern and health monitoring for external CMS dependencies
Incident B — Partner API [P2]: Credential Rotation Causing Auth Failure
- Impact: All partner authentication calls returning 401 from ~14:30 UTC after partner-side password rotation
- Root cause: Partner rotated credentials without coordinated notification; old password revoked mid-day
- Response: Diagnosed authentication failure from logs, obtained new credentials, updated GCP Secret Manager, triggered rolling restart
- Hardening: Established credential rotation runbook and pre-agreed notification SLA with partner
SRE Principles Applied
- Operational response: both incidents were resolved within the same business day
- Blameless post-mortems: root causes documented, systemic fixes implemented
- Monitoring gaps closed: external dependency health checks added after each incident
Elastic Stack Migration — EC2 to Kubernetes at Scale
2020–2021 · Observability · Infrastructure Modernization
The Kubernetes design separates master, data and ingest roles with snapshot-based backups.
Problem
- 2 legacy Elastic Stack clusters: Elasticsearch 5 on EC2 and Elasticsearch 6 on ECS, both via docker-compose
- No role separation: every node handled master election, data storage, and ingest simultaneously
- Manual scaling, no self-healing, single points of failure
- Storage bottleneck: no S3 snapshots, no automated retention policies
Solution
- Consolidated both clusters into 1 unified EKS cluster on Elasticsearch 7.8
- Designed multi-node architecture with dedicated roles: 3 master (8 GB), 3 data (16 GB, 50 TB), 3 ingest (16 GB)
- Custom ECR image with S3 snapshot plugin for automated backup and retention
- Deployed via Helm Charts with rolling updates, PDB (maxUnavailable: 1), and soft anti-affinity
- Built 9 specialized Logstash pipelines for different log sources (GELF, K8s, NiFi, PHP, portal, services, reports)
- Filebeat DaemonSet with Kubernetes metadata enrichment for container log collection
- Fluent Bit as lightweight alternative collector with kernel-level filtering
- Kibana 3 replicas with CSV reporting (1 GB max), APM Server for tracing, Metricbeat for cluster health
Business Impact
- Historical consolidation: replaced a legacy two-cluster fleet with a smaller EKS node pool
- Consolidated 2 → 1 cluster: eliminated the entire legacy fleet of instances and volumes, replacing it with a handful of EKS nodes
- Version upgrade v5/v6 → v7.8: major version leap, unlocking ILM, security features, and index lifecycle management
- EBS GP2 → Standard migration: migrated the full volume fleet across two AWS regions, reducing storage costs
- Multi-region cost analysis: regional pricing informed the consolidation decision
- S3 cleanup: deleted a large unused S3 bucket (tens of TB), automated snapshot retention via custom ECR image with repository-s3 plugin
- 9 dedicated Logstash pipelines: each pipeline tuned for its specific source, enabling independent scaling and troubleshooting
- Self-healing infrastructure: Kubernetes StatefulSets with PDB, rolling updates, and automated recovery replaced manual EC2 management
Kafka Event Streaming — Real-Time Pipeline to BI
2020–2021 · Data Engineering · Event-Driven Architecture
Logstash filters feed Elasticsearch and Kafka topics for downstream BI consumers.
Problem
- Business intelligence team had no real-time access to API and service event data
- Log data was siloed in Elasticsearch, not accessible for downstream analytics
- Multiple event sources (GELF, RabbitMQ, HTTP) needed unified routing to Kafka topics
- No standardized pipeline for streaming filtered events to analytics systems
Solution
- Designed dual-output Logstash pipelines: events indexed in Elasticsearch AND forwarded to Kafka topics
- Integrated with AWS MSK (Managed Streaming for Apache Kafka) with gzip compression
- Built conditional routing: API events filtered by service name and forwarded to dedicated Kafka topics for BI consumption
- RabbitMQ input plugin for message queue events alongside GELF and pipeline-to-pipeline routing
- Kafka producer configured with client_id tracking and topic-per-domain strategy
Business Impact
- Real-time BI pipeline: business intelligence team gained access to live API events for the first time, enabling real-time analytics
- Dual-write architecture: every event indexed in Elasticsearch for operational search AND streamed to Kafka for downstream analytics, no data duplication at source
- Conditional routing: only relevant events forwarded to Kafka, reducing consumer noise and topic volume
- AWS MSK integration: managed Kafka with gzip compression reduced network costs and simplified operations
- Multi-source unification: GELF, RabbitMQ, HTTP, and pipeline-to-pipeline inputs consolidated into a single processing layer
AI Tools Integration — Team Productivity
2024–2025 · AI Adoption · Developer Experience
Tool adoption and review-workflow evaluation; productivity improvements were not measured here.
Solution
- Dec 2024: Enabled Claude AI for entire team
- Aug 2024: Onboarded QA and dev teams to GitHub Copilot
- Aug 2025: Evaluated Claude Code for automated PR reviews in Bitbucket pipelines
- Created best practices guides for AI-assisted development
Business Impact
- Adopted AI tools early: Claude AI in Dec 2024, Copilot in Aug 2024, before most teams in the org
- Automated PR reviews via Claude Code; reviewers spend time on logic, not style
- Junior developers ramp up faster: AI-assisted development reduces the gap between seniors and juniors on routine tasks
Pokémon GO Friend Code — Subscription SaaS
2025–2026 · Full-Stack · Next.js · GCP · Multi-payment ·
Personal product: payment state controls which trainer codes remain active for submission.
What it does
A subscription service for Pokémon GO players to have their trainer codes automatically submitted to community listing sites daily. Users pick a plan, pay, and their code gets submitted every day without any manual action.
How it's built
- Full-stack Next.js 16 App Router with Server Components, Server Actions, and Docker multi-stage build deployed to Cloud Run (scale to zero)
- Dual payment gateway: Mercado Pago for PT/BRL subscribers, Stripe for EN+ES/USD; same codebase, locale-driven routing via middleware
- i18n with
/pt,/en,/essubpaths; Accept-Language middleware auto-redirects on first visit - Webhook state machine with idempotent processing and
submission_logstable tracking every payment event - Zero static credentials: GCP Secret Manager at runtime, Workload Identity Federation for GitHub → GCP auth in CI
- Admin panel (server-side HMAC-SHA256 sessions) for subscription management and webhook inspection
- Email confirmations via Resend with React Email templates · Database migrations via Drizzle ORM
Technical highlights
- Cloud Run southamerica-east1: auto-scales, HTTPS via custom domain (pokemongofriendscode.com)
- Workload Identity Federation: no long-lived service account keys in CI; GitHub Actions exchanges OIDC tokens with GCP
- Tested with Jest (unit/integration) and Playwright (E2E)
Pokémon GO GCP — Automated Code Submission Engine
2025–2026 · Backend Automation · Cloud Run Jobs · Web Scraping ·
A scheduled backend checks active subscriptions, submits codes and verifies their appearance.
What it does
The automation backend for the subscription service. A scheduled Cloud Run Job that reads active trainer codes from Cloud SQL and submits them to two community sites daily at 15:00 BRT, fully headless with no manual intervention.
How it's built
- Two independent scrapers: Puppeteer + stealth plugin for pokemongofriendcodes.com, Playwright for pogocodes.com (React-based form)
- React controlled component workaround on pogocodes.com; dispatches input events with
bubbles: trueto trigger synthetic event handlers - Verification step after each submission: navigates to the listings page to confirm the code actually appears
- Batch processing (3 codes simultaneously) with configurable delays per action type to avoid rate limiting
- Database-driven: codes sourced from Cloud SQL
trainer_codestable (single source of truth, synced from payment webhooks) - Complete Terraform IaC for Cloud SQL, Cloud Run Jobs, Cloud Scheduler, Secret Manager, and IAM
Technical highlights
- Execution model: scheduled jobs scale down between runs; total service cost also includes its other cloud resources
- Rate limit detection: pokemongofriendcodes.com blocks re-submissions within 24h; script detects and stops gracefully
- Cloud Monitoring alerts on exit code ≠ 0; failed job execution pages the owner
AmigoSecreto — Android App (Google Play)
2024–2026 · Android · Kotlin · MVVM · Google Play ·
Native Android app with exclusion rules, local persistence and secure result reveal.
What it does
A fully-featured Android app for organizing Secret Santa draws. Supports multiple groups, exclusion rules, wish lists, secure reveal, and sharing results via WhatsApp, Telegram, SMS, or Email. Available on Google Play.
How it's built
- Fully migrated to Kotlin (from Java) with MVVM architecture: AndroidViewModel + LiveData + Repository pattern
- Hilt for dependency injection · Coroutines for async database operations on IO thread
- Room ORM with dual-layer database (Room + legacy DAOs coexist; eager Room initialization ensures migrations complete first)
- Backtracking draw algorithm extracted to pure function (
SorteioEngine.kt): testable, no side effects, handles impossible constraint scenarios gracefully - Batch queries with INNER JOIN to eliminate N+1 problem on wish list counts · All DB writes in atomic transactions
- Edge-to-Edge layout (Android 15), PDF export (PDFKit), QR code generation, local notifications, backup/restore as JSON
- GitHub Actions CI/CD: push to master → internal Play track; tag
v3.x→ production track
Technical highlights
-
297 unit tests + Espresso integration tests ·
UnconfinedTestDispatcherfor deterministic coroutine testing - Min SDK 21 (Android 5.0+) · Target SDK 35 (Android 15) · R8 minification in release builds
- Spoiler protection on WhatsApp sharing: 30 blank lines before the assignment to prevent previews from revealing the result
Secret Santa — iOS App (SwiftUI)
2025–2026 · iOS 17+ · Swift · SwiftUI · SwiftData ·
SwiftUI and SwiftData keep the interface, persistence and draw workflow inside native frameworks.
What it does
The iOS counterpart to AmigoSecreto, same product concept rebuilt natively in Swift and SwiftUI for iPhone. Multiple groups, exclusion rules, wish lists, secure reveal, QR codes, PDF export, and local notifications. Zero external dependencies.
How it's built
- SwiftUI + SwiftData only, no third-party packages; persistence, UI, PDF, QR codes, and notifications all via native Apple frameworks
- MVVM via SwiftData's
@Queryand@Environment(\.modelContext)with no separate ViewModel classes needed - JSON serialization workaround for many-to-many relationships (SwiftData limitation): exclusions and draw pairs stored as
Datafields with computed property decoders - Backtracking draw algorithm with 200-attempt limit; same logic as Android, adapted for Swift
-
SequentialShareView: workaround for iOS limitation that prevents opening multiple URL schemes simultaneously; shows sequential buttons for WhatsApp, SMS, Email - 6-page onboarding, draw history, statistics, backup/restore with JSON forward compatibility
Technical highlights
-
30+ unit tests using Swift Testing framework (
@Suite,@Test) -
iOS 17+ minimum: uses
ContentUnavailableView,@Bindable, and other modern APIs throughout - PDF generation via
UIGraphicsPDFRenderer· QR codes via Core ImageCIQRCodeGenerator· haptic feedback on reveal
Experience
From software development to reliability and shared engineering platforms.
VerifyMy
Site Reliability Engineer
Jun 2021 – Present · 5 years 4 months
Platform engineering for regulated online safety.
- Built and operated cloud infrastructure, delivery pipelines and monitoring across multiple environments.
- Developed a pilot for ephemeral preview environments and tested image promotion without rebuilds.
- Diagnosed shared CI platform failures and repaired alerting gaps introduced by runtime migrations.
- Contributed infrastructure controls, operational evidence and recovery procedures for security audits.
Intelipost
Site Reliability Engineer
Feb 2020 – Jun 2021
Reliability and infrastructure modernization for logistics technology.
- Consolidated legacy Elastic Stack deployments onto Kubernetes with dedicated node roles and automated backups.
- Built specialized log pipelines and event streaming for operational monitoring and business intelligence.
- Supported capacity planning and infrastructure preparation for peak seasonal demand.
Dasa
Site Reliability Engineer
Jan 2018 – Feb 2020
Cloud operations in a large healthcare environment.
- Provisioned Kubernetes environments and networking using Terraform and automated deployment pipelines.
- Worked across Azure and AWS on observability, infrastructure automation and incident response.
- Created monitoring discovery and operational documentation to improve coverage and knowledge transfer.
Earlier career · software development and IT
- Dasa · Software Developer
- Jul – Dec 2017
API Gateway and REST/SOAP integration. - PRÓPONTO · Software Developer
- Jan – Jul 2017
Web services and continuous integration. - Microdata Sistemas · Java Developer
- Jan – Dec 2016
Java web services and e-commerce. - Microdata Sistemas · Systems Analyst
- Nov 2014 – Dec 2015
Delphi, SQL Server and enterprise support. - GZ Sistemas · Junior IT Support Analyst
- Mar 2013 – Jul 2014
Customer support, databases, networks and Linux. - Coca-Cola FEMSA · Administrative Assistant & Supervisor
- Feb 2012 – Mar 2013
Delivery operations, reporting and monthly closing.
An operator's perspective.
A developer's approach.
I work where infrastructure, software and the engineering team's day-to-day experience meet.
My route into platform engineering started in IT support and software development. That background makes me care about both sides of an abstraction: how a system behaves in production and how easily another engineer can understand and change it.
My strongest work turns a one-off fix into a repeatable capability: a deployment workflow, a diagnostic approach, a reliable signal or a documented operating procedure.
Capabilities, with evidence
| Capability | Applied to | Evidence |
|---|---|---|
| Platform & delivery | Kubernetes, Terraform, GitHub Actions, ArgoCD, Helm | Preview environments and image promotion |
| Reliability & observability | Jenkins, Prometheus, Grafana, Cloud Monitoring | Runtime-aware alert repair |
| Cloud architecture | GCP, AWS, Azure; shared networks and isolated environments | Terraform and Shared VPC |
| Security operations | Scan automation, metric enrichment, operational controls | Security posture visibility |
| Cost engineering | Resource consolidation, cost allocation, ingestion paths | A measured monitoring billing reduction |
| AI infrastructure | GPU serving, startup optimization, failover experiments | Multimodal LLM serving and operated fallback |
Technical leadership in practice
Three examples of turning an individual investigation into something the team can reuse. The scope below reflects the delivered work; broader adoption is not assumed.
Make a recovery procedure executable
I repaired bootstrap and teardown defects during a full cluster rehearsal, then reused the process for three environment rebuilds. The rehearsal restored 35 GitOps applications and adopted 49 certificates without reissuing them.
Recovery decisions and validation ↗Put the fix in the shared platform
I isolated DNS overhead, made resolver configuration adjustable in the shared Helm chart and checked eight application/environment combinations before the production rollout.
From diagnosis to a reusable setting ↗Design for the next engineer
I built a two-repository preview pilot with a shared environment convention, tested-image promotion and automatic cleanup. The lifecycle makes creation and removal part of the same capability.
The pilot and its adoption boundary ↗Independent portfolio demonstration · Python
Read the failure path, then run it.
A small inference client demonstrates authenticated requests, per-attempt timeouts, bounded response reads and explicit fallback outcomes. Integration tests use real local HTTP servers; no GPU, API subscription or model download is required.
This is a new educational sample built for this portfolio, separate from employer code. It exercises transport behavior with simulated model responses, not model quality or production capacity.
- Validate configuration and authenticate
- Try the primary within its timeout
- Fall back on transient failure or an empty answer
- Return an answer or an explicit failure
How I contribute beyond code
- Mentor engineers through incident response, infrastructure changes and production-readiness reviews.
- Coordinate migrations and platform changes with development, QA and security teams.
- Document decisions, rollback paths and runbooks so work remains usable after handover.
Education
MBA, Software Engineering
Wyden Educacional · 2015–2016
Analysis and Systems Development
Anhanguera Educacional · 2012–2014
Languages
Portuguese — native
Spanish — full professional
English — professional working proficiency
Courses and continued learning
- Google Cloud Platform Fundamentals: Core Infrastructure
- Logging, Monitoring and Observability in Google Cloud
- Advanced agile development with Java
- TypeScript programming and SQL fundamentals
Let's talk about your platform.
I'm interested in Senior and Staff roles in Platform Engineering and SRE, with a focus on reliable delivery, AI infrastructure and cloud cost efficiency.
Working together internationally
- Roles
- Senior or Staff · Platform Engineering · Site Reliability Engineering
- Working languages
- English — professional working proficiency
Portuguese — native · Spanish — full professional - Planning a conversation
- Include the role location, required time-zone overlap and employment arrangement in your message so we can discuss fit, work authorization and any relocation requirements.
The case studies show how I approach problems. If a particular challenge looks familiar, include it in your message.