Inspiration
Food waste usually happens in the quiet moments: milk expires tomorrow, spinach is almost gone, and nobody remembers until it is too late. Most recipe apps wait for the user to ask, “What should I cook?” KitchenWatch flips that. It watches the real kitchen shelf and turns expiring food into one verified cooking plan on Google Calendar.
What it does
KitchenWatch lets a user add kitchen inventory through a photo, camera capture, voice, or manual correction. Gemini 3.5 extracts the food name, quantity, unit, and expiry date. If voice misses a date, the user can set it manually. If voice heard the wrong item, the user can remove it.
Every morning, the agent checks Firestore for food expiring in the next 48 hours. Gemini proposes one meal, but it does not get final authority. A Python Trust gate verifies that every ingredient exists on the shelf, the quantities are enough, the units match, and the reason item is truly expiring soon. Only then does KitchenWatch write a Google Calendar event with what to cook, why now, and which ingredients to use.
How we built it
The app runs on Google Cloud Run. Firestore stores the kitchen ledger and watch jobs. Cloud Scheduler wakes the watch path every day. Secret Manager stores runtime secrets. Gemini 3.5 Flash is called through the Google GenAI SDK for photo, voice, and planning. Google Calendar API is the final action layer.
The core workflow is:
ingest → store → retrieve → plan → trust → write → verify
The most important design choice is separating creativity from authority. Gemini can suggest a useful meal, but deterministic Python rules decide whether the system is allowed to act.
Challenges
The hardest part was making the agent useful without making it risky. LLMs can misread speech, miss expiry dates, or suggest ingredients that are not actually available. KitchenWatch handles this by dropping low-confidence extracts, allowing manual corrections, blocking invented ingredients, and making Calendar writes idempotent so retries do not create duplicate dinner events.
Voice was also tricky because people say things like “these expire in two days.” The system now gives Gemini today’s date and resolves relative phrases like “tomorrow” and “in two days” into real expiry dates.
What we are proud of
KitchenWatch is not a chatbot. It completes a real workflow across multiple tools: it understands the shelf, stores state, makes a plan, verifies safety, writes to Calendar, and confirms the write. The result is small, practical, and reliable: one kitchen, one trusted shelf, one useful calendar action.
What is next
Next steps would be multi-user kitchens, barcode support, recurring grocery patterns, and personal calendar OAuth. The current version keeps the scope intentionally focused: prevent food waste by turning real kitchen state into one safe action before the food expires.
Log in or sign up for Devpost to join the conversation.