5.7 KiB
5.7 KiB
cross-provider-graph.screen — web FE
Priority: Low. The graph's primary surface is conversational (copilot inline cards). This screen exists for ops, support, and the small fraction of providers who want a non-conversational view of network signal.
Surface: quinn.prospecting (Quinn's instance) → /graph route.
Calls: platform.api only.
Layout
┌────────────────────────────────────────────────────────────────────┐
│ Graph [consent] [contributors]│
├────────────────────────────────────────────────────────────────────┤
│ Search subject ▾ [phone / handle / photo-drop] │
├────────────────────────────────────────────────────────────────────┤
│ Subject card │
│ ─ confidence band: ███████░░░ (high, 47 contributors) │
│ ─ outcomes: ▮ converted 31 ▮ ghost 8 ▮ blocked 2 ▯ no-show 6 │
│ ─ velocity: median 4 touchpoints, 38h first→outcome │
│ ─ safety flags: 1 active peer-attested (open in coop-drawer) │
│ ─ qualification fingerprint: [chips: fast-replier, photo-pre-veri,│
│ declines-deposit, weekend-only] │
├────────────────────────────────────────────────────────────────────┤
│ Your local prospects matching this subject (2) │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ prospect-1284 • last touch 2d • not booked • [open] │ │
│ │ prospect-0973 • last touch 4mo • booked • [open] │ │
│ └──────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────┤
│ Network contributions (anonymised) │
│ ─ "23 providers contributed to this subject's signal" │
│ ─ "Last contribution: 11h ago" │
│ ─ no per-provider attribution unless attributed-contribution opted │
└────────────────────────────────────────────────────────────────────┘
Gestures
- Tap subject card → expand to full attribution view (only attributed contributors visible).
- Tap local prospect row → opens
prospect-detail.screen(existing, inai-copilot/docs/). - Tap safety flag → opens
coop-drawer.screenfiltered to this subject. - Long-press / right-click subject card → "Report wrong match" → emits subject-key-collision correction (feeds
specialist-graph-resolver's correction lens). [consent]button → opens consent management screen for this Person's graph participation.[contributors]button → directory of attributed contributors (those who opted into attributed contribution for this subject).
States
| State | Behaviour |
|---|---|
| No consent given | Screen shows a single CTA: "Join the prospect graph" with what's shared / what isn't. No subject search until consent. |
| Consent given, empty network | Search works but returns "provider-local only" badge; aggregates absent. |
| Sparse network | Confidence band capped at "medium"; explicit hint "based on 5 contributors". |
| Subject opted out | Search returns "subject has opted out of the graph" with no further detail. |
| Network partition | Banner: "Graph degraded — provider-local data only." Per degraded-mode.flow.md. |
| Audit replay | When entered from audit-drawer, all aggregates render as they were at the audited timestamp (no live data). |
Privacy invariants
- Never show a contributing provider's name unless that provider opted into attributed contribution for this specific subject-key.
- Never show raw messages from another provider's tenant — anywhere, ever.
- Subject opt-out sentinel renders identically regardless of how many contributions existed pre-opt-out (no inference of prior signal volume).
- Search-by-photo-drop hashes locally before query; the photo never leaves the client.
- Differential-privacy noise is applied at contribution; the displayed confidence band reflects post-noise certainty.
Related docs
cross-provider-graph.brief.md,cross-provider-graph.contract.md@features/ai-copilot/docs/prospect-detail.screen.md(per-row drill-in)@features/ai-copilot/docs/coop-drawer.screen.md(safety flag drill-in)@features/ai-copilot/docs/audit-drawer.screen.md(audit replay)@features/ai-copilot/docs/degraded-mode.flow.md@features/ai-copilot/docs/00-system-visual-system.md(typography, spacing, chip styles)