whoami

Bryan

full-stack developer / AI engineer

I put language models into production and keep them honest: custom agent loops on the Anthropic SDK with forced tool use so the output is validated structure instead of free text, multi-step tool calling on the Vercel AI SDK, served from a typed Next.js frontend and a containerized FastAPI backend.

el salvador (gmt-6) · open to remote roles

Motivation phrase for todayI'm rooting for you

bryan.jpg
Bryan smiling, sitting on the edge of a fountain
available for remote work
  • anthropic sdk · agent loops
  • vercel ai sdk · tool calling
  • next.js · typescript
  • fastapi · python · docker
  • 2 yrs production saas

about me

who I am .

I'm self-taught. I studied on my own until a US consulting company building a team effectiveness SaaS platform took a chance on me with no dev experience, and I spent the next two years earning it: Stripe payments, a role-based permissions system, a production LLM integration, a full UI framework migration, and the tests to prove it all works. The full story is in the write-up.

I care about both sides of the stack. On the frontend, I sweat the details: hover states, spacing, the small interactions that make a site feel alive. On the backend, I care just as much that the data is validated, the permissions are right, and the API doesn't leak implementation details. If it ships, it should hold up.

Lately I've been going deeper on AI backends. I built an interview coaching agent on the Anthropic SDK with a custom agent loop and forced tool use, so the model returns validated structured output instead of free text, wrapped in a FastAPI service and containerized with Docker.

based in

El Salvador (GMT-6)

focus

Full-stack · AI backends

languages

Spanish (native) · English (fluent)

4+ years working with US teams

experience

2 yrs shipping production SaaS

status

open to remote roles

tools I work with

Frontend

ReactMy daily UI layer for two years: components, hooks, and state in a production SaaS
Next.jsMy home framework. App Router, server components, route handlers, and this site
TypeScriptEnd to end: Zod-validated inputs with types inferred straight from the schemas
Tailwind CSSMy default for styling. I migrated a production app across a major version
DaisyUISemantic theme tokens. I did a v5 migration and built this site's theming on it
TanStack QueryMy client data layer, paired with tRPC for fetching and cache invalidation

Backend & data

PythonMy backend language for data work and services, from scripts to typed FastAPI apps
FastAPITyped Python APIs with Pydantic models validating every request and response
tRPCBuilt typesafe APIs with layered auth middleware and Zod-validated procedures
Node.jsThe runtime behind everything I ship: API routes, scripts, dry-run backfills
SQLiteLightweight embedded database I reach for in local dev and small services
FirebaseTwo years of Firestore data modeling, auth, and emulator-based testing
SupabasePostgres, auth, and storage. It signs the URLs behind this site's gated audio
PydanticRuntime validation and typed models that keep my Python API boundaries honest
ZodSchema validation on the TypeScript side, with types inferred straight from the schema
StripeShipped production payments and subscription billing on a live SaaS platform

AI

Anthropic SDKBuilt a production LLM integration on Claude, tool use and structured outputs
Vercel AI SDKStreaming AI responses into React with a typed, framework-native client

Testing & infra

DockerContainerized services for reproducible local dev and CI runs
PlaywrightI wrote e2e tests driving real browsers against emulators with isolated seed data
VitestMy unit test runner, fast and Vite-native, gating every PR alongside Playwright
GitHub ActionsCI gates on every PR I ship: unit tests, e2e tests, nothing merges red

CMS

SanityHeadless CMS I've integrated for structured, editor-friendly content
PayloadCode-first CMS I've built content models in, right inside Next.js

projects

stuff I’ve built .

Bergography preview

Bergography

A photography business site I built and shipped on Vercel, wired up to a custom domain with its own DNS config. Responsive, image-first gallery that keeps the focus on the photos.

I told him what I needed and he hit the nail on the head. The final result was better than I was anticipating. 10/10 recommend.

- Berg, Bergography
Next.jsTypeScriptReactTailwind CSSDaisyUIVercel

live · music

what I’ve been listening to .

Live from the Spotify Web API, freshest spin first. I built this with a Next.js route handler and a server-side OAuth refresh token flow.

live · gaming

I like to play games .

What I’ve been playing recently, pulled live from the Steam Web API through a Next.js route handler.

contact

let's work together .

I'm looking for a remote full-stack role. If you're hiring, or you just want to talk shop, my inbox is open.