Inspiration

Copy-pasting event details from emails, docs, and chats into Calendar was slow and error‑prone. We wanted a fluid “highlight → event” flow that feels as lightweight as selecting text, with AI to parse messy natural language.

What it does

When you highlight text on any webpage, a small overlay appears with:

  • Quick Create: one click to create a Google Calendar event
  • Edit & Create: opens a compact form prefilled from the text so you can tweak title, time, location, color, and reminders

It parses dates/times/locations from natural language using Gemini and falls back to robust on-device parsing when needed. Events are saved directly to your Google Calendar via OAuth.

How we built it

  • Chrome Extension (Manifest V3): background.js as service worker, content.js injects the overlay UI
  • AI parsing: Google Prompt API (Gemini) via public/services/promptAPIService.js, with JSON-cleanup and normalization
  • Fallback parsing: any-date-parser to cover edge cases and offline-ish flows
  • Calendar integration: chrome.identity to obtain OAuth tokens, then POST to Calendar API (/calendar/v3/calendars/primary/events)
  • UX: fully self-contained, framework-free UI rendered by the content script; snackbars, color and reminder pickers, click-outside handling

Challenges we ran into

  • Managing MV3 service worker lifecycle and reliable messaging between content and background
  • JSON irregularities from LLM output; added cleanup/normalization and strict guards
  • Handling the breadth of human date/time expressions and missing fields (year, end time, etc.)
  • OAuth in a Chrome extension, plus scope/verification and token reliability

Accomplishments that we're proud of

  • A Grammarly‑style, low-friction overlay that appears exactly when you select text
  • One‑click Quick Create that goes end‑to‑end (parse → validate → save to Calendar)
  • A resilient Edit flow with sensible defaults, color/reminder controls, and graceful fallbacks
  • Privacy-aware design: minimal data handling; uses on-device capabilities where possible

What we learned

  • Practical MV3 patterns (service worker startup, messaging, CSP constraints)
  • Prompt engineering for structured outputs and how to harden LLM JSON parsing
  • Chrome OAuth flows specific to extensions and Calendar API nuances (reminders, color IDs)
  • Designing unobtrusive UI that adapts to arbitrary webpages

What's next for Calendar Event Creator

  • Recurring events and multi-day support
  • Smarter attendee extraction and invite suggestions
  • More providers (Outlook, Apple Calendar)
  • Template snippets and quick actions (standup, 1:1, travel)
  • Better offline behavior and model fallback strategies

Built With

Share this project:

Updates