Inspiration
We noticed “ghost tasks” living in tabs—emails with Join meeting, calendar chips, and doc action items—that never make it into a todo app. APIs and integrations add friction, so we built a page-aware, privacy-first assistant that captures only what’s already visible on screen.
What it does
TrailMix scans the current page every 5s, detects real tasks and upcoming meetings (within ~2 hours), and creates exactly one clean task. It extracts titles, times, meeting links (Meet/Zoom/Teams/Webex), organizer/location, scores confidence, and dedupes across pages/tabs. When a title/time changes, the task updates automatically.
How we built it
- DOM Scanner: visibility checks + proximity search around meeting links;
MutationObserverfor incremental rescans. - Parsers: regex for Meet/Zoom/Teams/Webex; time parser for “Today 3:00–3:30 PM”, “in 15 minutes”, RFC-ish stamps; local→UTC conversion.
- Quality Scoring & Filter:
isRealTask()with weighted signals (valid link, future time, “Join/RSVP” cues, organizer) and thresholding. - Dedupe: keys on
(provider + link + startISO)plus fuzzy title and ±5-min window; client + server checks. - Storage: normalized tasks in Neon Postgres; timestamps in UTC.
Challenges we ran into
- Parsing many date formats/locales without heavy libraries.
- Distinguishing decorative UI (“review 3 tasks created”) from actionable items.
- Handling recurring events and DOM-only edits (no API ground truth).
- Preventing duplicate creation when the same meeting appears on multiple pages.
Accomplishments that we're proud of
- Accurate, API-free detection of meetings 0–120 minutes ahead.
- Zero duplicate tasks after adding client/server dedupe.
- Stricter detection via
isRealTask()and scoring—far fewer false positives. - Snappy updates: scan cadence tuned from 30s → 5s without thrashing.
What we learned
Small, layered heuristics beat brittle single rules. Dedupe and confidence scoring are as important as detection. Users value privacy and zero-setup—using only what’s already on screen increases trust and adoption.
What’s next for TrailMix
- Per-site adapters (GCal/Outlook/Gmail layouts) to boost recall and titles.
- Optional API mode (consent-based) for multi-day horizon and RSVP actions.
- Confidence tuning UI and “why this was captured” explanations.
- iCal export and lightweight mobile companion for reminders.
Built With
- autoprefixer
- chrome-ext-mv3
- chrome.scripting`
- cmdk
- cors
- dotenv
- drizzle-orm
- express-session
- express.js
- gemini
- html
- javascript
- lucide-react
- node.js
- postcss
- postgresql-(neon)
- radix-ui
- radix-ui/shadcn
- react
- shadcn/ui
- tailwind-css
- tailwindcss-animate
- tanstack-query
- typescript
- vaul
- vite
- websockets
- websockets-(`ws`)
- zod

Log in or sign up for Devpost to join the conversation.