Tito Agudelo
Senior Software Engineer
I'm a Senior Software Engineer with 13+ years building web and mobile applications, mainly using React, Next.js, and the modern JavaScript ecosystem. I've worked with startups and large companies in distributed teams, designing scalable systems, real-time applications, and data-driven products.
Recently I've focused on integrating AI into real-world applications — LLMs, RAG pipelines, and automation workflows. I care about clean architecture, strong UX, and reliable systems.
Senior engineer, remote-first since 2016
Over the last 13+ years I've shipped production software for early-stage startups and large companies — full-stack web, React Native mobile, real-time data products, and the supporting backend services that keep them honest.
I've been fully remote since 2016, working with distributed teams across the United States and internationally. I own work end-to-end, communicate asynchronously, and care just as much about the systems we build as the people we build them with.
What the work delivers
Less buzzword bingo, more outcomes. The thread across my work is building software that ships, holds up under load, and stays maintainable.
Architecture that survives
Clear domain boundaries, small focused modules, and types that document intent — so the system is easy to change six months later, not just today.
Systems thinking
Treat data flow, failure modes, and observability as first-class concerns. The interesting bugs live between services, not inside them.
Pragmatic problem solving
Reach for the smallest tool that fits, ship a working slice, then harden where reality demands it. Avoid framework-driven architecture.
Why this demo exists
Retrieval-Augmented Generation grounds an answer in trusted context instead of relying on a model's memory alone. The pipeline below runs entirely in this app — no external APIs — so you can read every line and see exactly how the data flows. The point isn't the novelty; it's the structure: deterministic retrieval, observable generation, typed boundaries between layers.
- Step 1
Knowledge
A small curated corpus about my work, stack, and approach.
- Step 2
Retrieve
Score documents against the query, return the top matches.
- Step 3
Generate
Synthesize a grounded answer from the retrieved context.
Ask the knowledge base
The pipeline retrieves the most relevant documents and synthesizes a grounded answer. No external model — pure TypeScript, end to end.