🍿 Cinemunch: Curated Food & Film for Every Feeling

🎯 Inspiration

Cinemunch was born out of a nightly ritual-turned-rut: my wife and I, exhausted after a long day, staring blankly at each other asking, “What do you want to watch?” followed by, “What should we eat?” Somehow, those simple questions led to endless scrolling, indecision, and occasionally just giving up altogether.

We wanted a smarter, mood-driven solution—something that could understand how we were feeling and offer a cohesive food + film combo to match. Not just “trending” or “popular,” but emotionally in sync.

This hackathon—and the Google Agent Development Kit (ADK)—offered the perfect opportunity to turn that small domestic pain point into an intelligent, generative experience.


🛠️ How It Was Built

Cinemunch was developed as a modular, multi-agent web app using a microservice architecture centered around Google’s ADK. The system is composed of:

🖥️ Frontend

Built with vanilla HTML, CSS, and JavaScript, the frontend is sleek, responsive, and includes:

  • Mood input via dropdown
  • Dynamic dark/light mode (with localStorage-based persistence)
  • Interactive hover animations for movie reveal
  • Orchestration of async calls to backend agents

🧠 Backend Agents

Both agents are deployed independently on Google Cloud Run, written in Python (Flask), and use Gemini (via Vertex AI) as the primary language model.

  • 🎥 Movie Agent: Infers genres based on mood → queries TMDB for discovery → fetches metadata and poster → filters out animated/family content using negative prompt constraints.

  • 🍽️ Meal Agent: Infers food keywords based on mood + meal context (breakfast/lunch/dinner) → queries Spoonacular API → returns curated dish info → uses strong prompt constraints to avoid dessert bias.

🔐 API keys are managed via Google Cloud Secret Manager, and both agents are containerized using Docker, ensuring scalability and modularity.


📚 What I Learned

This project pushed us across several learning frontiers:

  • 🧩 Modular AI Design: Google ADK’s agent-oriented approach helped simplify complexity. Treating each agent as its own microservice made testing and iteration much smoother.

  • 🎯 Prompt Engineering: I learned the subtle art of refining prompts with positive/negative constraints. This was essential to control hallucinations like muffins-for-dinner or Pixar-overload.

  • 🌐 Distributed Debugging: I got better at tracing bugs through browser dev tools + Cloud Run logs—critical when juggling a frontend + two independently deployed Flask agents.

  • 📡 Robust API Integration: TMDB and Spoonacular each had quirks (e.g., multi-step API calls, inconsistent data). We learned to gracefully handle edge cases and structure fallback logic.

  • 🎨 Frontend UX: Implementing CSS-based theming and hover-reveals taught me how small UI details elevate the overall experience.

  • 📖 Git & Markdown Kung Fu: A surprisingly deep dive into GitHub Flavored Markdown taught me how formatting, linking, and syncing README files can become...a whole mini-boss battle.


🧱 Challenges Faced

  • 🍰 Dessert Overload: The Meal Agent loved recommending sweets early on. It took multiple iterations, explicit constraints, and a custom mealContext filter to tame the sugar storm.

  • 🎞️ Animated Film Bias: Even with filters, the Movie Agent often returned kid-friendly titles. Stronger prompt negation helped—but we still acknowledge it as a fuzzy edge case.

  • 📦 Docker Caching Woes: Subtle bugs weren’t reflected in redeploys until we added a CACHE_BREAKER to force fresh container builds. A critical lesson in Docker behavior.

  • 🔗 Data Consistency: JSON schema mismatches between Flask and JS led to display issues. Careful key mapping solved the misfires.

  • 📝 README Markdown Hell: More frustrating than debugging AI: getting GitHub to properly render links and structure. We learned the nuances of markdown parsing the hard way.


🎉 Final Thoughts

Cinemunch is more than just an AI hackathon project—it’s a practical, joy-driven app that reduces decision fatigue and brings delight to your downtime. From learning how to orchestrate agents to taming generative chaos, this project pushed me in all the right ways.

As a first-time app builder and newcomer to the world of AI and software development, this project was a leap of faith—and a powerful reminder that learning by building is the fastest way forward.

I hope Cinemunch makes your evenings a little easier—and a lot tastier.

Built With

Share this project:

Updates