Agentic Software Engineer
I design the harness, the agents write the code, and I verify and decide. That is how I build full-stack apps and AI agents that run in production.
5+
Years of experience
2x
Hackathons won
3
Startups supported
Capabilities
Claude Code, subagents, skills, hooks and MCP inside a deterministic harness: the model decides, I set the conditions, review the output and own the result.
Agents built with LangGraph, LangChain and MCP that take orders, handle leads and operate with guardrails, kill switches and a human in the loop.
Conversational agents on the WhatsApp Business API, Telegram and voice, with memory and human handoff.
Web apps with React, Next.js, TypeScript, Python, Django, FastAPI, Supabase and robust REST APIs.
RAG systems with embeddings, pgvector, Qdrant and semantic search, including multimodal text-and-image RAG.
Versioned datasets and production replay, deterministic evaluators, LLM-as-judge only for the subjective parts, and server-side revalidation of everything critical.
How I work
I neither write every line by hand nor leave the agent on its own. I design the context, the rules and the tools with which Claude Code plans, writes and verifies; I keep the architecture decisions, the review and the responsibility for the result.
Every session starts with memory: a second brain in Obsidian with project notes, decisions and solved bugs (symptom → root cause → fix) that a hook injects when Claude Code starts, plus a CLAUDE.md per repo with the hard rules. The agent never starts from zero.
Before any code: a domain interview (one decision at a time), a PLAN.md with phases and a verifiable deliverable per phase, the data model from day one, and ADRs only for what is hard to reverse. I built /roadmap to know which phase I am in and what changed since the plan was approved.
The model decides; the harness sets the conditions. Skills that encode the project's conventions, subagents with isolated context, MCP for GitHub, docs, Railway and Supabase, and slash commands like /commit with lint and build up front. I install skills only when the work calls for them.
Claude Code executes; I direct. Deep-work blocks without interruptions, a local-first environment (nothing touches the cloud until it works locally) and worktrees for parallel work. In agents that go to production, the LLM never executes the critical part: the backend adds up, validates and revalidates.
Lint and build as the gate at every milestone, tests where the risk demands them (the one that fails if a tenant sees another tenant's data), local /code-review before opening the PR, and evals on production datasets. The PR is the unit of review and a human approves the merge.
On close, the knowledge goes back to the vault: project status, decisions with the alternatives that were discarded, and bugs with their root cause. The next session, human or agentic, starts higher than where the last one ended.
The model decides; the harness sets the conditions.
The LLM never executes the critical part: the server always revalidates.
The agent that wrote the code is not the one that reviews it.
If it did not produce running code, a note or an ADR, it does not count as done.
Achievements
First place in the AI Security track and overall winner of the Platanus hackathon in Buenos Aires — 36 hours non-stop, 110 hackers selected from across LATAM, with Anthropic as main sponsor. I built Tranquera, a proxy interceptor for Claude Code that enforces organizational policies at runtime.
First place in the Best Agentic App in WhatsApp track of Colombia's largest hackathon, organized by Colombia Tech Week in Bogotá with over 150 participants.
Products

A team of financial agents you talk to via chat — from WhatsApp, Telegram, Gmail or the web. Its promise: "it knows how you live, it invests like you are." Four specialized agents coordinate: (1) Expenses & income records and classifies transactions, generates monthly summaries and detects historical patterns; (2) Investments prepares stock operations on Wallbit but never executes them without your approval; (3) Market analyst contextualizes prices, trends and asset fundamentals according to your profile; (4) Risk profile measures your real tolerance from your history (not questionnaires) and blocks incongruent operations. You log expenses the way you talk — text, audio or a photo of the receipt — and Gmail sync captures transactions without manual input; search is in natural language, with no filters or exact categories, over embeddings in pgvector. The money lives in Wallbit (not in Tresqu): from the same chat you buy and sell stocks, ETFs and bonds, transfer and check balances live, with multi-currency support (COP, USD, EUR and more) and real-time conversions.

Proxy interceptor for Claude Code that closes the organizational alignment gap: Claude Code is aligned with Anthropic's values, but not with the policies of each company deploying it. Tranquera is the middle layer — a silent customs checkpoint that enforces no-code rules at runtime with a Regex → Pattern → Haiku 4.5 judge cascade under 200ms of overhead and four explicit actions (BLOCK · REDACT · WARN · LOG). The (non-technical) compliance officer defines policies in natural language from a visual builder; devs onboard with a single command (`npx tranquera setup`, Google OAuth device flow and automatic export of `ANTHROPIC_BASE_URL` to the shell rc). Per-dev attribution is solved by baking the token into the URL path — Claude Code does not allow custom headers. An AI Suggestor with a daily cron and Haiku 4.5 proposes new rules from the LOGs with a human in the loop. Postgres + pgvector ready to pre-filter rules by semantic similarity. Winner of the AI Security track and the overall prize at Platanus Hack 26 Buenos Aires (main sponsor: Anthropic).

Professional gallery delivery platform for photographers with state-of-the-art multimodal AI. It automatically analyzes every photo with GPT-4o and Gemini 2.0 Flash: assigns a 1-10 score, evaluates composition, pose and background quality, categorizes scenes (ceremony, portraits, party, outdoors...) and generates project highlights. It includes semantic photo search in natural language ('bride dancing', 'table decoration') with multimodal RAG using Google's Gemini Embedding 2 — Google's first natively multimodal model mapping text and image into the same vector space — stored in pgvector. The public gallery reorders photos based on the client's favorites and writes poetic cover phrases with AI. Complemented by festora-vision-api: an independent microservice with blur detection (Laplacian), BRISQUE/NIMA technical scoring, emotion analysis (DeepFace) and CLIP/DBSCAN semantic clustering.

Presential-event networking that finally becomes visible: you scan someone's personal QR and end up inside the event and connected in the same gesture — no 'add' buttons, no requests, no connecting from the couch. Every edge in the graph represents a real encounter (it's only born by opening someone's QR, never on render), and the app spreads person to person through contagious membership: getting into an event always goes through someone who's already in. The event's full constellation — visible to every attendee, not 'my network up to 2nd degree' — is drawn live with react-force-graph-2d on Canvas, synced in real time via Supabase Realtime, with one star per attendee and triadic closure when three people who already know each other form a triangle. Auth is Google OAuth only, role/interest/intent tags are a living catalog that grows with usage, and onboarding is a single screen designed to be used standing up, one-handed, amid event noise. Built with Next.js 16 (App Router, React 19, React Compiler) and Supabase (Postgres + RLS, Auth, Realtime).

The full operating system of a bar and restaurant, with AI at the core of the product rather than bolted on: it takes orders, sells, writes the menu and decides what can be ordered. Orders come in through three doors that end in the same kitchen ticket: the QR code on every table, the customer app and an AI agent that answers the business's WhatsApp around the clock. That agent is built with LangChain create_agent on LangGraph and GPT-4o-mini, with 13 tools wiring it into the business: browsing the menu and each product, searching regardless of accents or typos, reading the customer's history and preferences, quoting, checking delivery coverage, creating, modifying and cancelling orders, and asking for a human. Its conversational memory lives in PostgreSQL through PostgresSaver (one thread per contact per day), while long-term context (address, preferences, past orders) comes in through tools. It understands voice notes with gpt-4o-mini-transcribe and photos with multimodal vision, payment receipts included, pulling out amount, date and reference number. Before creating a delivery it validates the address against the coverage area hand-drawn on the map (ray casting in Django, Turf on the front end) and, when the conversation goes off script, it hands off to a person and pauses without losing the thread. The rest of the product is AI too: a professional product photo generator with four swappable models (GPT Image 1.5 and 2, Gemini 3 Pro and 3.1 Flash Image) on Cloudflare R2, AI-written product descriptions, a menu recommender driven by mood or a quick quiz, voice search with Whisper and daily content that refreshes itself. Underneath runs the real operation: live kitchen over WebSocket (Django Channels), tables per floor with printable QR codes, inventory with recipes and real cost per variant, expenses that separate investment from operating spend so the margin doesn't lie, analytics, reservations, music per floor, multiplayer games and two businesses in the same account, with no per-order commissions. Running in production every day in a real venue in Cumbal (Nariño) and the base of the SaaS being packaged for other businesses.

Real-time multiplayer typing race inspired by Monkeytype. Anyone can create a room with a 5-character code, share the link and compete for the highest WPM on the same text, with a spectator mode to join rooms mid-race. The architecture runs 100% on the edge over Cloudflare Durable Objects: one 'Room' DO per room (authoritative state, WebSockets with the Hibernation API, persistent hostToken) and a 'RoomRegistry' singleton that keeps the global list of active rooms via RPC between DOs. The clock, the text and the ranking are decided server-side, so cheating by changing the local clock is impossible. Includes 5 themes, key sounds synthesized with the Web Audio API (no samples) and a host/player/spectator model with kick and race restart.

Windows desktop app that transcribes speech to text in real time and types the result directly wherever the cursor is — no copying, no pasting. Push-to-talk with F9: hold to speak and release so the corrected final text appears in any app (VS Code, Word, Notion, Chrome…). Supports two swappable engines: Deepgram Nova-3 (cloud, low latency, simultaneous es+en bilingual with LANGUAGE=multi) or local faster-whisper (no internet, no API key, tiny→large-v3 models). Includes a Vercel-style floating HUD with timer, live preview, voice visualizer and similarity-based deduplication. Lives as a system tray icon, with VAD via silero-vad ONNX (no PyTorch). Packaged with PyInstaller + Inno Setup as a native .exe installer.

Web app that converts a 2D image into a navigable 3D point cloud using AI depth estimation. The backend (FastAPI + Docker on Railway) wraps Depth-Anything-V2 (ViT-S checkpoint) and returns the depth map as a grayscale PNG. The frontend combines the RGB image and the depth map in utils/pointCloudUtils.ts: for each pixel it generates a 3D point where X,Y map to normalized space (NDC-like, with inverted Y and height/width aspect ratio) and Z = (depth/255) × depthScale, controlled by sample rate and depth exaggeration sliders. The result is two Float32Arrays (positions + colors) rendered with React Three Fiber + drei as a THREE.Points with vertexColors. It supports three swappable depth backends: a self-hosted FastAPI server, HuggingFace Spaces or the OpenAI Images API.

Real estate semantic search engine with a RAG architecture covering more than 8,800 properties in Mexico. The user asks in natural language ('spacious house with a garden in Mérida, 3 bedrooms'), Gemini 3 Flash extracts structured filters (city, type, bedrooms, price), Qdrant pre-filters and vector search retrieves the most semantically relevant properties. It supports multimodal RAG with Google's Gemini Embedding 2: each property is represented by a single 3072-dimension vector fusing the text description with up to 6 images in the same vector space — enabling search by text or by image. It also supports swappable embeddings (OpenAI text-embedding-3 and gemini-embedding-001) with a React playground featuring an interactive similarity chart and a conversational agent with LangGraph (ReAct). Deployed on Railway + Vercel + Qdrant Cloud.
Experience
Ungga
Jun 2025 - Present
Remote - Proptech Mexico
AI Developer Engineer
Higher Bit Solutions
Mar 2025 - Jun 2025
Remote - Chilean Startup
Full-stack Developer
Decimetrix
Jan 2022 - Feb 2025
Colombia
Full Stack Developer Engineer
Decimetrix
May 2021 - Dec 2021
Colombia
Software Development Engineer
Intecol SAS
Jan 2021 - Apr 2021
Colombia
Computer Vision Engineer
FAQ
Jaime Aza is a Colombian agentic software engineer: a full-stack software engineer who builds AI-powered products by directing coding agents (Claude Code, subagents, skills, MCP) and who ships AI agents to production with LangGraph, LangChain and the WhatsApp API. He is a winner of Platanus Hack 26 (Buenos Aires) and the Colombia Tech Week 2025 AI Hackathon.
A software engineer who builds products by directing AI agents instead of writing every line by hand. They design the context, the rules and the tools (the harness) with which agents like Claude Code plan, write and verify code, while keeping the architecture decisions, the review and the responsibility for the result. Jaime Aza works this way and, in addition, builds AI agents that operate in production.
Six steps: (1) context before code, with a second brain in Obsidian that a hook injects into every session and a CLAUDE.md per repo; (2) specification and a phased plan with verifiable deliverables and ADRs, tracked with his /roadmap tool; (3) harness design with skills, subagents, hooks and MCP; (4) building with Claude Code in a local-first environment; (5) layered verification with lint, build, tests, /code-review and LangSmith evals, with a human approving the merge; and (6) a close that returns the knowledge to the vault for the next session.
Jaime Aza specializes in agentic development with Claude Code; AI agents in production with LangGraph, LangChain and MCP; chatbots on WhatsApp, Telegram and voice; RAG systems with embeddings and vector search (pgvector, Qdrant); evals and guardrails for LLMs; computer vision; and full-stack development with React, Next.js, TypeScript, Python, Django and FastAPI.
Jaime Aza won Platanus Hack 26 in Buenos Aires (May 2026), taking first place in the AI Security track and the overall prize, with Anthropic as main sponsor. He also won the Colombia Tech Week 2025 AI Hackathon (August 2025) in the Best Agentic App in WhatsApp track.
Jaime Aza's notable projects include: Tranquera (a policy proxy for Claude Code), Tresqu (a team of financial agents you talk to via chat), Festora (photo gallery delivery for photographers with multimodal AI), Frostbyte (a bar and restaurant platform with an AI agent that takes orders over WhatsApp), Keyduelo (an edge-based typing race), S2T (speech-to-text for Windows), image_to_xyz, RAG Properties and Constela (QR-based event networking with a live graph).
Jaime Aza works remotely as an AI Developer Engineer at Ungga, a proptech company in Mexico, where he builds a multi-agent system with LangGraph that serves prospects and property owners over WhatsApp and maintains its evaluation pipeline in LangSmith. He previously worked at Higher Bit Solutions, Decimetrix and Intecol SAS.
You can reach Jaime Aza on LinkedIn (linkedin.com/in/jaimeaza), GitHub (github.com/Jjat00) or WhatsApp (wa.me/573164277879). His official website is https://jaimeaza.tech.