Two live products · 1,000+ offline tests · Public decision logs

I put language models
behind deterministic guardrails.

Backend Engineer · LLM-Integrated Systems

I design and ship production backend systems where the model does the perceiving and code does the deciding. Two live products, built end to end on FastAPI, PostgreSQL and AWS — with the tests, the infrastructure and the decision log to back them.

Open to backend and platform work across the stack — APIs, data pipelines, infrastructure — with a particular edge where LLM integration has to hold up in production rather than in a demo.

⬇ Download Resume See the work
Python FastAPI Go PostgreSQL AWS Terraform Docker OpenAI Claude / MCP dbt
2
Live products, designed and built solo
1,000+
Tests, every one running offline
100/103
Fields resolved by the eval harness
70+
Architecture decisions recorded
15 yrs
Domain depth behind the products

About

I ran the operation first. Now I build its systems.

Operational depth in a real domain, joined to backend engineering and LLM integration. I build the systems, not the models — ML research is not my lane, and I know where the line is.

I trained as an Electronics & Communications engineer (Tec de Monterrey, with exchanges in Sweden) and spent fifteen years running a collegiate American football program — sixteen staff, a hundred athletes a season, an MXN 7M (≈US$350K) annual budget, and every operational decision that comes with them.

That is where the engineering problems came from. Statisticians narrating plays into spreadsheets, evaluations scattered across forty Excel files, reports that ate whole workdays. I know exactly what these systems are for, because I was the one they failed.

So the products I build now are the ones I needed. Both put a language model at the perception layer — transcribing speech, extracting fields — and keep every decision that must be right in deterministic code. The model perceives; code decides. That line is the whole discipline, and the tests and rules engines exist to enforce it.

That work does not stand alone. I built the data platform behind a real estate investment product — Go and Python services, Airbyte/dbt pipelines, Terraform-provisioned AWS — and I contribute backend and full-stack work to a workforce attendance system today. I'm also pursuing a Master's in Software Development with AI Tools.

What I'm after is work where I can take a problem end to end — shaping it, building it and standing behind it in production. That is how both products above were built, and it is the way I add the most. I'm equally at home taking one system inside a larger platform and owning it properly.

At a glance

  • Now: Backend Engineer — LLM-integrated systems
  • Stack: Python · Go · PostgreSQL · AWS
  • Focus: APIs, data pipelines, LLM extraction
  • Practice: Test-first · ADRs · PR-driven Git
  • Languages: English C2 · Spanish native
  • Strength: End-to-end ownership, design to production
  • Open to remote, hybrid or on-site
  • Studying: M.Sc. Software Dev with AI Tools

How I work

Four rules I don't break

These are not slogans — each one is written down as an architecture decision record in a public repository, with the alternatives I rejected and what the choice costs.

01

The model perceives, code decides

A language model is excellent at reading intent out of messy speech and unreliable at arithmetic and rules. So it only ever extracts what was said; everything that has to be right — down and distance, totals, state transitions — is deterministic code I can test and step through.

02

Drop, don't guess

An unmentioned field stays absent. No courtesy zeros, no invented defaults, no plausible filler — because a fabricated zero is indistinguishable from a real one downstream, and it corrupts the record silently. Absent data is honest data.

ADR-0015 · Extraction value semantics
03

Tests run offline or they don't count

Every suite runs with no network and no credentials, faking only the model and exercising the real parser and rules. One test asserts that offline property itself — I wrote it after a leaked environment variable let the suite pass silently for weeks.

ADR-0009 · Test-driven development
04

Write the decision down, with its cost

Every non-trivial choice becomes an ADR naming the alternatives and the trade-off accepted. It is how the next person — often me, months later — finds out why the obvious approach was rejected instead of quietly reintroducing it.

ADR-0019 · Containing a demo that spends money

The full logs are public: 19 decisions for Voxa, and the engine seam that came out of them in voxa-core.

Selected Engineering Work

Two products I built, three I contribute to

Every claim here is checkable. Two of the repositories are public, two of the products are live, and I'm glad to walk through any decision — including the ones I got wrong first.

VoxaLive

Voice-to-spreadsheet data capture · sole designer and engineer
2026

You upload an Excel template; Voxa reads its schema, transcribes what you narrate with Whisper, extracts the fields with gpt-4o-mini, and appends the row. Running on AWS EC2 behind Caddy, with DNS, backups and CI/CD provisioned in Terraform.

The public demo spends real money on every call, so I contained it with hourly and daily per-IP limits over a persisted budget ledger — chosen instead of a sign-up wall so the demo stays frictionless. Releases carry no long-lived credentials and no inbound SSH: GitHub OIDC into AWS, multi-arch images to GHCR, rollout through SSM Run Command.

The 660 tests run with no network and no credentials — including one that asserts the offline property itself, written after a leaked environment variable let the suite pass silently for weeks.

660 offline tests 19 ADRs Credential-free delivery
Python / FastAPIReactPostgreSQLAWS EC2TerraformCaddyGitHub ActionsWhispergpt-4o-mini

playPro StatsLive

Voice-driven football play-by-play · sole designer and engineer
2026

A statistician narrates a play; the system resolves the game. The model extracts only what was actually said — an unmentioned field stays absent, never a courtesy zero — while a deterministic rules engine computes down and distance, possession, turnovers, yard-line math, scoring and penalties. Narration and derived state persist in separate columns so the two never blur.

Post-game corrections are safe by construction: because each play's state derives from the one before it, editing a play re-runs the engine across the rest of the game and rewrites every downstream state.

I built an evaluation harness over a golden narration set that scores per-field accuracy and contract violations, counting courtesy fills as their own failure mode. Latest run: 100 of 103 expected fields across 16 plays. On top sit role-scoped JWT auth and a 15-table catalog on versioned SQL migrations.

412 offline tests 100/103 fields resolved Corrections replay downstream
Python / FastAPIPostgreSQLReactAWSWhispergpt-4oJWTSQL migrations

voxa-core

The shared engine underneath both products
2026

Building the second product exposed how much of the first was domain-agnostic. I extracted the transcription and extraction pipeline into an installable package — Whisper, the LLM call with retry and error translation, tolerant JSON parsing with sparse mode, the data contracts and the exception taxonomy — consumed through a single prompt-builder interface.

The seam is the point: product schema, vocabulary and prompts stay out of the engine, so the football domain never leaks into the generic path. Anything a second client would also need gets promoted upward, deliberately, and logged.

163 tests Two consumers in production One extension seam
PythonPydanticOpenAIpytestEditable install

Unified Revenue Data Platform

ThesisDriven / 270Park · Real Estate Investment Platform
2026

Architected an end-to-end pipeline consolidating three Stripe accounts and Airtable into a single PostgreSQL warehouse — Airbyte → dbt → REST API — serving the production dashboard. Built Go/Gin APIs for subscriptions, one-time purchases and investor–GP matching, backed by materialized views for sub-second reads from the React front end.

Designed and deployed the AWS footprint with Terraform (RDS, ECS Fargate for dbt runs, SSM Parameter Store) across dev and prod, and integrated Keycloak SSO with custom email-gating middleware. The dbt models unify customers, subscriptions and purchases under a 24-hour staleness contract agreed with the business — a number the business owns, not one I invented.

3 → 1 source consolidation Sub-second reads IaC across dev/prod
Go / GinPostgreSQLdbtAirbyteAWS ECS/RDSTerraformKeycloakStripeReact

Workforce Attendance PlatformTeam of 3

ClokiMX · backend & full-stack contributor
2026 – Present

Designed an immutable attendance model in which corrections stack on top of the original punch instead of overwriting it, backed by an append-only audit trail enforced through Postgres permissions rather than application convention — so the log holds even when a handler is wrong.

Every attendance judgment is derived at read time: punches paired against the effective schedule (employee override, else area), shifts crossing midnight, forgotten shifts auto-closed. No rollup tables, so a late correction resolves without a backfill. Closed a check-then-insert race on punch initiation with a transactional advisory lock, so a resent one-time link reuses the pending request instead of spending a second biometric verification.

I also introduced the frontend test harness the project lacked and wrote its architecture decision log.

A team contribution, not a solo product: a team of three, code-reviewed by the technical lead. The ADR log runs to 41 entries — 27 are decisions I made, the rest I documented from existing code.

Append-only audit trail Read-time derivation Race closed with advisory lock
GoPostgreSQLReactMigrationsGo test

AI-Enabled Athletic Performance Database

Tec de Monterrey · Collegiate Football Operations & Analytics
2025 – 2026

An ETL pipeline turning 1,620+ athletic evaluations scattered across Excel files into a validated, normalized PostgreSQL database covering 229+ athletes. Integrated the Model Context Protocol so coaching staff query that database in natural language through Claude, instead of waiting on someone to write the SQL.

Currently designing a custom MCP server with curated tools, read-only roles and audit logging — because natural-language access to a production database is only safe if the surface is deliberately small.

In progress: the MCP integration is in use; the custom server with its own tool surface is still being built.

1,620+ records normalized 229+ athletes Natural-language querying
PythonPostgreSQLMCPClaude APIETL

— Earlier work —

Power BI · DAX

Sports Operations Automation & BI

Power Query pipelines that cut bi-weekly nutrition consumption reporting from full workdays to about fifteen minutes, plus Power BI dashboards over SQLite and IoT sensor feeds (WitMotion, VITRUVE encoders) for 400+ athletes.

Python · Automation

Web Automation & Data Entry

Automated form-filling from image files and Excel data, eliminating repetitive manual entry across multiple web form fields.

SQL · Databases

Sports Team Database

Relational database design and maintenance that made team data accessible enough to actually drive decisions.

Toolbox

Technical Skills

What I reach for to ship production systems — listed at the depth I actually work at.

Languages

PythonFastAPIasyncpgpandasopenpyxlGo / GinpgxSQLTypeScript / React (working level)

Backend & Data

PostgreSQL 16Schema designVersioned migrationsMaterialized viewsREST API designLayered architecturedbtAirbyteETL / ELT

LLM Engineering

OpenAI gpt-4ogpt-4o-miniWhisperAnthropic Claude APIMCP integrationJSON-mode extractionPrompt designEval harnesses

Cloud & DevOps

AWS EC2RDSECS FargateSSMIAMS3TerraformDocker & ComposeCaddy / NginxGitHub ActionsGHCR multi-archOIDC federation

Testing & Practice

pytestpytest-asyncioHypothesisVitestTest-first developmentArchitecture Decision RecordsPR-driven Git flowSpec-driven dev (Kiro)

Auth & Integrations

JWT / bcryptOAuth2 & OIDCKeycloakGoogle IdPStripeAirtable

Background

Education & Certifications

M.Sc. Software Development with AI Tools (in progress)

BIG School

In progress

M.Sc. Telecommunications Management

Tec de Monterrey · Exchange: Växjö Universitet, Sweden

B.Sc. Electronics & Communications Engineering

Tec de Monterrey · Exchange: Södertörns Högskola, Stockholm, Sweden

Courses

Retrieving, Processing & Visualizing Data with Python (Coursera) · Excel Skills for Data Analytics (Coursera) · Python + AI + Data Analysis · MySQL & MariaDB · Advanced Power BI · Git & GitHub · DASM · Leadership Diploma

Let's build something

Open to backend and platform roles — and to serious collaborations. If you have a system that has to be right, not just plausible, I'd like to hear about it. The fastest way to reach me is email.

✉ vezc.vega@gmail.com