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
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
Production E-commerce Platform
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 call for Hetzner over EC2 t3.medium/large at roughly a third of the per-hour cost, 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
TrackWell
Cross-platform mobile app for AI-powered nutrition tracking, fitness planning, and GPS-tracked activity
- Three distinct Gemini AI integrations: vision-based food recognition from camera images, personalised daily fitness plan generation from onboarding inputs, and weekly health insights synthesised from 7 days of tracking data.
- Real-time GPS walk tracker with foreground location streaming, Haversine-based distance calculation, and MET-based calorie estimation that uses the user's actual weight rather than a fixed multiplier.
- Production touches across the app: 6-hour cache on weekly AI insights to keep API costs sane, debounced FatSecret OAuth 1.0 search, Clerk auth with Google OAuth, scheduled local notifications, and per-day log persistence in Firestore.
- React Native (Expo SDK 54)
- TypeScript
- Expo Router
- Google Gemini 3 Flash
- Clerk
- Firebase Firestore