Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InboxPilot — Waiting On

A Chrome extension (Manifest V3) that scans your Gmail and shows exactly which sent emails are still waiting on a reply. No AI, no backend, no analytics — everything runs and stays in your browser.

If you sent the last message in a thread and the recipient hasn't replied since, it shows up — sorted by how long you've been waiting, so the oldest, most overdue conversations rise to the top.

This repo doubles as a worked example of building with Claude from a real spec: docs/PRD.md is the product requirements document written and iteratively reviewed before any code existed, and docs/EDD.md is the engineering design document written from the finished implementation, describing how it actually works.

What it does

  • Google Sign-In via OAuth (gmail.readonly scope only — read access, nothing else)
  • Scans the last 30 days of sent mail
  • Shows recipient, subject, and days waiting per thread
  • Correctly handles multi-recipient threads (a thread stays "waiting" until everyone has replied)
  • Filters out newsletters, no-reply senders, and self-sent mail automatically
  • Per-thread manual override: exclude a specific recipient from a thread's "waiting on" requirement (e.g. you only actually need the CEO's answer, not their assistant's or a cc'd lawyer's)
  • ⓘ Why? panel on every row — expands inline to show the exact facts behind the classification, generated from the same logic that produced it
  • Cache-then-background-refresh: instant warm launches, a 5-minute background refresh via chrome.alarms, never blocks the popup UI

See docs/PRD.md for the full feature spec, edge-case definitions, performance targets, error states, and acceptance tests. See docs/EDD.md for the technical implementation: architecture, Gmail API usage, detection algorithm, storage schema, and caching design.

Install / run it yourself

There's no build step — it's plain HTML/CSS/JS. But because this uses Google OAuth, you need to create your own OAuth client before sign-in will work for you; the client_id in extension/manifest.json is tied to the specific extension ID it was created for, and Chrome mints a different extension ID for every unpacked folder path, so this repo's existing client_id will not work once you load it from your own machine.

  1. Clone this repo and open chrome://extensions in Chrome.
  2. Enable Developer mode (top right), then Load unpacked → select the extension/ folder.
  3. Note the extension ID Chrome assigns it (shown on the extension's card).
  4. In Google Cloud Console → APIs & Services → Credentials, create an OAuth client of type Chrome Extension, using the ID from step 3 as the Application ID.
  5. Enable the Gmail API on that same Cloud project, and add the .../auth/gmail.readonly scope on the OAuth consent screen.
  6. Copy the new client's Client ID into extension/manifest.json under oauth2.client_id.
  7. Reload the extension in chrome://extensions, click the InboxPilot icon, and sign in.

A freshly created OAuth client can take anywhere from a few minutes to a few hours to propagate on Google's side — if sign-in fails immediately with a "bad client id" error right after setup, that's usually why; it typically resolves on its own.

Project structure

extension/    The actual Chrome extension (Manifest V3)
docs/PRD.md   Product requirements document
docs/EDD.md   Engineering design document

Status

Personal pilot project, v0.1. Working and in daily use against a real Gmail account; not published to the Chrome Web Store.

License

MIT — see LICENSE.

About

Chrome extension that surfaces Gmail threads still waiting on a reply.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages