Skip to content

Epic: Inbox-Intelligence — digest read layer, source-agnostic extractors, UI + launch fixtures #484

@jayzalowitz

Description

@jayzalowitz

SkyTwin's signal/decision pipeline, compared against existing AI-inbox digest products and then adversarially stress-tested against every user + access configuration, surfaced concrete gaps. This epic builds digest parity plus the advantages those products can't match, and the cross-cutting trust layer that makes it awesome no matter what the user gave us access to.

  • Multi-source. SkyTwin ingests email, calendar, filesystem (idle-miner), and voice transcripts — all normalized to one RawSignal shape. Spec 07 makes every capability source-agnostic.
  • It can act. Under trust-tier + policy gates, SkyTwin acts on items, not just lists them.
  • Access-faithful (specs 11-13). Honor what the user hid + the scopes they granted (11), serve non-English users + correct local time (12), degrade gracefully and transparently across any connector subset down to zero (13).

Every example string across these specs is synthetic. Source drafts live in .context/specs/ (gitignored).

Child issues

Sequencing

07 (SignalText)  ->  makes 02/03/06 multi-source from birth
01 (act/FYI split, prompt-only)  ->  ships the structural win
02 + 03 + 06  ->  feed 01's to-do / awareness buckets across all sources
04 (topic clustering)  ->  reshapes presentation
05 (entity cross-linking)  ->  dedups across clusters (heaviest)
08 (UI)  ->  renders todos / clusters / citations / source-type (web + mobile)
09 (demo fixture)  ->  opt-in, isolated; populates everything for screenshots
10 (bootstrap + idempotent seeds)  ->  P0 foundation; real users' empty default + seedUpsert

CROSS-CUTTING TRUST LAYER (requirements, not a final phase):
11 (access-faithful gates)  ->  P0 trust/safety; land WITH 01
12 (locale & timezone)      ->  raises 02/03/06 quality; land WITH the extractors
13 (coverage transparency)  ->  honest degradation across any source set; folds into 08

Notes from /review (grounded against code)

  • 10 is P0 and independent. Fixes the empty default every real user gets (today safe but frozen) and provides the seedUpsert idempotency helper 09 + the demo seed depend on.
  • 09 never runs for a real or new user — safety invariant #0 (opt-in + env gate + identity isolation).
  • 11 is a launch blocker (trust/safety). Today the briefing leaks content the user hid (memory-gbrain-crdb-adapter honors hide; briefing-generator.ts does not consult it) and proposes send_reply (decision-maker.ts:539) with no gmail.send scope check. Both must be gated.
  • Start-order dependency: 02/03 consume SignalText from 07 — land 07 first or start email-only and refactor.
  • RESOLVED DECISION (2026-06-06): new users default to observer (LOCKED). Was a 3-way conflict — code (users.ts:104) forced suggest; DB default + CLAUDE.md already say observer. New-user bootstrap (grandma seed) + idempotent seeding #483 reconciles all three to observer. Safe because the trust-tier progression (observer → suggest via 10 consecutive approvals at 80%+, user-accepted) is verified to exist + be transparent. New-user bootstrap (grandma seed) + idempotent seeding #483 also hardens it: enforce the 24h soak floor in the daily promotion job and introduce the tier ladder to new users.

All specs are /spec-quality with verified file:line current-state references.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions