Santiago Aguirre

I break itbefore you.

Santiago Aguirre, full stack developer from Argentina who tests like a QA engineer. I find the case nobody wrote down, before it reaches a guest.

Watch this page test itself

I read software the way a tester does:every input, every rule, every edge,before anyone ships it.

Reserva Directo home page: a hotel lobby photograph, the headline “Reserva directo con el hotel” and a search bar for place, dates and guests.Dithurbide Inmobiliaria home page with a property search for type and zone.

Four years building booking and real-estate software in Latin America. The pictures are my own products, in production today.

Numbers I canput my name on

8 million+ API requests a month through the hotel booking engine I maintain at Pxsol.

36%. Share of support tickets that were bugs when I started documenting and testing the flow.

Under 10%. Share today, after the process, CI and test work I coordinated.

About 2,500 commits of mine across 13 Pxsol repositories since February 2024, with about 1,580 merged pull requests.

About 4,400 hotels in 46 countries indexed by Reserva Directo, which I built alone on Cloudflare D1.

This page tests itself.

26 real checks, written the way I write them at work: accessibility, metadata, load metrics, agent endpoints and security headers, measured in your browser right now.

Nothing has run yet. The checks need JavaScript; the list below shows what they look for.

Lighthouse, mobile profile, measured on 2026-10-23 against santiago.realstate.cloud/:

100Performance
100Accessibility
100Best practices
100SEO
Each row is a check from src/app.js. Failures are shown, not hidden.
CheckMeasuredThresholdResult
Document language is declarednot run yetlang attribute setwaiting
Exactly one main headingnot run yet1waiting
Heading levels never skipnot run yet0 skippedwaiting
Every image has alt text and dimensionsnot run yetallwaiting
Every link, button and field has a namenot run yetallwaiting
Every in-page link lands somewherenot run yetallwaiting
New-tab links use rel="noopener"not run yetallwaiting
Text contrast meets WCAG AAnot run yet≥ 4.5:1waiting
No horizontal scroll at this widthnot run yet0 pxwaiting
Self-hosted fonts loadednot run yet2 familieswaiting
Title length fits a search resultnot run yet30–65 charswaiting
Meta description lengthnot run yet70–160 charswaiting
Canonical URL is absolute HTTPSnot run yethttps://waiting
Structured data parsesnot run yetPerson + ProfilePagewaiting
Share image is declarednot run yetpresentwaiting
Largest Contentful Paintnot run yet< 2,500 mswaiting
Cumulative Layout Shiftnot run yet< 0.1waiting
Total bytes transferred so farnot run yet< 600 KBwaiting
Requests so farnot run yet≤ 30waiting
DOM sizenot run yet< 1,500 nodeswaiting
/llms.txt answers for agentsnot run yet200, Markdownwaiting
/index.md answers for agentsnot run yet200, Markdownwaiting
/resume.json is valid JSON Resumenot run yetbasics.namewaiting
/robots.txt points to the sitemapnot run yetSitemap:waiting
Security headers on this pagenot run yet4/4waiting
The CV downloads as a PDFnot run yetapplication/pdfwaiting
Reserva Directo search results for Bariloche: 52 matches shown as hotel cards with rating, stars and review counts.

A direct-booking search for 4,448 hotels in 46 countries. It never takes a booking: it finds the hotel and hands the guest to that hotel’s own engine with dates and guests filled in.

SvelteKit 2 · Svelte 5 · Cloudflare Workers · D1 · KV · Tailwind 4 · 2026

  • A nightly crawl loads the catalogue into D1 at the edge; only live rates go to the Pxsol gateway, and the API key never leaves the server.
  • Agent-ready: llms.txt, Markdown on request, OpenAPI 3.1, an RFC 9727 API catalogue, an MCP server and an A2A endpoint, all generated from one definition of four tools so they cannot drift apart.
  • Missing price means unknown, never free: the data contract says so out loud, because that is the bug a guest would hit first.

RealState Cloud

A multitenant platform that runs many real-estate agency websites from one codebase. Each agency gets its own domain, catalogue and admin; the platform resolves the tenant by hostname at the edge.

  • 44 test files across the two apps: 20 Playwright end-to-end suites, Jest integration tests against the API, Vitest unit tests for checkout and two-factor auth, Worker tests in the real runtime, and an Artillery load test.
  • CI splits lint, typecheck, unit tests and the build into separate jobs; Husky runs the typecheck before every commit and the build before every push.
  • I wrote up and fixed a tenant-isolation bug where syncing a new agency overwrote another agency’s site settings, then pinned it with a test.

Next.js 15 · TypeScript · Cloudflare Workers · D1 · R2 · KV · Playwright · Vitest · Jest · since 2025 · realstate.cloud (opens in a new tab)

RealState Cloud home page in dark blue: “Gestiona tus propiedades de forma inteligente” with a trial button.
Dithurbide Inmobiliaria on a phone.
Dithurbide property list: 114 results with filters on the left and lot and warehouse cards with prices in US dollars.

Dithurbide Inmobiliaria

A live agency running on RealState Cloud: 114 listings with filters by type, operation, price and rooms, sharing previews tuned for WhatsApp, and a map view.

  • Duplicate-listing detection in real time, so an agent is warned before publishing the same lot twice.
  • Image uploads checked against the platform limit before they leave the browser, after a 413 error showed up in production.

RealState Cloud · Next.js · R2 media · PWA · dithurbide.org (opens in a new tab)

Fixed, then pinned with a test

Security and migration work at Pxsol. Each fix shipped with a regression test or a CI gate, so the same hole cannot reopen quietly.

How I work

  1. First I read the rules.

    Every rate, child age, tax and tenant rule, written down before code, because most bugs are a rule nobody wrote.

  2. Then I break them.

    Boundary dates, empty prices, a second tenant, a slow network, a guest with three children aged exactly the limit.

  3. Then I pin it with a test.

    PHPUnit, Pest, Jest, Vitest or Playwright, whichever runs closest to the bug, wired into CI so it stays caught.

  4. Then it ships, and stays fixed.

    Small pull requests, a gate in CI, and the fix documented for the next person who touches it.

About Santiago

Based in
Entre Ríos, Argentina
Languages
Spanish, native
English, B2
Works
Remote, UTC−3

I started in a company certified under ISO 9001, where every feature needed a document, a review and a trace. I kept the habit. At Pxsol I write PHP, Laravel, React, Svelte and Next.js for a booking engine that hotels across Latin America depend on, and I spend as much time on the rules as on the code: child ages, rate plans, taxes, tenants.

That is where bugs live. When I find one, I fix it and pin it with a test, and when the same kind keeps coming back, I fix the process. That is how bug tickets went from 36% of requests to under 10%.

Record

Roles

  • Full Stack Developer, PxsolFeb 2024–Present
  • Owner & Lead Developer, RealState CloudJul 2025–Present
  • Full Stack Developer, SerfeJul 2022–Feb 2024

Recognition and courses

  • Pxsol Champion2026
  • Pxsol Generative AI Contest, winner2025
  • AWS Skill Builder: Amazon Bedrock2025
  • AWS: Planning a Generative AI Project2025
  • AWS: Agentic AI & AI Agents2025
  • AWS: Generative AI, Art of the Possible2025

Playwright, PHPUnit,Pest, Jest, Vitest.

Testing
PHPUnit, Pest, Jest, Vitest, Playwright, Page Object Model, Artillery load tests, Lighthouse CI, regression suites, test design from business rules
Quality gates
GitHub Actions, Husky hooks, PHPStan / Larastan, ESLint, oxlint, knip, Gitleaks, Rector, coverage thresholds, affected-test CI
Languages
PHP 8.4, TypeScript, JavaScript, SQL, Python
Frameworks
Laravel 12, Next.js 15, React, SvelteKit / Svelte 5, Livewire, Expo / React Native, Tailwind CSS
Edge & cloud
Cloudflare Workers, D1, R2, KV, WAF, Zero Trust, AWS Bedrock / Lambda / S3, Docker, Linux
Data
MySQL / MariaDB, PostgreSQL, SQLite (D1), Prisma, Supabase
AI
MCP servers, agentic workflows, LLM integration, Claude / Bedrock, n8n

Experience

Pxsol

Full Stack Developer
Feb 2024 – Present · Remote · Argentina

  • Maintain the hotel booking engine behind 8M+ API requests a month, used by guests across Latin America; redesigned hotel search in PHP and delivered B2B booking for travel agencies in Next.js.
  • Cut bug tickets from 36% to under 10% of all requests by documenting core flows, introducing CI pipelines and automated tests, and mentoring the team on quality-first practices.
  • Added 98 automated tests across the Laravel API, the SSO service and the public integration API (PHPUnit, Pest), and contribute to suites of 1,800+ Jest and 380+ Vitest/Playwright tests in the back office and booking widget.
  • Shipped security fixes with regression tests: XSS output escaping, upload RCE containment, SQL leaks in error responses, an SSO token allow-list. Wrote the security audit of the hotel sites engine.
  • Led PHP 7.4 → 8.4 and Laravel 10 → 12 upgrades behind CI compatibility gates.
  • Built an MCP server for the public API with a read/write permission split and fail-closed guards; won the 2025 Pxsol Generative AI Contest.
  • Named Pxsol Champion, the company’s highest quarterly distinction, for impact across engineering, customer success and process.
  • About 2,500 commits and 1,580 merged pull requests across 13 repositories: PHP, Laravel, React, Svelte 5, Next.js and Cloudflare Workers.

RealState Cloud

Owner & Lead Developer
Jul 2025 – Present · realstate.cloud

  • Built and run a multitenant real-estate SaaS: tenant resolved by hostname at the edge, recurring billing with Mercado Pago, TOTP two-factor auth, automatic tenant setup.
  • Moved the platform from a VPS with Supabase to Cloudflare Workers, D1, R2 and KV in a single day, with the old stack kept as a fallback.
  • 44 test files (Playwright, Jest, Vitest, Workers runtime, Artillery load) and a CI split into lint, typecheck, unit and build jobs.

Serfe

Full Stack Developer
Jul 2022 – Feb 2024 · Santo Tomé, Argentina

  • Delivered features under ISO 9001: documented, traceable, reviewed.
  • Led a real-estate mobile app: Laravel and PostgreSQL API, Expo and React Native client.

Tools I built on the side

Public API MCP server

JSON-RPC MCP server for Pxsol’s public API: read-only vs write scopes, strict 422 validation, fail-closed cart guard.

AI ticket desk

Internal desktop app that drafts answers to support tickets with Claude agents; nothing leaves without human approval and an audit trail.

Local image + video API

FLUX and Wan 2.1 on ComfyUI behind a FastAPI service with a written contract for other LLMs to call.

Voice book writer

Offline desktop app to write books by voice: Whisper dictation, a local editing assistant, Kokoro read-back.

Hiring for quality?Tell me what to test first.

This opens your email app with the message ready. I answer within one working day.

Email
san2176@hotmail.es
LinkedIn
in/san2176 (opens in a new tab)
Based in
Entre Ríos, Argentina