Skip to content
03 · PROJECTS

Systems I've shipped.

FinTech and banking platforms in production, cloud infrastructure for a US platform, and AI agents that run on real data — each tied to the employer, period and role.

FEATURED
  • AI · MCP · AGENTSIn production

    An MCP server that lets the business query production data — and get the right number

    Prosperas · May 2025 – Present · Technical Lead

    Context

    Executives, managers and analysts wanted answers from production data without waiting on engineering. The first version of the natural-language-to-SQL assistant returned plausible but wrong numbers.

    What I did

    • Built a remote, read-only MCP server inside the FastAPI backend with 8 tools (query, cursor pagination, fuzzy user search, schema discovery), API keys issued from the admin portal, and per-tenant scoping enforced by rewriting every SQL statement with sqlglot.
    • Traced the wrong answers to root causes, not prompts: a missing business rule caused a 98.4% undercount of approvals, an INNER JOIN dropped records, and the model was offered views that didn't exist. Fixed them with a single source of business rules embedded in the server, guarded by a drift test.
    • Ran an adversarial security review of my own server: closed scope-bypass and PII-exposure paths and tested 30+ attack shapes with zero leaks.
    • Built an autonomous morning triage agent (headless Claude Code with the Sentry, Jira and Slack MCPs). It root-causes production errors against the repo and files at most 3 tickets per run through a 4-condition gate, and it is not allowed to commit code or open PRs.
    98.4% undercount found and fixedReconciled exactly against independent counts30+ attack shapes, 0 leaksTriage agent runs on weekdays
    MCPClaude CodeClaude APIPythonFastAPIsqlglotPostgreSQLSentryJiraSlack
  • AI · ORCHESTRATIONIn use

    A multi-agent engineering org that ships — and reviews its own work

    Aphrodite + Prosperas · 2025 – Present · Tech Lead / AI Orchestrator

    Context

    Agents can write code. The hard part is who reviews it. I built the harness around that question: agents plan, build and review each other's work under explicit gates.

    What I did

    • Built an adversarial evaluator panel: two blind judges review every branch independently, a synthesizer confirms findings, and a separate fixer applies only confirmed defects. The loop repeats until zero confirmed CRITICAL findings remain.
    • Built 20 purpose-built agents, including a simulated C-suite (CTO, CPO, CMO, finance, legal, trust & safety) for product decisions, and synthetic user personas that QA the product end to end.
    • Built an autonomous backlog runner that pulls issues from Linear and works them in isolated workspaces. First full run: 13 issues → 11 merged PRs in one day.
    • Wired lifecycle hooks on 10 events, 3-tier model routing, vector memory, and spec-driven development (OpenSpec).
    • At Prosperas: a swarm harness plus a weekday Sentry triage agent (max 3 tickets per run; it cannot commit or open PRs) and MCP agents over production data.
    13 issues → 11 merged PRs in one day2 blind judges + synthesizer + fixer20 purpose-built agents
    Claude CodeClaude APIMCPclaude-flowLinearOpenSpec
  • FINTECHIn production

    Digital credit marketplace inside a telecom Super App

    Prosperas · May 2025 – Present · Technical Lead

    Context

    A major telecom operator wanted to offer credit to the users of its Super App — fully digital, with no paperwork and no branch visits.

    What I did

    • Own the end-to-end AWS architecture with CDK and standardized multi-environment provisioning (dev → staging → prod).
    • Implemented user authentication with Cognito and secrets with Secrets Manager inside CI/CD, with CloudWatch alerting.
    • Optimized analytical queries over 2M+ records to cut dashboard latency and AWS cost.
    • Lead the engineering team and act as the technical interface with the partner.
    ~100K monthly active users45M-user ecosystem100% digital, zero paperworkdev → staging → prod, fully provisioned in CDK
    AWS CDKLambdaRDS PostgreSQLElastiCache RedisS3API GatewayCognitoSecrets ManagerCloudWatchPythonFastAPIAngular
  • CLOUD · FINOPSDelivered

    Cutting the AWS bill by 43% without touching production performance

    Prosperas · May 2025 – Present · Technical Lead

    Context

    The AWS bill had grown for years across 17 enabled regions, with no budget, no anomaly alerts and no one who could say what each resource was for.

    What I did

    • Ran a read-only sweep of every enabled region, then removed spend in order of evidence. I retired a BI service that I had already replaced, closed an unused account, deleted a database with zero connections in 13 months, and turned off non-production insights.
    • Refused a tempting downsize. The production cluster averaged 12.7% CPU, but its p99 was 97.5%.
    • Put guardrails in place so it doesn't creep back: an anomaly monitor, a monthly budget, log retention on 240 of 240 log groups, and ECR lifecycle rules that took the registry from 229 GB to 21 GB.
    −43% monthly AWS billECR 229 GB → 21 GBRetention on 240/240 log groupsBudget + anomaly alerts
    AWS Cost ExplorerBudgetsCloudWatchRDS (gp3, Graviton)ECRAWS CDK
  • AI · FOUNDERPre-launch

    Aphrodite — AI companion marketplace

    Aphrodite — AI companion marketplace · 2026 – Present · Founder & Tech Lead

    Context

    A marketplace where AI that actually knows each user fights loneliness. It runs several internal micro-economies, so the product and the business model are built together. Creators design AI personas that hold long-running conversations. One engineer: me. So the architecture, the infrastructure and the delivery process had to make one person as effective as a team.

    What I did

    • Designed a hexagonal modular monolith (Next.js, TypeScript). Its 10+ bounded contexts have dependency rules enforced in CI, and every LLM call goes through a port, so switching models is a config change.
    • Designed two-tier conversational memory: structured facts plus a rolling summary are always loaded, and semantic recall from pgvector is top-k only, each layer with its own token budget. A per-user encryption key makes a deletion request a key deletion (crypto-shredding).
    • Built a mandatory safety gate before any LLM call. Blocked messages are never persisted and never reach the model, and every block is audited.
    • Built payments on an append-only ledger with signed, idempotent webhooks, verified adversarially: replays, forged signatures and tampered amounts all fail safely.
    • Built provider-portable infrastructure (Docker, Caddy, Cloudflare, Terraform). The app moved across three hosting providers without a rewrite, and rollback is exercised in production.
    • Run delivery with a multi-agent software factory: planner, coder and adversarial reviewer agents working from specs. In the first full run, 13 issues became 11 PRs merged the same day.

    Pre-launch: no user metrics yet. Code is private; happy to walk through it in an interview.

    3,000+ automated testsRollback in 17 s, exercised in prod~$86/mo infrastructure13 issues → 11 PRs in one day
    TypeScriptNext.jsPostgreSQLpgvectorDrizzleDockerCaddyCloudflareTerraformOpenRouterClaude Code
PRODUCTION ENGINEERING
  • DATA · ANALYTICSIn production

    Replacing a managed BI tool with charts-as-code — at exact parity

    Prosperas · May 2025 – Present · Technical Lead

    Context

    Dashboards lived in a managed BI service that was expensive, froze silently for weeks, and couldn't enforce the multi-tenant access rules the product already had.

    What I did

    • I used a strangler-pattern migration to ECharts in the Angular portal, backed by FastAPI endpoints over Postgres materialized views, and reused the existing tenant scoping instead of rebuilding it in a BI tool. I proved parity against the legacy dashboards on seven months of production data before retiring the old service. I also added CSV export for every chart and table, with bulk export through Postgres `COPY`.
    Exact parity on 7 months of prod data1,146 FE + 108 BE tests greenCSV export 30× faster (638K rows in 21 s)Legacy BI decommissioned
    AngularEChartsFastAPIPostgreSQL (materialized views, COPY)AWS CDK
  • RELIABILITY · SREIn production

    Production incidents, traced to root cause and closed for good

    Prosperas · May 2025 – Present · Technical Lead

    API p99 reached 7.9 s during a view rebuild.

    Exhausted gp2 storage burst credits, not a bad query.

    Migrated production databases to gp3 in two countries and fixed the infra-as-code drift; the same query then ran in about 2 minutes.

    A production database was locked for about 2 hours.

    Four chained bugs in materialized-view refreshes.

    A tiered refresh with per-tier timeouts and a watchdog, and 11 of 20 views pruned.

    Redis memory was heading toward an out-of-memory crash.

    An orphaned queue holding 250K messages.

    Purged the queue and added a kill switch; memory went from 287.89 MB to 6.98 MB.

    A partner's webhooks were silently blocked at the WAF.

    A managed rule matched their requests.

    I diagnosed it by separating edge blocks from app errors, then added a rate-limit-plus-allow rule.

    Credentials were rotated across 4 database environments with 0 failures (37 of 37 probes returned 200).

    AWS RDSElastiCache/RedisCeleryWAFv2CloudWatchSentryAWS CDK
  • DATA INTEGRITY · SECURITYDelivered

    Fixing duplicate identities in a live credit platform — measuring before touching anything

    Prosperas · May 2025 – Present · Technical Lead

    What I did

    • I led a 5-week program: 15 PRs, 4 migrations and 4 databases audited. I hardened how returning users are matched, so identity comes only from a key asserted by the partner and never from typed data. Before every destructive step I wrote the expected numbers down and rehearsed against a copy of production, and that rehearsal caught 6 errors. I backfilled 94% of accounts in idempotent batches.
    15 PRs · 4 migrationsRehearsal caught 6 errors before prodMatch rate 83.4% → 100%
  • PLATFORMLive

    A short-links service and a docs site anyone can open

    Prosperas · May 2025 – Present · Technical Lead

    What I did

    • Short-links service: five CDK stacks (Fargate behind an ALB, CloudFront plus WAF, SQS with a DLQ, an SLO dashboard, a Route 53 health probe) and a dedicated least-privilege database. The first real link redirected in about 0.4 s, and a dev rehearsal caught two bugs that would have broken the first create in production. I also built a reusable Claude Code skill that renders the launch video from an HTML timeline.
    • Public docs site rebuilt from WordPress to Astro Starlight on S3 and CloudFront, bilingual (EN/ES) with full-text search. TTFB is 50–80 ms after I fixed a CloudFront caching trap that added about 1.5 s.
    AWS CDKECS FargateALBCloudFrontWAFSQSRoute 53Astro StarlightPlaywrightffmpeg
EARLIER WORK
  • BANKINGDelivered

    Core banking modules for an enterprise bank

    eSoluzion · Oct 2022 – Aug 2026 · Full-Stack Developer (Frontend consulting)

    Context

    A regulated bank needed new and maintained modules across its core banking web applications, under strict code-quality and compliance standards.

    What I did

    • Built and maintained Angular interfaces across multiple core banking modules.
    • Designed end-to-end modules in Java (Spring Boot) and Thymeleaf.
    • Remediated security vulnerabilities in legacy Java by replacing unsafe regex-based methods.
    • Integrated an AI chat assistant into an internal credit-analysis banking application through the bank's corporate AI gateway, including enterprise authentication flows (Spring MVC, Thymeleaf).
    Engagement Oct 2022 – Aug 2026Regulatory complianceLegacy Java security remediation
    AngularTypeScriptJavaSpring BootThymeleaf
  • CLOUD · SERVERLESSDelivered

    Serverless operations for a US car-rental platform

    Dualboot Partners · Apr 2022 – Mar 2023 · Software Engineer

    Context

    A US car-rental platform needed reliable notifications, message delivery and operational workflows without manual data handling.

    What I did

    • Designed and deployed AWS services for message delivery, notifications and operational workflows.
    • Built serverless architectures with AWS Lambda and Chalice, automating data flows and removing manual processing bottlenecks.
    • Configured high-availability infrastructure (EC2, Elastic Load Balancers, Route 53, API Gateway) and Python/Django services on PostgreSQL/MySQL with SES and SNS.
    Manual processing removed from data flowsHigh-availability setup
    PythonDjangoAWS LambdaChaliceEC2ELBRoute 53API GatewaySESSNS
  • GOVTECH · MOBILEDelivered

    Cross-platform apps for regional tourism services

    ImkGlobal (Ingenieros de Marketing) · Nov 2024 – Mar 2025 · Lead Developer

    Context

    Government-backed tourism services needed one codebase for mobile and web, delivered by a small team on a fixed timeline.

    What I did

    • Led a development team: technical decisions, architecture and sprint planning in an agile environment.
    • Built cross-platform mobile and web applications in Flutter for government-backed regional tourism services.
    • Bridged technical teams and non-technical stakeholders, turning business requirements into development tasks.
    Team leadOne Flutter codebase for mobile + web
    FlutterDartREST APIs
  • BANKING · DATADelivered

    Banking backends and dashboards that got a late project back on track

    Accenture · May 2021 – Jun 2022 · Data Analyst / Java Developer / Full-Stack Developer

    Context

    A bank project was running one year behind schedule, and a telecom operator had no real-time view of incidents.

    What I did

    • Built Java (Spring Boot) backend services on the bank's batch and online frameworks, plus full-stack features on the MEAN stack.
    • Built administrative dashboards (Google Apps Script, Data Studio) that helped recover a project running one year behind schedule.
    • Built Power BI dashboards integrating Oracle and MongoDB sources for real-time telecom incident statistics.
    Helped recover a project 1 year behindReal-time incident dashboards
    JavaSpring BootMEANPower BIOracleMongoDBGoogle Apps Script

Outside client work I publish what I learn: production AI automation blueprints in PowerAI, technical deep dives on the blog, and code on GitHub.

Want the AI architecture blueprints?

Production blueprints from systems that actually run: architecture diagrams, deployment guides, and working code.

Hiring? Email me. →