Senior Full-Stack Engineer · AI Systems

João Henrique Borchoski

Senior Full-Stack Engineer building AI systems in production

I build AI systems that survive production, and the guardrails that keep them honest. Open to remote roles worldwide.

years shipping software
6+years shipping software
use cases in the platform I work on
~700use cases in the platform I work on
tools on one MCP server
62tools on one MCP server
AI patterns in production
8AI patterns in production

Stack

What I build with

Grouped by what it does, not by logo count. Everything listed here is something I have shipped or maintained in a real codebase.

Languages & runtimes

  • TypeScript
  • Python
  • JavaScript
  • Java
  • SQL
  • Node.js 22
  • Bun
  • Deno

Backend & architecture

  • NestJS
  • FastAPI
  • Express
  • Fastify
  • Spring Boot
  • DDD
  • Clean Architecture
  • Event-driven
  • Multi-tenancy
  • TypeORM
  • SQLAlchemy
  • Sequelize

AI & agents

  • LangGraph
  • Vertex AI / Gemini
  • RAG
  • pgvector
  • MCP
  • Tool-calling
  • Structured output
  • LLM-as-a-judge
  • Context caching
  • Embeddings
  • CopilotKit / AG-UI
  • OpenRouter
  • LLM FinOps

Frontend

  • React 19
  • Next.js
  • Astro
  • Vite
  • Angular
  • Tailwind CSS
  • shadcn/ui
  • Radix UI
  • TanStack Query
  • Zustand
  • Zod
  • CASL
  • Recharts

Data & messaging

  • PostgreSQL
  • Redis
  • Google Pub/Sub
  • RabbitMQ
  • Amazon SQS
  • Azure Service Bus
  • Socket.IO
  • SSE

Cloud & platform

  • GCP
  • Kubernetes / GKE
  • Docker
  • GitHub Actions
  • Turborepo
  • Supabase
  • Railway
  • AWS S3
  • Vercel

Quality & observability

  • Vitest
  • Jest
  • Playwright
  • Pact
  • Storybook
  • Sentry
  • Prometheus
  • Metabase
  • OpenTelemetry-style correlation

Security & authorisation

  • OAuth 2.0 / 2.1
  • JWT + JWKS
  • MFA / TOTP
  • Capability-based RBAC
  • Tenant isolation by test
  • Webhook HMAC
  • AES-256

AI-augmented engineering

  • Claude Code
  • Cursor
  • Authored agent skills
  • Spec-driven workflow
  • Git worktree isolation
  • Adversarial review gates

Bold marks the tools I reach for first.

About

About

I build the unglamorous half of AI products: the part that has to still work on a Tuesday afternoon when the model returns something nobody planned for.

Most of my six years have gone into backend architecture — DDD and clean architecture in NestJS, event-driven systems, multi-tenant isolation, OAuth providers written from scratch. For the last two years that foundation has been carrying AI features: a pipeline that distils hundreds of contracts into a clause playbook, a multi-agent runtime with conversation memory in Postgres, an MCP server exposing a whole platform as typed tools, and a central service that makes the cost of every LLM call attributable.

What I care about in that work is where the safety lives. A prompt asking a model to behave is a wish; a test that fails the build when a new tool omits its destructiveness annotation is a guarantee. I would rather write the second one, and I usually do.

I currently lead a team of four. I read and write English daily, hold Brazilian and Polish citizenship, and work remotely by default.

Experience

Where I have worked

  1. Senior Full-Stack Engineer

    Current

    Contraktor · Contract Lifecycle Management / LegalTech

    Jan 2026 — Present · Remote

    • Lead a team of four engineers end to end, from backend services through to the interfaces on top of them.
    • Architect AI features that have to hold up in production — agent runtimes with tool-calling, retrieval over private document corpora, and the validation layers that sit between a model's output and a customer's contract.
    • Built the organisation's central LLM cost service: idempotent event ingestion from three producing services, pricing versioned by effective date, and a dimensional model that makes every call attributable to a product, area and operation.
    • Standardised the team's AI-augmented workflow — authored agent skills and guard-rail rules, a spec-driven pipeline with human approval gates, and parallel execution in isolated Git worktrees with adversarial review.
    • Work in an English-speaking remote setting with agile delivery.

    Stack

    • TypeScript
    • NestJS
    • Python
    • FastAPI
    • LangGraph
    • PostgreSQL
    • pgvector
    • Vertex AI
    • GCP
    • Kubernetes
  2. Backend Developer

    Fretefy · Logistics / TMS

    Mar 2025 — Jan 2026 · Hybrid

    • Built and maintained integrations with four enterprise ERPs in Node.js, keeping operational data synchronised and consistent across systems that disagree about almost everything.
    • Shipped an internal LLM assistant over vectorised company knowledge — development standards, HR processes and product documentation — so answers came from the actual source rather than from tribal memory.
    • Delivered customer-facing automated support for licence questions, order status and billing enquiries.
    • Profiled and optimised API and backend service performance under growing load.
    • Moved high-volume work onto asynchronous messaging with Azure Service Bus.

    Stack

    • Node.js
    • TypeScript
    • PostgreSQL
    • Azure Service Bus
    • RAG
    • ERP integrations
  3. Software Developer

    Vamilly Inovações de TI · Software consultancy

    Oct 2021 — Feb 2025 · Hybrid

    • Built APIs and backend services in Java with the Spring stack, and in Node.js with Express, TypeScript and TypeORM.
    • Worked directly with frontend teams across Angular, React and Flutter, which is where I learned how much a badly shaped API costs the people consuming it.
    • Led refactors that measurably cut response times and removed scaling ceilings.
    • Introduced queues and asynchronous processing with Amazon SQS for work that had no business being synchronous.

    Stack

    • Java
    • Spring Boot
    • Node.js
    • TypeScript
    • TypeORM
    • PostgreSQL
    • Amazon SQS

AI & Agents

AI in production, not in a notebook

Three principles hold this work together. Each one is a decision I had to defend in code review, not a slogan — so each comes with concrete examples from separate systems.

Principles

Guardrails belong in code, not only in the prompt.

A prompt asking a model to behave is a request. A check that fails the build, rejects the output, or refuses to persist is a guarantee. Both have their place, but only one of them survives a model upgrade.

4 systems

  • Document Audit Agent

    When the model proposes a literal snippet to anchor an inserted clause, the code rejects the anchor unless it occurs exactly once in the document, and falls back in a defined cascade — the model never gets the last word on where text lands.

  • Internal MCP Server

    A test walks every tool wrapper by reflection and fails the build if a new tool omits any of its four MCP annotations. A destructive tool cannot reach a model unlabelled, because the build will not produce one.

  • LLM Observability & FinOps Service

    The cost figure sent by a client is discarded by whitelist and recomputed centrally, then frozen with a pricing version. A producing service cannot misreport what it spent, even by accident.

  • Engineering Intelligence Dashboard

    A deterministic regex gate runs before the judge, so obvious rejects cost zero tokens, and the refinement agent runs under a read-only allowlist with a tested invariant that no mutating command ever touches a developer’s working branch.

The human always decides.

None of these systems writes to anything that matters without a person confirming it. Not because the models are bad, but because the cost of a wrong write is borne by someone who did not choose to take that risk.

4 systems

  • Engineering Intelligence Dashboard

    A generated review is stored as a versioned draft, edited by the tech lead in a markdown editor, and published under their own name. The validation harness never blocks publishing — it advises.

  • Document Audit Agent

    Accepted suggestions are applied into the real document as tracked revisions, so every AI-authored change arrives as something a reviewer accepts or rejects, not as a silent edit.

  • AI-Augmented Engineering Setup

    The delivery pipeline has four human gates, two of them hard stops. Nothing is pushed or opened as a pull request without an explicit go-ahead, and the upstream is verified before the request is opened.

  • School Finance Platform

    Extracted receipt data pre-fills the form and stops there. The head teacher reviews and confirms; no financial record is ever written from a model’s output alone.

Graceful degradation is a requirement, not a courtesy.

Every failure path has defined semantics and none of them is silence. The consistent rule: the AI feature may become unavailable, but it may never take the product down with it.

4 systems

  • School Finance Platform

    All LLM SDK usage sits behind one interface, with a null implementation that answers a friendly 503 when credentials are absent. The application stays fully usable with no AI at all, and a test enforces that the SDK never leaks out of that layer.

  • Engineering Intelligence Dashboard

    A failed generator marks the run failed; a failed judge degrades the run to a draft carrying the judge error. Different causes get different outcomes, and neither one is a blank screen.

  • LLM Observability & FinOps Service

    The usage emitter is best-effort and becomes a no-op when unconfigured. Cost telemetry going down cannot slow or break the extraction it is measuring.

  • Conversational Product Copilot

    A document the agent cannot read becomes a plain answer saying so, rather than an exception that kills the streaming response mid-sentence.

Patterns shipped

Every pattern below is running in a system I worked on. Follow one to the case study that demonstrates it.

Projects

Selected work

Employer work is anonymised: functional descriptions, no company, client or product names, and no repository links. Personal projects link to their source.

  • Employer work2026

    Document Audit Agent

    Design and implementation

    A service that distils a clause playbook out of a batch of contracts by semantic consolidation, then audits new contracts against it — classifying compliance and proposing corrected wording.

    Stack

    • Python
    • FastAPI
    • Pydantic
    • Vertex AI
    • Gemini
    • pgvector
    • PostgreSQL
    • SQLAlchemy
  • Employer work2026

    Internal MCP Server

    Design and implementation

    A Model Context Protocol server exposing a contract lifecycle platform as 62 typed tools any LLM client can call, with delegated OAuth 2.1 and tenant isolation enforced by the input schema.

    Stack

    • TypeScript
    • NestJS
    • MCP SDK
    • Zod
    • OAuth 2.1
    • jose
    • pnpm workspaces
    • Vitest
  • Employer work2026

    Conversational Product Copilot

    Design and implementation

    A multi-agent runtime embedded in a SaaS product — a navigation agent that acts inside the UI through tools the frontend declares, and a grounded agent that answers strictly about one document.

    Stack

    • Python
    • FastAPI
    • LangGraph
    • CopilotKit
    • AG-UI
    • Gemini
    • Vertex AI
    • PostgreSQL
  • Employer work2026

    Engineering Intelligence Dashboard

    Design and implementation

    An internal dashboard computing DORA and pull-request flow metrics in real-time SQL, generating AI-assisted code reviews on demand, and refining backlog tickets with an agent that reads the actual source code.

    Stack

    • TypeScript
    • NestJS
    • React
    • Vite
    • Turborepo
    • PostgreSQL
    • TypeORM
    • Deno
  • Employer work2026

    AI-Augmented Engineering Setup

    Design and implementation

    A twelve-repository workspace instrumented as an environment for coding agents — authored skills, guard-rail rules, four human gates, parallel execution in isolated worktrees, and adversarial review before anything merges.

    Stack

    • Claude Code
    • Cursor
    • Bash
    • Git worktrees
    • Playwright
    • Python
    • Markdown
  • Employer work2026

    LLM Observability & FinOps Service

    Design and implementation

    The organisation's canonical record of LLM consumption — ingesting usage events from every AI product, computing cost centrally against date-versioned pricing, and making spend attributable per customer and operation.

    Stack

    • TypeScript
    • NestJS
    • PostgreSQL
    • TypeORM
    • Metabase
    • Kubernetes
  • Personal project2025 – present

    School Finance Platform

    Sole developer

    A web application replacing three manual documents used by a municipal school's parent-teacher association, with official report generation and AI-assisted receipt reading. In production.

    Stack

    • NestJS
    • Next.js
    • TypeScript
    • PostgreSQL
    • TypeORM
    • Turborepo
    • Vertex AI
    • Gemini
  • Personal project2025 – 2026

    Industrial Production Control

    Sole developer

    A web and mobile platform for industrial joinery production control — site registration, measurement, negotiation, load planning and orders. Clean architecture with 347 isolated use cases.

    Stack

    • Node.js
    • Express
    • TypeScript
    • TypeORM
    • PostgreSQL
    • tsyringe
    • RabbitMQ
    • Redis
    Case study in progress
  • Personal project2024 – 2026

    Water Distribution ERP

    Sole developer

    A lean ERP for a mineral water distributor, maintained for about two years — orders, returnable-container stock, cash management, closings and reporting, with thermal receipt printing and real-time updates.

    Stack

    • Node.js
    • Express
    • TypeScript
    • TypeORM
    • PostgreSQL
    • Socket.IO
    • RabbitMQ
    • Redis
    Case study in progress

Contact

Let's talk

No form — pick whichever channel you actually use. I read all of them and reply in English or Portuguese.

Based in
Curitiba, Brazil
Availability
Open to remote roles worldwide
Citizenship
Brazilian and Polish
Languages
Portuguese (native) · English (advanced)