About the project
MailMind is a Chrome extension that upgrades Gmail with AI-driven analysis, triage, composition, calendar conversion, and bulk organization—right inside the Gmail UI. The goal is simple: move from inbox to done faster without context switching.
Inspiration
Our team spends a big chunk of the day in email. Even with modern AI, we were constantly switching tabs, copying and pasting, and losing focus across tools. We wanted a Gmail-native assistant that analyzes threads, suggests next actions, writes high-quality replies, turns emails into calendar events, and cleans up in bulk—all without leaving the inbox.
What we built
- AI Triage & Insights: response time stats, backlog overview, sender/topic clusters, priority suggestions.
- AI Composition: context-aware drafting, rewriting, summarization, tone and length control.
- One-click Calendar: extract time/date and create calendar events from emails.
- Bulk Actions: star, archive, label at scale based on AI analysis.
- Gmail-native UI: floating action button (📧) and compose-window integration.
How we built it
- Frontend/Extension: React 18 + TypeScript + Tailwind + Vite; MV3 with
content.js,background.js,manifest.json. - Local AI (when available): Chrome Prompt API & Writer API (Chrome 127+ with flags) for on-device inference to reduce latency and keep UX smooth.
- Fallback AI: Gemini API as compatibility fallback when local APIs aren’t available.
- Backend: Node.js + Express with routes for
ai,auth,mail,calendar. - Google Integrations: Gmail API for thread access and actions; Calendar API for event creation; OAuth2 for authentication.
- Data flow: incremental thread fetching → lightweight feature extraction → AI scoring → UI suggestions → user-confirmed actions with undo.
Challenges
- Sensitive data in emails: Prefer on-device AI via Chrome APIs to limit exposure; when falling back to cloud models, limit scopes, minimize payloads, and require user-visible confirmations for higher-risk actions.
- Gmail/Calendar quotas & performance: batched requests, cached metadata, debounced UI updates, and a queued executor for bulk operations.
- Ambiguity in NER/time parsing: multi-pass parsing with heuristics and confirmation before calendar creation.
- MV3 constraints: adapt to service-worker lifecycles, persist state carefully, and use message passing between content/background scripts.
What we learned
- On-device AI UX > raw model power for productivity tools: low latency and inline placement beat marginal quality gains from larger remote models.
- Design for reversibility: undo/preview flows dramatically increase confidence in bulk actions.
- Explainability builds trust: show why an email is “high priority” (sender recency, thread length, deadline hints) instead of opaque scores.
- Operational guardrails are essential: quotas, rate limiting, backoff, and error handling matter even in a weekend build.
Impact (thinking about it quantitatively)
Definitions: $$ N := \text{emails processed per day} $$ $$ t_b := \text{baseline time per email (min)} $$ $$ t_a := \text{assisted time per email (min)} $$ $$ p := \text{fraction handled via bulk actions} $$ $$ \Delta_{\mathrm{bulk}} := \text{extra time saved per bulk-handled email} $$
Estimated daily time saved:
$$ S \approx N\,(t_b - t_a) + p\,N\,\Delta_{\mathrm{bulk}} $$
What’s next
- Smarter prioritization: combine temporal urgency, relationship strength, and intent signals; better multi-language support.
- Task center: extract todos from emails and sync with popular task systems.
- Rule builder: human-readable automation rules with explanations and a safe simulation mode.
- Multi-platform support: Chrome/Edge/Firefox extensions with a shared core, desktop add-ins for popular clients, and mobile share-sheet actions; unified settings and account sync.
Appendix: Tech stack
- Extension/UI: React 18, TypeScript, Tailwind, Vite, MV3
- AI: Chrome Prompt API, Chrome Writer API; Gemini fallback
- Server: Node.js, Express, session & caching utilities
- Google: Gmail API, Calendar API, OAuth2
Built With
- express.js
- node.js
- react
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.