Skip to main content

What must exist before work can progress?

DEPENDENCY MAP: SALES CRM & RFP
════════════════════════════════════════════════════════════

┌──────────┐
│ START │
└─────┬─────┘

┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Identity & │ │ Convex │ │ Industry │
│ Access Fix │ │ Permissions │ │ Dropdown │
│ ═══ HARD │ │ ═══ HARD │ │ ─── soft │
│ (22P02 fix) │ │ (rfp_answer │ │ (config) │
└──────┬───────┘ │ + ventures) │ └──────┬───────┘
│ └──────┬───────┘ │
│ │ │
▼ ▼ │
┌──────────────┐ ┌──────────────┐ │
│ App │ │ Answer │ │
│ Accessible │ │ Library │ │
│ (all users) │ │ Readable │ │
└──────┬───────┘ └──────┬───────┘ │
│ │ │
└────────┬───────┘ │
│ │
▼ │
┌──────────────┐ │
│ Sprint 0: │ │
│ Wire 3 Algos│ │
│ + Stripe │ │
│ 6 days │ │
└──────┬───────┘ │
│ │
▼ │
┌──────────────┐ │
│ Sprint 1: │ │
│ Seed Answer │ │
│ Library │ │
│ (1 real RFP)│ │
└──────┬───────┘ │
│ │
┌────────────┼────────────┐ │
│ │ │ │
▼ ▼ ▼ │
┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ Sprint 2 │ │ Sprint 3 │ │ Sprint 4 │ │
│ Company │ │ Activity │ │ Data │ │
│ Entity │ │ Logging │ │ Quality │ │
└─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ │ │ │
└────────────┼────────────┘ │
│ │
▼ │
┌──────────────┐ │
│ First Pilot │←───────────────┘
│ (real team) │
└──────┬───────┘


┌──────────────┐
│ Kill Test: │
│ Deals created│
│ Weekly usage │
└──────┬───────┘


┌────────┐
│ DONE │
└────────┘

─────── = Soft (can proceed with workarounds)
═══════ = HARD (cannot proceed without)

════════════════════════════════════════════════════════════

Classification

DependencyTypeHard/SoftOwnerRiskMitigation
Identity & Access fixInfrastructureHARDEngHigh22P02: userId string cast to UUID. ClerkAuthAdapter maps correctly, role query uses wrong field.
Convex rfp_answer permissionsInfrastructureHARDEngMediumTable-level read permission not granted to authenticated user role. Blocks 3 pages.
Convex ventures queryInfrastructureHARDEngMediumGeneric "Operation failed" — may be related to permissions. Blocks venture management.
Industry dropdown updateConfigurationSoftEngLowAdd Construction, Infrastructure, Energy, Solar to enum. Config change only.
Sales Forecasting wiringAPISoftEngLowAlgorithm exists, page exists, wire server action. 1 day.
Compound Rate wiringAPISoftEngLowAlgorithm exists, analytics renders placeholder. 1 day.
RFP Type Detection wiringAPISoftEngLowAlgorithm exists, upload flow exists. 2 days.
Stripe webhooksAPISoftEngMediumBackend complete, webhook handlers pending. 2 days.
Answer library seedingDataSoftWik+EngMediumNeeds first real RFP processed through full cycle.
Company entitySchemaSoftEngLowNew table + detail/list pages + relationship migration.

From the Value Stream Map — each bottleneck maps to what blocks its fix:

Bottleneck (value stream)FixBlocked By
#1 Bid Prep (20-40h)Answer library auto-fillAuth fix (HARD) + Convex permissions (HARD) + library seeding
#2 Follow-up (21d wait)Task management linked to dealsAuth fix (HARD) — task page exists, needs accessible app
#3 SME Review (1-3d)Review Queue + My QueueConvex permissions (HARD) — pages built, can't read rfp_answer
#4 Go/No-Go (1-3d)Scoring checklistSoft — qualification stage exists, UI gap only
#5 Receive (low wait)RFP Type DetectionSoft — algorithm exists, needs wiring

Critical Path

Identity Fix (1-2d) → Convex Permissions (0.5d) → Sprint 0: Wire Algos (6d) → Sprint 1: Seed Library (5d) = ~14 days

Sprint 2: Company Entity (5d) ─────────────────────────────────────────────────────────┤ (parallel after Sprint 1)
Sprint 3: Activity Logging (3d) ───────────────────────────────────────────────────────┤ (parallel after Sprint 1)
Sprint 4: Data Quality (2d) ───────────────────────────────────────────────────────────┘ (parallel after Sprint 1)

Minimum to first pilot: ~14 engineering days (auth + permissions + algo wiring + library seeding)
Full cycle (all sprints): ~25 engineering days

The critical insight: Two HARD blockers (auth + permissions) gate everything. Fixing these two issues — likely 2-3 days of engineering — unblocks 49% of features that are already live.

Gate

Before moving to Capability Map:

  • All dependencies identified and classified — YES (10 listed)
  • Hard vs soft classification complete — YES (3 hard, 7 soft)
  • Critical path identified — YES (14 days to first pilot)
  • Every blocker has an owner and evidence — YES (22P02 error code, specific table names)
  • Parallelization opportunities documented — YES (Sprints 2-4 parallel after Sprint 1)
  • Key insight: 2-3 days of auth/permissions work unblocks 49% of live features

Context