Inspiration
Feature-request tickets and calendars live in two different worlds. Plans get made, then nobody actually blocks the time to do the work — so scope slips.
What it does
Turn a plain-English feature request into a dependency-ordered task plan (implementation → edge cases → testing → docs → review → deployment), then schedule it straight into your real Google Calendar — around your actual meetings, in your timezone, with reminders. Each user's plans are their own, behind Google sign-in.
How we built it
React + Vite + TypeScript frontend, Express + TypeScript backend, one container on Cloud Run. Gemini (structured JSON output) generates plans with a rule-based fallback; a luxon-based scheduler routes tasks around live Google Calendar free/busy data; Google OAuth handles both calendar access and user login.
Challenges we ran into
Timezone-correct scheduling (doing the math in the calendar's own IANA zone, not the server's); keeping the LLM's task-dependency graph valid (topological sort with cycle-breaking, since a model can invent a bad reference); and — freshest in memory — getting Cloud Run's env vars, redirect URIs, and single-instance session storage all lined up for OAuth to actually stick in production.
Accomplishments that we're proud of
Everything degrades gracefully — no Gemini key, no Calendar connection, no problem, the app still works end to end. And the AI's output plugs directly into a typed, validated pipeline instead of being a wall of text you have to parse yourself.
What we learned
Structured output turns "prompt an LLM" into "call a typed function" — but you still need a validation/repair layer at the boundary. And OAuth in production is never just "add the client ID" — redirect URIs, session storage, and instance topology all have to agree.
What's next for Senior Engineer Planner
Collapse generate + schedule into one autonomous action; per-user Google Calendar connections instead of one shared connection; swap in-memory storage for a real database so it survives redeploys and scales past one instance.
Log in or sign up for Devpost to join the conversation.