What must exist before the conversational interface can ship?
DEPENDENCY MAP — MULTIMODAL AGENT INTERFACE
════════════════════════════════════════════════════════════
┌─────────────────┐
│ MULTIMODAL │
│ AGENT INTERFACE│
└────────┬────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ AGENT │ │ IDENTITY │ │ VERCEL │
│ PLATFORM │ │ & ACCESS │ │ AI SDK │
│ (L2) │ │ (L2-L3) │ │ (unused) │
│ HARD │ │ HARD │ │ SOFT │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
│ ════════════════╪══════ │
│ │ │
┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐
│ Agent │ │ Auth + │ │ useChat │
│ identity │ │ RBAC + │ │ hook + │
│ + memory │ │ org │ │ streaming│
│ + comms │ │ isolation│ │ endpoint │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
└──────────────────┼──────────────────┘
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ CHAT UI │ │ MODALITY│ │ SESSION │
│ (T0) │ │ ROUTER │ │ MEMORY │
│ │ │ (T1) │ │ (T0) │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└────────────┼────────────┘
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ FILE │ │ CRM │ │ VOICE │
│ UPLOAD │ │ QUERY │ │ INPUT │
│ (T2) │ │ (T3) │ │ (T4) │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└────────────┼────────────┘
│
▼
┌─────────────────┐
│ CONVERSATIONAL │
│ drmg-sales │
└─────────────────┘
─────── = Soft (can proceed with mocks)
═══════ = HARD (cannot proceed without)
════════════════════════════════════════════════════════════
Dependency Register
| # | Dependency | Type | Hard/Soft | Owner | Status | Mitigation |
|---|---|---|---|---|---|---|
| D1 | Agent Platform — identity + memory | Infrastructure | HARD | Agent Platform PRD | L2 | Feature flag: ship chat without persistent memory, add later |
| D2 | Identity & Access — auth + RBAC | Infrastructure | HARD | Identity PRD | L2-L3 | Auth already works for existing app. Chat inherits same session. |
| D3 | Vercel AI SDK — useChat hook | API | SOFT | In package.json | Installed, unused | Wire directly. No external dependency. |
| D4 | Skill router — intent matching | API | SOFT | Agency lib | Working (text-only) | Extend existing router, don't rebuild |
| D5 | WorkChart adapters — input normalisation | Data | SOFT | New code | Not started | Mock adapter returns test data during T0 |
| D6 | STT provider — Whisper/Deepgram | External | SOFT | Third-party | Available | T4 only. Text-first MVP has no voice dependency. |
| D7 | VLM provider — Claude/GPT-4V for PDF | External | SOFT | Third-party | Available | T2 only. Text chat works without vision. |
Critical Path
Identity & Access (auth) ──► Agent Platform (memory) ──► Chat UI (T0) ──► Modality Router (T1) ──► File Upload (T2)
│
Minimum duration: 15 days (T0 + T1 + T2) CRM Query (T3)
│
Voice (T4)
Critical path length: 15 days (T0-T2). T3 and T4 can parallel-track after T1.
Key risk: Agent Platform memory at L2. If session memory requires Agent Platform L3, T0 must ship with conversation-scoped memory only (no cross-session persistence).
Parallelisation Opportunities
SEQUENTIAL (worst case) PARALLEL (optimised)
──────────────────────── ────────────────────
T0 ── T1 ── T2 ── T3 ── T4 T0 ──► T1 ──► T2
│
Lead time: 22 days T3 ──┘
│
T4 ──┘
Lead time: 15 days
Headline
Two hard deps. Everything else parallels.
P-Q-D
| Problem | Question | Decision |
|---|---|---|
| Agent Platform + Identity block all conversational work | Can we ship chat before Agent Platform hits L3? | Yes — feature flag + conversation-scoped memory. Persistent memory added when Agent Platform ready. |
Gate
- All dependencies identified and classified (7 dependencies)
- Hard vs soft classification complete (2 hard, 5 soft)
- Critical path identified (15 days: T0→T1→T2)
- Risk matrix populated (Agent Platform memory = key risk)
- Parallelisation opportunities documented (22 days → 15 days)
- Every blocker has an owner and escalation path
Context
- Value Stream Map — Previous: where time dies
- Pictures Hub — All maps for this PRD
- Dependency Map Template — Pattern used