Sched
An AI scheduling assistant that turns natural-language requests into Google Calendar events and Google Tasks.
Sched is an AI scheduling assistant for Google Calendar. Instead of dragging blocks around manually from a blank week, the user types what they need: meetings, study sessions, reminders, deadlines, routines, or schedule changes. Sched drafts the plan, shows it on the calendar, and waits for the user to review it before anything is written to Google Calendar or Google Tasks.
The problem
Calendars are reliable at storing plans, but they are slow when the plan starts as messy intent. A user may know they need deep work next Monday morning, tennis tomorrow at 5, and a deadline reminder on Friday, but turning that into a clean calendar still requires manual translation.
Sched adds an intent layer on top of the calendar: describe the week in plain language, review the draft, edit it, then accept it when it looks right.
Product flow
- Connect a Google account.
- Type a scheduling request in natural language.
- Sched drafts calendar events or deadline-style tasks.
- Review the draft on day, week, or month views.
- Refine with another prompt or edit visually by dragging and resizing.
- Accept to save the final items to Google Calendar or Google Tasks.
What I built
- Google OAuth sign-in with Better Auth.
- Google Calendar and Google Tasks integration.
- Gemini-powered scheduling generation using
@google/genai. - Pending draft workflow so AI suggestions are visible before they are saved.
- Calendar views for day, week, and month planning.
- Inspector panel for title, time, duration, type, AI reasoning, conflict status, refine input, and accept/discard actions.
- Drag and resize interactions for draft events.
- Conflict indicators when proposed items overlap existing calendar events.
- Timezone guard that compares the browser timezone with the Google Calendar timezone.
Key technical decisions
The app uses Next.js App Router with thin route files and feature folders for auth, chat, calendar, inspector, and AI scheduling. Server-side infrastructure lives in lib/, including Better Auth, Drizzle, Postgres, Gemini, Google Calendar, and Google Tasks clients. Zustand owns the client-side scheduling state so chat, calendar, inspector, and pending drafts stay synchronized without forcing every interaction through a route transition.
The most important product constraint is safety: Sched never modifies existing Google Calendar events. Existing events are read-only context for scheduling, and AI-generated suggestions remain pending until the user accepts them.
Current status
Sched is archived. A deployed build remains available; the public entry point is the Google login screen. The app requires Google Calendar access because the core workflow depends on reading calendar context and saving accepted events or tasks.