Tiago Fortunato
AI Application & Product Engineer
Shipping AI-powered products end-to-end with LLMs, RAG, and modern web stacks. Founder of Odys, a live multi-tenant SaaS. Builder of production RAG and Vision AI systems on FastAPI.
About
Who I am
AI Application Engineer and Product Engineer based in Berlin, shipping AI-powered products end-to-end with LLMs, RAG, and modern web stacks. I build real production systems, not prototypes, and care about whether what I build actually solves the problem.
I shipped Odys, a live multi-tenant SaaS scheduling platform for Brazilian freelance professionals, as the sole developer. It features a Portuguese LLM intake layer (Groq) that parses WhatsApp messages into Zod-validated JSON, tool-calling with retry logic, and a deterministic fallback. Full Next.js + TypeScript stack on Supabase, Stripe + PIX billing with idempotent webhooks, self-hosted WhatsApp via Evolution API on Railway, automated reminders through Supabase pg_cron, Sentry, PostHog, and CI/CD on GitHub Actions.
I also built a production RAG career chatbot, migrated from LangChain to LangGraph (7 async nodes, conditional routing, typed state), with hybrid retrieval (semantic + BM25 with Reciprocal Rank Fusion), custom section-aware chunking, streaming SSE via Groq (Llama 3.1), and a RAGAs evaluation pipeline. Self-hosted on AWS EC2 with Docker, Nginx, and Let's Encrypt HTTPS. And an Inspection Management API with autonomous Vision AI classification on FastAPI, JWT auth, comprehensive Pytest suite, structured LLM output via LangChain, and full observability through LangSmith.
MSc Software Engineering (Berlin, 2026). Background in Mechanical Engineering. Daily user of Claude Code and agentic AI development workflows: my edge is shipping fast and owning outcomes from idea to production. Trilingual: Portuguese (native), English (fluent), German (C1). Open to AI Application Engineer, Product Engineer, AI Engineer, Solutions Engineer, or Founding Engineer roles.
Skills
What I work with
Projects
What I've built
WhatsApp-first scheduling SaaS for Brazilian freelance professionals (therapists, personal trainers, salons), with an AI intake layer that turns natural-language WhatsApp messages into bookings. Live product at odys.com.br, currently in active validation with industry professionals before scaling marketing.
- AI intake (Groq LLM): parses Portuguese WhatsApp messages, extracts intent as Zod-validated JSON, proposes slots and books; custom prompt design, tool-calling, retry logic, and deterministic fallback built from scratch
- Multi-tenant architecture: each professional gets a public booking page at /p/[slug] with isolated data; plan-gated features (free/basic/pro/premium) with trial flow
- Stripe + PIX with idempotent webhook handling; Supabase Auth with email verification; Drizzle ORM on PostgreSQL; resolved PgBouncer transaction mode compatibility
- WhatsApp-native reminders via self-hosted Evolution API v2 on Railway, orchestrated by Supabase pg_cron with signature-verified webhooks
- Production maturity: rate limiting (Upstash Redis), Resend SMTP, Sentry, PostHog, type safety (TypeScript + Zod), CI/CD (GitHub Actions)
Production RAG chatbot where recruiters and hiring managers ask questions about my background, projects, and skills, and get answers grounded in a curated knowledge base. Migrated from LangChain to LangGraph. Self-hosted on AWS EC2.
- LangGraph StateGraph with 7 async nodes, conditional edges, and typed state: query enrichment, project routing, hybrid retrieve, context formatting, answer generation, follow-ups, plus a fallback path for empty results
- Hybrid retrieval: semantic search + BM25 fused with Reciprocal Rank Fusion (RRF) for higher precision than either method alone
- Custom section-aware chunking via font-size analysis: keeps semantically related content together for better retrieval quality
- Streaming SSE responses via astream_events with Groq (Llama 3.1), conversation history, and suggested follow-up questions
- RAGAs evaluation pipeline measuring faithfulness, answer relevance, context precision, and context recall
- FastAPI backend with ChromaDB vector store; vanilla JS frontend; containerized with Docker; self-hosted on AWS EC2 with Nginx reverse proxy and Let's Encrypt HTTPS
Production REST API for infrastructure inspections with autonomous Vision AI classification. Upload a photo of road damage and the system classifies severity, damage type, and generates an explainable rationale, all running in the background.
- Vision AI classification via Groq SDK: images are compressed client-side, sent to the API, and classified autonomously using background tasks
- Explainable AI (XAI): every classification includes a human-readable rationale field so decisions are transparent and auditable
- LangSmith integration for full LLM observability: trace every prompt, response, and latency in production
- Structured LLM output enforcement with LangChain for consistent severity and damage type responses
- JWT auth with admin role, per-user data isolation, status lifecycle, rate limiting
- Comprehensive Pytest suite covering all endpoints; CI/CD via GitHub Actions; Docker; frontend dashboard on Vercel with image upload and AI status badges
Two-stage hybrid pipeline combining YOLOv8-based object detection with a rule-based expert system to detect road surface damage and automatically prioritize maintenance actions. Trained and evaluated on the RDD2022 benchmark dataset.
- Conducted 4 controlled experiments (EXP1 to EXP4) varying model capacity, input resolution, and training length. Best config (YOLOv8s): mAP50 0.663, Precision 0.694, Recall 0.604
- Built a rule-based expert system with geometric filtering, continuous severity scoring, and quantile-based prioritization (LOW / MEDIUM / HIGH)
- Post-processing reduced noisy detections by 31.2% (8304 → 5711) while preserving structurally relevant defects
- Designed for interpretability: every prioritization decision traceable to explicit rules, with no black boxes
End-to-end ML pipeline analyzing vehicle sensor data (temperature, vibration, oil pressure, RPM) to predict failures before they occur.
- Multi-stage pipeline: data generation → ETL → EDA → ML → dashboard
- Random Forest classifier with imbalanced data handling (99.9% accuracy)
- Live Streamlit dashboard for real-time vehicle condition monitoring
Recommendation engine using matrix multiplication and Python multithreading to simulate scalable user-product scoring, with performance benchmarking between sequential and parallel execution.
- Implemented S = U × P matrix scoring with score normalization
- Compared sequential vs. multithreaded performance with visual output
- Demonstrated threading tradeoffs: overhead vs. scalability at scale
Experience
What I've done
Education
Academic background
Thesis: Computer Vision Object Detection (YOLO-based pipeline).
Languages
Communication
Contact
Let's talk
Open to AI Application Engineer, Product Engineer, AI Engineer, Solutions Engineer, or Founding Engineer roles in Berlin and remote. If you're building AI-powered products and need someone who ships fast and owns outcomes from idea to production, let's talk.