5.8 KiB
5.8 KiB
auto-qualify-draft.screen — web FE
Priority: Low. The primary surface is the existing inline approval-card (in chat/voice). This screen exists for batch-review and policy tuning.
Surface: quinn.prospecting → /auto-qualify route.
Calls: platform.api only.
Layout — batch inbox
┌────────────────────────────────────────────────────────────────────┐
│ Auto-qualify queue [class ▾] [confidence ▾] [policy] │
├────────────────────────────────────────────────────────────────────┤
│ engage-priority (5) │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ prospect-2014 • score 0.86 • graph: high-rep returning │ │
│ │ inbound: "Hi, available Sat evening?" │ │
│ │ draft: "Yes — 8pm or 10pm Sat. Same arrangements as last?" │ │
│ │ why this draft ▾ │ │
│ │ • graph fingerprint: weekend-only, returning, pre-verified │ │
│ │ • local touchpoint: 3 prior, last conversion 6w ago │ │
│ │ • calendar: Sat 8pm + 10pm currently open │ │
│ │ [send] [edit] [decline] [wrong score] │ │
│ └──────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────┤
│ engage-now (11) triage (4) │
│ auto-decline-soft (3, 2 already approved-sent) │
└────────────────────────────────────────────────────────────────────┘
Layout — policy editor
┌────────────────────────────────────────────────────────────────────┐
│ Auto-qualify policy │
├────────────────────────────────────────────────────────────────────┤
│ Qualifying questions I always need: │
│ [photo / age verification] [budget] [time window] [add+] │
│ Voice profile: [calibrating · 32/50 sends] [retrain] │
│ Class thresholds: │
│ engage-priority ≥ [0.75] │
│ engage-now ≥ [0.50] │
│ triage ≥ [0.25] │
│ auto-decline-soft < 0.25 │
│ Graph dependency: [allow] / [require] / [ignore] │
└────────────────────────────────────────────────────────────────────┘
Gestures
- Tap
[send]→ submits draft as-is (positive label). - Tap
[edit]→ opens inline editor; edit-and-send records the diff as a correction. - Tap
[decline]→ record class override; surfaces a class-correction prompt. - Tap
[wrong score]→ score correction with reason picker. - Tap
why this draft ▾→ expands feature provenance (perqualify_replay). - Long-press class header → bulk action ("send all in this class as-drafted") for high-trust periods. Requires per-session re-consent; never persistent.
States
| State | Behaviour |
|---|---|
| Cold voice profile | Draft cards carry an explicit "voice calibrating" badge. Conservative defaults. |
| Graph offline | Cards show "graph offline" badge; scores rendered with widened error bars. |
| Safety-flagged touchpoint | Does not appear in this queue at all; routed to K-safety-blocklist. |
| Score-only (latency breach) | Card renders without a draft; provider sees score+class and must compose manually. |
| Audit replay | Per-card replay shows feature provenance as of the original score timestamp. |
| Bulk-send mode | A persistent banner names the active bulk session and offers one-tap cancel; bulk auto-revokes after 10 minutes. |
Privacy invariants
- "Why this draft" never names a graph contributor.
- Drafts never quote another provider's content; the editor cannot paste cross-tenant text.
- Bulk-send is gated; never sticky across sessions.
- Voice-profile retraining uses only the provider's own past sent messages; never cross-tenant.
Related docs
auto-qualify-draft.brief.md,auto-qualify-draft.contract.md@features/ai-copilot/docs/approval-card.screen.md(the primary inline surface)@features/ai-copilot/docs/chat-home.screen.md(conversational entry point)@features/ai-copilot/docs/00-system-voice.md@features/ai-copilot/docs/K-safety-blocklist.brief.md