Multi-Agent Gift Recommendation Engine Powered by Google ADK & Gemini A developer built GiftAdvisor, a multi-agent gift recommendation system using Google's Agent Development Kit (ADK) and Gemini 3.1 Flash Lite. The system splits the task across three specialized agents—ProfileAnalyzerAgent, IdeaFinderAgent, and BudgetFilterAgent—chained via SequentialAgent to produce budget-compliant gift ideas. Deployed on Cloud Run with zero-instance scaling, it aims to keep costs near zero. This post is my submission for DEV Education Track: Build Multi-Agent Systems with ADK. Finding the perfect, thoughtful gift shouldn't feel like a chore. Whether it's for a birthday, anniversary, or holiday, we all experience gift-buying paralysis: To solve this, I built GiftAdvisor . It is an intelligent, consumer-friendly gift recommendation system built with Google Agent Development Kit ADK , Gemini gemini-3.1-flash-lite , and deployed seamlessly to GiftAdvisor transforms unstructured descriptions of a person into tailored, ranked, and strictly budget-compliant gift recommendations. Instead of dumping everything into a single monolithic prompt, GiftAdvisor splits the cognitive load across three specialized AI agents orchestrated via Google ADK: LlmAgent , SequentialAgent , and InMemorySessionService . min-instances=0 scales to zero when idle for $0.00 base cost . .md , JSON .json , Clipboard, or Print / Save as PDF. ProfileAnalyzerAgent recipient profile profile analyzer agent = LlmAgent name="ProfileAnalyzerAgent", model=model name, instruction=""" You are an expert gift persona analyzer. Analyze the recipient's description, occasion, and relationship. Extract key traits, hobbies, lifestyle context, and explicit anti-preferences what to avoid . Save your structured analysis to session state key 'recipient profile'. """, output key="recipient profile", IdeaFinderAgent {recipient profile} from the session state and ideates 6–10 candidate ideas across diverse categories e.g., candidate gift ideas idea finder agent = LlmAgent name="IdeaFinderAgent", model=model name, instruction=""" You are a creative gift brainstormer. Given the recipient profile: {recipient profile} Brainstorm 6 to 10 distinct, creative gift ideas across multiple categories. For each idea, provide a realistic estimated market price. Save your candidate ideas to session state key 'candidate gift ideas'. """, output key="candidate gift ideas", BudgetFilterAgent {candidate gift ideas} , {budget limit} , and {currency} . It validates each candidate against the budget ceiling. Any item that exceeds the budget is logged in an final gift recommendations budget filter agent = LlmAgent name="BudgetFilterAgent", model=model name, instruction=""" You are a meticulous gift budget auditor and curator. Budget Limit: {budget limit} {currency} Candidate Ideas: {candidate gift ideas} 1. Audit each idea against the budget ceiling. 2. Eliminate items that exceed the limit and suggest budget-friendly alternatives. 3. Present the Top 3-5 Recommended Gifts formatted into budget tiers with rationale. Save the final report to session state key 'final gift recommendations'. """, output key="final gift recommendations", SequentialAgent Google ADK makes chaining agents intuitive using SequentialAgent . State flows from one agent's output key directly into the next agent's prompt template variables: gift advisor pipeline = SequentialAgent name="GiftAdvisorPipeline", sub agents= profile analyzer agent, idea finder agent, budget filter agent, , google-adk Agent Development Kit v2.7.0 gemini-3.1-flash-lite via google-genai To keep running costs near $0.00 while maintaining rapid startup times: min-instances = 0 memory = 512MiB & cpu = 1 vCPU gemini-3.1-flash-lite Separation of Concerns Prevents Hallucination : When asking a single LLM prompt to analyze personality, brainstorm 10 items, and filter by budget simultaneously, it often ignores budget limits or produces bland suggestions. By decoupling Analysis - Ideation - Budget Auditing into separate ADK agents, each agent performs its task with significantly higher precision. Session State is the Superpower of ADK : Using InMemorySessionService and prompt variable injection {recipient profile} , {candidate gift ideas} made passing structured context between agents clean, traceable, and modular. Cloud Run + Gemini is a Perfect Match : Deploying containerized Python agent applications to Cloud Run gives you an instant HTTPS public API with scale-to-zero economics. No idle server bills, automatic TLS certificates, and global scaling out of the box. Building GiftAdvisor with Google ADK demonstrated how accessible and clean multi-agent orchestration has become in Python.