2025·SDE Intern at GoYaana (Aug to Oct 2025)
GoYaana Travel Chatbot
Conversational AI travel planner on AWS Lambda with LLM-driven itinerary generation
- Java 21
- AWS Lambda
- AWS SAM
- API Gateway
- Groq (Llama 3.3 70B + Llama 3.1 8B)
- Python
- Gradio
- FPDF2
- Docker
The problem
GoYaana wanted a conversational front door for trip planning. Users type something vague like "I want a vacation" or specific like "Plan a 3 day trip to Goa on December 15th" and the system either asks the right follow-up questions or generates a complete itinerary with flights, hotels, activities, pricing, and a downloadable PDF. The challenge was making this feel like a single coherent conversation across 118+ destinations while staying inside Lambda and API Gateway constraints.
Architecture
The backend is a single Java 21 Lambda behind API Gateway, deployed with AWS SAM. The frontend is a Python Gradio app running in Docker, sending the full conversation history with every request (no server-side sessions, no DynamoDB). When a request lands, a ConversationRouter prompts Llama 3.3 70B with the conversation so far and asks it to either generate a follow-up question or extract a complete trip spec as JSON. If the spec is complete, the handler hits the GoYaana getPlan API for flights, hotels, activities, and restaurants, then makes a single batched call to Llama 3.1 8B to generate descriptions for all activities at once. The PDF is generated client-side in the Gradio app, not in Lambda, which keeps the response payload small.
Hardest technical decision
Splitting the LLM work across two models. The 70B model is reliable for structured JSON extraction and conversation routing, but slower and rate-limited. The 8B model is fast and cheap, but less consistent on structured outputs. Generating a description per activity individually would blow past the 29-second API Gateway timeout. The decision was to use 70B only for the routing and extraction step (one call per turn), then make a single batched 8B call that generates all activity descriptions for an entire itinerary in one shot. This kept the cold path under budget and the warm path well under it. Stateless backend with conversation history sent on every request was the other call worth flagging. It made the Lambda trivial to scale and deploy, at the cost of slightly larger payloads, which was the right trade for the project scope.
What I'd do differently
Cache the destination list at module scope rather than re-fetching on cold start. The current implementation loads the destination cache during the first invocation after a cold start, which adds 1 to 2 seconds. Loading it as a static field on the handler class would amortise the cost across all warm invocations on a given container. I would also add proper structured logging with request IDs threaded through the conversation, which would have made the production debugging cycle on flaky Groq responses noticeably faster.
Other projects
IT Request Advisory Agent
An advisory AI agent that reads database support tickets from Azure DevOps Boards and drafts risk-flagged SQL proposals for human review, without ever executing against a production database.
- Built an advisory AI agent using Python and Azure OpenAI that reads database support tickets from Azure DevOps Boards, grounds them in a curated PostgreSQL knowledge base of 14 tables, and drafts risk-flagged SQL proposals for human review, with deterministic post-guards achieving 94.24% classification accuracy and zero false negatives on destructive SQL.
- Designed a 7-stage pipeline (ingest, normalize, classify, resolve, generate, compose, notify) with three-stage classification and a four-tier SQL risk ladder that wraps destructive statements in rollback transactions and blocks DDL entirely.
- Automated SLA metrics reporting via GitHub Actions and curated a 278-pair ground-truth dataset via the Azure DevOps REST API to quantitatively benchmark the agent.
- Python
- Azure OpenAI
- PostgreSQL
- Azure DevOps REST API
- GitHub Actions
WhatsApp PharmAgent
AI pharmacy assistant on WhatsApp with multi-pipeline orchestration over Azure
- Master orchestrator on Azure Functions routes incoming WhatsApp messages between three pipelines, invoice OCR, voice billing, and natural language inventory queries.
- Architected the data layer across 4 Cosmos DB containers (inventory, transactions, invoices, sessions) with phone-number partitioning and a session-based confirmation flow that survives function restarts.
- Recognised in the Top 250 globally at Microsoft AI Unlocked 2026.
- Python
- Azure Functions
- Azure OpenAI (GPT-4.1)
- Cosmos DB
- Document Intelligence
- Speech-to-Text
Leopardol E-commerce Platform
Live at leopardol.com. End-to-end e-commerce platform for a Gen Z clothing brand, built as Founding Engineer at Crescentia One LLP
- Owned the full backend (Express, Razorpay, Delhivery, support and email flows, rate limiting, cron) and led the engineering for a production e-commerce platform built from scratch.
- Made the infrastructure calls, AWS EC2 for the Express backend and Cloudflare R2 over S3 for image storage (R2 has zero egress fees and lower per-GB pricing). Handled the deployment end to end.
- Led client engagement and architecture decisions across the build.
- Next.js
- Express.js
- TypeScript
- PostgreSQL (Neon)
- Prisma
- Better Auth