Inbox Triage — Work Record
Intent
Email triage powered by the Jev decision model: read Justin's personal Microsoft 365 mailbox through Microsoft Graph (native auth, no IMAP, no app passwords), classify with the Jev endpoint on OpenRouter, and publish run summaries to the workbench inbox section under a fixed results contract. Started as a local app on Justin's Mac; the current initiative is migrating it to a Cloudflare Container so it runs hosted.
- Repo: jknash/inbox-triage
- Workbench contract: results land as
results.json(run time, model, counts, flagged metadata only) in the workbench inbox section.
Status
active — the program is re-homed and its specification is APPROVED (2026-10-10). Inbox Triage now belongs with the dashboard: program home jknash/dashboard (a dedicated llm-kanban board root kanban/it/ and an llm-wiki estate at wiki/ stand up there under the approved spec's §7.5 sequence); the app code stays in jknash/inbox-triage. "Inbox" is now mailbox (Outlook + Gmail) + Microsoft Teams + Microsoft Planner + both calendar systems, every surface Jev-assessed for do-today, with the app itself as the to-do list — a board-form to-do component and a unified, prioritized Commitments view. The approved specification is published in this project (spec.md, approved bytes sha256 cfd8653e…). Owner steps stand as the spec's §10 set (S1–S6), each gating its named story. The Mac app remains the working rollback until the hosted cutover verifies in daily use (story IT-09).
Decisions
| Date | Decision | Why / rejected alternative |
|---|---|---|
| 2026-10-02 | Microsoft Graph with device-code sign-in, delegated Mail.Read | Owner rejected IMAP and app passwords; native auth only |
| 2026-10-03 | Hosted shape: one dual-mode codebase (local behavior unchanged), Worker verifies the Cloudflare Access JWT itself, state in R2 with the token cache encrypted | Keeps the local rollback identical; no public exposure (no routes until cutover) |
| 2026-10-03 | Hostname inbox.knashboard.com | Rides the same Cloudflare zone as the workbench domain |
Progress log
2026-10-02
- Local app built and pushed to GitHub (initial commit, 8 files): app, Graph mail client, Jev client, UI. It has not yet run a live classification against the real mailbox.
2026-10-10
- The full specification was authored jointly (planner + scrum master), UI/UX-directed, security-consulted (§8.2 folded), and APPROVED by the chief of staff; published in this project as
spec.md. - The §7.5 filing sequence executes: this record updated; the IT board + wiki estate stand up in jknash/dashboard; the groomed story set (IT-01…IT-12) filed; WB-003 superseded on the Workbench board with its record updated in the same move; IT-S01 proposed in the ordinary form.
- Trello was named and dropped by the owner the same day ("Forget trello") — no Trello surface exists in the approved design; the task-list surface is Microsoft Planner, and the to-do board pattern lives inside the app.
2026-10-03
- Cloudflare Containers staging completed in a separate tree (repo and local app untouched): container image definition, Worker with Access JWT verification, authorization-code + PKCE auth redesign, R2 state store with encrypted token cache, results written in the workbench contract shape. Local verification passed (boot, sign-in redirect, state round-trip, wrangler dry-run); the full Docker build must run on the Mac.
- This work record created (project page backfilled under the owner rule).
Blockers / open items
- Owner steps are the approved spec's §10 set (S1–S6), each gating the story named there; Q1 (work-tenant consent) is the program's one open external dependency, carried on the spec's face.
- First hosted smoke run is also the app's first live test anywhere — keep the first run small (about 25 emails).
Artifact links
- Migration report: project staging tree, MIGRATION.md (local workspace record, 2026-10-03).
- Workbench publisher story: WB-003 — SUPERSEDED under the approved spec (its summary contract survives as the tool's emitted summary, consumed by the IT-08 launch tile); the supersede is executed on the Workbench board with the S01 record updated in the same move.
- Program board:
kanban/it/in jknash/dashboard (prefix IT-); knowledge estate:wiki/in the same repo.
Published by Muse · 2026-10-03; updated 2026-10-10.