Summary
Senior Software Engineer with 8+ years of production software, focused on GenAI and AI-native products: LLM systems, agents and evals, on TypeScript, Python, React, Next.js, Angular and Node.js, with PostgreSQL, Docker and AWS. Payments, business insurance and hospital equipment service taught me audit trails, idempotent recovery and failure isolation, the same problems agent systems meet as guardrails. I build LLM systems and the evaluation that decides whether they are safe to ship: on my own site a live LLM endpoint runs behind a continuous integration (CI) harness, with an LLM judge calibrated against my own labels at a 0.85 agreement floor and jailbreak resistance gated at 1.0. I work daily in Claude Code and Codex, authoring the skills, guard policies and lifecycle hooks they run under. At Raylu I built, with one other engineer, the frontend platform behind a private-markets product's data-dense pages, and changes are measured as production builds against their parent commit, route by route. At Betsson I built a 12-agent AI-assisted engineering system a platform team adopted, on a PCI-DSS payment platform processing 40M+ transactions a year.
Skills
- LLM Systems & Evaluation
- eval harness design · corpora graded on end state · LLM-as-judge calibrated against human labels with an agreement floor · pass@k and all-runs-pass · control-treatment A/B · failure taxonomies · per-job cost caps · model routing by task tier · tracing (Langfuse, OpenTelemetry) · Anthropic, OpenAI and Google APIs · Vercel AI SDK · structured output validation with Zod
- Agents & Guardrails
- agent and sub-agent orchestration · tool-surface design · Model Context Protocol (MCP) servers · prompt-injection defense at the request boundary · streaming leak detection · kill switches · content-hashed prompt versioning · model-drift detection · policy guards that fail closed
- Backend & Data
- Python · Node.js · Express · Fastify · REST APIs · backend-for-frontend layers · PostgreSQL · MongoDB · Redis · MS SQL Server · SQLite · ETL pipelines · WebSocket streaming (STOMP/SockJS)
- Product Engineering
- TypeScript · JavaScript (ES6+) · React · Next.js · TanStack · Tailwind CSS · design systems · micro-frontends · Angular (RxJS, NgRx) · Web Components (StencilJS) · Vue.js
- Platform, Delivery & Quality
- Docker · NGINX · AWS (S3, CloudFront, EC2, RDS) · Vercel · GitHub Actions · Jenkins · Nx monorepos · Sentry · Playwright · Vitest · Jest · React Testing Library · Storybook · MSW · WireMock · mutation testing
Experience
(opens in a new tab)Senior Software Engineer · New York, US (remote) · Jun 2026 - Present
AI deal origination platform for private markets, used by 50+ venture, growth and private equity funds holding $500B+ in assets to go from an investment thesis to booked founder meetings, scanning 300,000+ sources. $8M Series A, security-audited (SOC 2 Type I and II).
- Rebuild the investor workflow screens of a private-markets platform (company, pipeline, comparison, outreach), giving funds holding $500B+ in assets one surface to shortlist, compare and contact founders, in React and Next.js 14 with TypeScript 5, TanStack, Plate, Tailwind CSS 4, Radix, Nx and Storybook, with Jest, React Testing Library, Playwright and Chromatic on Node.js 24.
- Deliver backend changes on Fastify, TypeORM and PostgreSQL: a hand-written migration with a rehearsed backfill and tested rollback, and an EXISTS-subquery fix that raised one owner's team-filter matches from 14 to the correct 75.
- Design the versioned view-state contract those data-dense pages share (sort, typed filters, search, column order and size, grouping, pagination) in namespaced, URL-safe TypeScript codecs, with a backward-compatible migration chain that falls back to a default instead of throwing, so every shared or stale link resolves to a working view.
- Measure the data-platform migration with production builds of four Next.js routes against their parent commits on one shared backend: controls without an accessible name down to 1 on every route, from 55 on the worst, and on the pipelines route Cumulative Layout Shift (CLS) from 0.166 to zero, Largest Contentful Paint (LCP) from 2,544 to 1,308 ms and Lighthouse performance from 79 to 96, with performance flat on the other routes.
- Build the table engine from zero, with one other engineer co-developing it from the second month: a headless core that never imports the React layer, then client mode on TanStack Table and server mode on React Query with cancellable requests, deterministic caching and faceted filter counts, held to 94.7% line and 85.4% branch coverage against library baselines of 85.4% and 65.8%.
- Write design documents before code (decision records, an evidence log citing code by path and line, EARS acceptance criteria, a WCAG criterion-by-criterion table and a rollback plan keyed to a named signal), specifying native table semantics (row and column headers, aria-sort, a polite live region) and virtualizing rows over a real table element rather than display:grid to keep them.
- Build the shared outreach editor on Plate and React, chosen over Lexical, TipTap and ProseMirror against an evidence log, holding personalization as document structure so authors see which fields resolve before sending.
Senior Software Engineer · Malta (hybrid) · Mar 2025 - May 2026
Payment and cashier platform on the operator's proprietary Player Account Management system, under card-industry security audit (PCI-DSS), at a Nasdaq Stockholm-listed operator: €1.197B revenue and 31.1M registered customers in 2025, local licences in 24 countries, about 2,900 staff across 20 countries.
- Built the cashier micro-frontend platform every deposit and payout across the group's brands passes through, isolating brand orchestration from shared payment primitives on 40M+ transactions a year, in Angular 19 with TypeScript, RxJS, NgRx, StencilJS Web Components, Storybook and Nx.
- Drove the payment primitives from white-label configuration, rendering the right frontend per country, jurisdiction and product across 5+ brands, 8+ languages and 10+ currencies (zero-decimal ones included) as framework-agnostic StencilJS Web Components.
- Designed the multi-step deposit and withdrawal flows as async state machines in RxJS and NgRx, with recovery paths for failed steps, across 15+ regulated jurisdictions.
- Integrated Trustly open-banking deposits for the Nordic markets and Yape payments for Peru (app approval code, status polling and timeout handling), with WireMock and Playwright mocks of both providers.
- Covered KYC and payment flows with Jest, Playwright and WireMock against mocked providers so provider outages and API changes never broke the suite, and enforced path-scoped standards with Husky Git hooks and secret scanning.
- Built a 12-agent AI-assisted engineering system on GitHub Copilot spanning generation, review, debugging, testing and architecture validation, adopted across the team with every automated action reviewable.
Independent Consultant
Senior Software Engineer · Remote · Mar 2023 - Mar 2025
Independent consulting for a medical imaging equipment company: the service-order and field-service platform its engineers maintain imaging equipment at hospitals through, with specialist scheduling, field visits and parts collection.
- Rebuilt a medical imaging equipment company's hospital equipment service platform, replacing a legacy tool with a layered domain, data and presentation architecture for service orders, specialist schedules and field visits, as a progressive web app on Angular 17 to 19 with TypeScript 5, RxJS, PrimeNG, Chart.js, FullCalendar, Bryntum Scheduler, the Google Maps API, WebSocket (STOMP/SockJS) and Nx.
- Built specialist visit scheduling with travel-time checks, plus a 29-permission security-profile model and an HTTP interceptor that retries with backoff and de-duplicates in-flight requests.
- Automated releases with Bash, SSH and NGINX, cutting production updates from about 5 minutes to about 45 seconds and rollbacks to about 1 minute.
- Staged the upgrade from Angular 17 to 19 and Nx 17 to 20 (52 of 54 components to OnPush with standalone components, signals and the new control flow) and built the operations dashboard and a customer-satisfaction module with a survey form builder, goals and metrics per client, with Lighthouse accessibility near 100.
- Cut time to interactive about 52% with concurrent RxJS loading and change-detection tuning, and the bundle about 33%, layout-shell CSS about 98% and initial load about 25% by lazy loading and PrimeFlex utilities.
Software Engineer · São Paulo, Brazil (remote) · Dec 2021 - Mar 2023
B3-listed owner of Centauro and of Fisia, Nike's exclusive Brazil distributor through 2034: R$7.9B gross revenue in 2022 with 31.9% of sales digital, and group storefronts holding 21% of Brazil's online fashion, apparel and footwear traffic.
- Rebuilt Nike Brazil's storefront behind a backend-for-frontend (BFF) gateway, including the listing, product detail and search pages, cut over in a phased rollout, in React and Next.js 12 to 13 (server-side rendering, static generation and incremental static regeneration) with TypeScript, styled-components, NextAuth, Nx, Webpack and Storybook.
- Kept the Nike and Centauro storefronts, serving 8M+ monthly users, isolated inside the shared Nx monorepo by enforced module boundaries, on a design system they share with brand theming and Storybook.
- Integrated a WebAR try-on into the Next.js purchase journey and mentored four junior engineers in React, testing and review.
- Cut page load about 32% on storefronts carrying R$2.5B of 2022 digital revenue through Next.js code splitting, image optimization and caching, improving Core Web Vitals about 12%.
- Lifted conversion about 10% across 20+ Google Optimize 360 A/B experiments, each with pre-agreed stop-loss criteria.
- Implemented technical SEO (schema.org data, sitemaps, canonical URLs, incremental static regeneration) and data layer analytics feeding the funnel and the A/B experiments, and covered the four revenue-critical checkout journeys at about 70% coverage with Jest and MSW.
Frontend Developer · assigned to VMware · Campinas, Brazil · Jan 2021 - Dec 2021
VMware Pathfinder, the self-service portal fronting VMware's Hands-on Labs, Test Drives and assessment tools across Tanzu, Anywhere Workspace and VMware Cloud on AWS: a catalogue of live interactive labs, retired after the Broadcom acquisition. Delivered from Daitan, acquired by Encora in July 2021.
- Engineered VMware Pathfinder, the evaluation portal behind 2.1M+ labs, where customers run live labs in the browser before buying, in Angular 11 with TypeScript, RxJS, NgRx, Reactive Forms and i18n.
- Fed catalogue pages from CMS content so copy changed without a deploy, and held unit-test coverage at about 70% with Karma and Jasmine on the workflows that gate a lab launch.
- Localized the portal through i18n, tracked the funnel from lab starts to completions and assessments, and delivered through AWS CodeBuild to S3 and CloudFront with cache invalidation, per-environment configuration and error monitoring.
Frontend Developer · Campinas, Brazil · Apr 2020 - Jan 2021
Itaú Unibanco's in-house engineering company, acquired in 2019 and 1,994 strong by the end of 2020, building for Latin America's largest bank: 24.2M digital clients at the end of 2020, 1.2M of them businesses, selling partner insurers' policies through an open platform.
- Built micro-frontends to replace Itaú's legacy business insurance application journey by journey, packaged as custom elements and rendered at runtime by the bank's internal host platform, in Angular 9 and Angular Elements with TypeScript, RxJS and Reactive Forms.
- Shipped each micro-frontend through its own AWS CodePipeline and CodeBuild pipeline to S3 and CloudFront, so it deployed on its own schedule.
- Defined each micro-frontend's contract with the host platform (custom-element attributes in, DOM CustomEvents out) and drove each insurer's flow from configuration, so a new partner insurer needed no frontend code.
- Built the offer showcase comparing plans from 4+ partner insurers (e.g. MetLife, Amil), plus quote forms validating CNPJ and covered lives.
- Built proposal and policy tracking after contracting (status, pending items, documents), with semantic HTML, ARIA and keyboard navigation covered by Jasmine tests.
Full Stack Engineer → Frontend Developer · Campinas, Brazil · Feb 2019 - Apr 2020
Built through a non-profit R&D institute. Transportation infrastructure: a toll-road concession with a 319.8 km corridor carrying 850,000 vehicles a day (2019). Agribusiness foreign trade: a B2B customs-documentation consultancy active since 1989.
- Developed the traffic-monitoring dashboards for CCR AutoBAn (now Motiva), whose 24/7 control centre watches 106 cameras and 36 traffic sensors along a 319.8 km corridor carrying 850,000 vehicles a day, in Angular 8 with TypeScript, RxJS and NgRx.
- Replaced the concession's spreadsheet billing with an Angular workflow: CSV import and export in TypeScript, row-by-row validation before saving, and a monthly close that locked edits and totalled gross revenue, equivalent vehicles and average tariff.
- Built CGO Assessoria's customs-compliance platform, cutting its reporting API from about 40s to under 1s and other endpoints from 2s to 200ms, in Angular 8 with TypeScript, RxJS, Node.js, Express, PostgreSQL, MongoDB and JWT.
- Traced the slow reporting endpoint to how the ORM queried the data and fixed it by rewriting the queries and adding PostgreSQL indexes, instead of caching a slow read.
- Migrated document-heavy workloads from MongoDB to PostgreSQL with a Node.js ETL pipeline, validating the cutover by matching row counts and reports, with MongoDB read-only as the rollback path.
- Modelled each foreign-trade process as a state machine through its regulatory stages, with a document checklist and deadline alerts, and generated PDF and Excel reports server-side.
Full Stack Engineer → Software Engineer · Campinas, Brazil · Jul 2018 - Feb 2019
Custom builds by a software house. Education publishing: Grupo SM, operating across Spain and nine Latin American markets. Retail workforce training: a B2B chat platform used across Cia Hering's 800+ stores.
- Architected Edições SM's offline-first learning app for Android, iOS, Windows, macOS and Linux, sharing about 80% of the code, cutting desktop build time about 40%, on Ionic 3, Angular and Electron with TypeScript, Cordova, SQLite and REST APIs.
- Built the offline content pipeline with Cordova file I/O and SQLite (resumable book-bundle downloads, catalogue and reading position stored locally) and the sync that merges two devices' offline reading histories on reconnection, so a student's devices converge instead of the last one winning.
- Built the frontend and backend services for Hondana INDICA, the training chatbot used across Cia Hering's 800+ stores, in React with Node.js, Express, Webhooks, Firebase Cloud Messaging and MS SQL Server.
- Built the Node.js dispatcher that fans one training push out to Firebase Cloud Messaging and Facebook Workplace, with retry and backpressure per channel, so one channel's failure never dropped a campaign.
- Fixed duplicate Workplace webhook deliveries that double-counted answers, making ingestion idempotent on the message id.