Product dashboard
Product dashboard
Last updated 5/3/2026
ZoomProp — Product Dashboard
Repository: zoomprop/zp-alpha · Generated: 2025-08-XX · Version: 0.1.0
Lifecycle Gate Status
| Gate | Stage | Status | Signal |
|---|---|---|---|
| v0.1 Spark | Concept validated | ✅ Complete | Auth, onboarding, and core property discovery shipped |
| v0.2 Blueprint | Architecture defined | ✅ Complete | context/ARCHITECTURE.md, LLM layer, Elasticsearch, API surface documented |
| v0.3 Foundation | Core infra live | ✅ Complete | CI/CD via .github/workflows/, Clerk auth, Mapbox, OpenTelemetry wired |
| v0.4 Alpha | Feature-complete alpha | 🟡 In Progress | 50 active API routes, 100 UI components; TypeScript/ESLint build errors suppressed (next.config.ts) |
| v0.5 Beta | Stabilisation | 🔴 Not Started | Test coverage incomplete; multiple open PRs with visual and functional regressions |
| v1.0 Growth | Production launch | 🔴 Not Started | Pending beta gate clearance |
Current Gate: v0.4 Alpha — In Progress. The product has a functional AI-powered property intelligence platform with chat, discovery, portfolio analytics, and alerting. The primary blocker for Beta is stabilising test coverage and resolving the 8 open PRs carrying fix-category work.
Repository Statistics
| Metric | Count | Location / Notes |
|---|---|---|
| Total files | 500 | zoomprop/zp-alpha root |
| API routes (active) | 50 | src/app/api/** |
| API routes (archived) | ~65 | archive/legacy-api-backup/ |
| UI components | 100 | src/app/(auth)/, src/app/(dashboard)/ |
| Test files (TS/TSX) | 86 | src/, tests/ |
| Test files (Python) | ~6 | api_tests/ (pytest suite) |
| Infrastructure files | 19 | .github/workflows/, zp-fetch-service/Dockerfile |
| Context / planning docs | ~55 | context/, chat-onboarding/ |
| CI workflows | 4 | alert-testing.yml, pr-checks.yml, test-coverage.yml, test.yml |
| Onboarding wizard steps | 9 | src/app/(auth)/onboarding/_components/steps/ |
Squad / Agent Status
| ID | Squad / Agent | Scope | Status | Current Work | Blocker |
|---|---|---|---|---|---|
| SQUAD-01 | Platform Core | Auth, session, org management | 🟢 Active | PR #463 — staging CI baseline + orchestrator cost guards | None |
| SQUAD-02 | AI & Chat | /api/ai/* (14 routes), LangGraph, personas | 🟢 Active | PR #462 — chat-artifact action plans M1–M5 | PR #378, #358, #362 open fixes pending |
| SQUAD-03 | Discovery & Maps | Elasticsearch, Mapbox, region pages | 🟡 Unstable | PR #459 — discover maps fix merged | PR #396 mobile fixes still open |
| SQUAD-04 | Portfolio & Analytics | /api/analytics/*, cap-rate engine, watchlist | 🟡 In Progress | PR #218 — watchlist + dashboard fixes (commit 218b8ea) | Dashboard/watchlist regression in recent commits |
| SQUAD-05 | Alerts & Notifications | /api/alerts/* (8 routes), Knock integration | 🟢 Active | Alert testing CI workflow active | — |
| SQUAD-06 | Automation & Pipelines | /api/automation/*, board-config, pipelines | 🟡 Planned | context/PIPELINES_IMPLEMENTATION_ROADMAP.md in progress | Implementation not yet started |
| SQUAD-07 | Design System & QA | Theme, Radix UI, accessibility tests | 🔴 Blocked | PR #458 — theme persistence fix (open) | use-theme wiring to ThemeProvider incomplete |
| SQUAD-08 | Infra & DevOps | Docker, Next.js config, CI guards | 🟢 Active | PR #464 — M1 contract foundations merged | TypeScript/ESLint build errors suppressed in next.config.ts |
Active EPICs
| EPIC ID | Title | Routes / Components | Status | Gate Target | Notes |
|---|---|---|---|---|---|
| EPIC-01 | AI Property Intelligence | /api/ai/property-analysis, /api/ai/commercial-analysis, /api/ai/offer-analysis, /api/ai/maintenance-analysis, /api/actions/analyze-property-investigation | 🟡 In Progress | v0.4 | LangGraph + @langchain/langgraph multi-agent; 14 AI routes active |
| EPIC-02 | Conversational Chat Platform | /api/ai/chat, /api/ai/conversations, /api/ai/conversations/:id, /api/ai/intent, /api/ai/generate-title, /api/ai/suggestions | 🟡 In Progress | v0.4 | Context: context/CHAT_SYSTEM_OVERVIEW.md; PRs #362, #378, #358 still open |
| EPIC-03 | Property Discovery & Search | /api/analytics/markets, Elasticsearch (@elastic/elasticsearch ^8.18.2), Mapbox Draw | 🟡 Unstable | v0.4 | Maps fix merged (PR #459); mobile issues open (PR #396) |
| EPIC-04 | Portfolio & Investment Analytics | /api/analytics/portfolio, /api/analytics/performance, /api/analytics/appreciation-distribution, cap-rate Zod schema | 🟡 In Progress | v0.4 | Cap-rate engine with CapRateCalculationSchema; watchlist regression active |
| EPIC-05 | Alert & Notification System | /api/alerts/* (8 routes), @knocklabs/react ^0.7.25, 9 alert UI components | 🟢 Stable | v0.5 | CI alert-testing workflow live; API tests in tests/api/alerts/ |
| EPIC-06 | Onboarding & Identity | 9-step wizard (geographic-focus, investment-interests, billing-setup, identity-verification, etc.), Clerk (@clerk/nextjs ^6.23.1) | 🟢 Stable | v0.4 | Middesk business verification in legacy archive; free query grant added (commit 3a74c26) |
| EPIC-07 | Automation & Deal Pipelines | /api/automation/analytics, /api/automation/board-config, @dnd-kit/sortable ^10.0.0 | 🔴 Early | v0.5 | Roadmap documented in context/PIPELINES_IMPLEMENTATION_ROADMAP.md |
| EPIC-08 | Design System & Accessibility | components.json, Radix UI full suite, tests/accessibility/, theme audit runner at tools/scripts/theme-audit-runner.ts | 🔴 Blocked | v0.5 | Theme persistence broken (PR #458); npm run theme:audit available |
| EPIC-09 | Analytics Dashboard | /api/analytics-dashboard, /api/analytics/properties, /api/ai/performance-monitoring | 🟡 In Progress | v0.5 | Chart theme-toggle bug fixed (commit 525ab5e); full wiring pending |
| EPIC-10 | Freemium & Monetisation | Free monthly queries grant (/api — commit 3a74c26), billing-setup onboarding step | 🟡 In Progress | v0.5 | Free tier context integration shipped; Stripe routes in legacy archive |
KPIs
| KPI ID | Metric | Description | Current | Target | Status |
|---|---|---|---|---|---|
| KPI-01 | API Surface Coverage | Active routes as % of documented planned routes (50 active vs. ~115 legacy+active total) | 43% | 70% | 🔴 Below target |
| KPI-02 | Test File Ratio | Test files per 100 source files (86 / 500 × 100) | 17.2 | 30.0 | 🔴 Below target |
| KPI-03 | AI Route Depth | Number of distinct AI capability routes under /api/ai/ | 14 | 18 | 🟡 In progress |
| KPI-04 | Onboarding Completion Steps | Fully implemented onboarding wizard steps out of planned total | 9 / 9 | 9 / 9 | 🟢 On target |
| KPI-05 | Open Regression PRs | Count of open PRs with fix: or regression scope | 8 | ≤ 2 | 🔴 Needs attention |
| KPI-06 | CI Workflow Coverage | Active GitHub Actions workflows covering product areas | 4 | 6 | 🟡 In progress |
| KPI-07 | Cap-Rate Engine Validation Coverage | Zod-validated financial fields in CapRateCalculationSchema | 6 fields | 6 fields | 🟢 Complete |
| KPI-08 | Alert Route Test Coverage | API test files covering /api/alerts/* routes | 3 / 8 routes | 8 / 8 | 🔴 Below target |
| KPI-09 | Accessibility Test Files | Dedicated a11y test files in tests/accessibility/ | 2 | 5 | 🟡 In progress |
| KPI-10 | Image Domain Allowlist | External image domains configured in next.config.ts | 21 domains | — | 🟢 Stable |
| KPI-11 | Build Health | TypeScript and ESLint errors suppressed in production build (ignoreBuildErrors: true) | ⚠️ Suppressed | 0 suppressed | 🔴 Risk flag |
| KPI-12 | Free Tier Query Grant | Monthly free AI query allotment shipped for unpaid users | Shipped | Shipped | 🟢 Complete |
| KPI-13 | Persona / Search Template Coverage | Distinct AI persona and search template endpoints live | 2 (/api/ai/personas, /api/ai-search-templates) | 5 | 🟡 In progress |
| KPI-14 | Portfolio Analytics Routes | Live analytics endpoints under /api/analytics/ | 5 | 7 | 🟡 In progress |
| KPI-15 | Theme Audit Automation | Theme audit runner available via npm run theme:audit | Available | Passing | 🔴 Blocked (PR #458) |
Health Indicators
🟢 Healthy
- Alert system — 8 API routes active, Knock notification integration complete, CI workflow
alert-testing.ymloperational, 3 test files covering configure/trigger/route. - Authentication & onboarding — Clerk v6 integrated, 9-step wizard fully implemented, auth guard tests passing (
src/components/core/auth/__tests__/auth-guard.test.tsx). - Cap-rate financial engine —
CapRateCalculationSchema(Zod) validates all 6 financial fields with defaults, type exports clean. - Developer tooling — Husky pre-commit, Prettier, Vitest + Playwright dual-layer test strategy, 4 CI workflows, structured PR templates under
.github/PULL_REQUEST_TEMPLATE/.
🟡 Watch
- AI chat regressions — 5 open PRs (#378, #358, #362, #396, #379) address chat display, icon, and mobile rendering issues. Merging cadence is slow relative to the rate of new features.
- Discovery & maps — Mapbox Draw + Google Maps dual integration; maps fix merged (PR #459) but mobile rendering (PR #396) unresolved. Mock at
tests/__mocks__/mapbox-gl.tsconfirms test isolation, not live coverage. - Portfolio / watchlist — Recent commits (
218b8ea) indicate active regression;WATCHLIST_ACTION_PLAN.mdexists but implementation status is unclear. - Automation pipelines —
@dnd-kit/sortabledependency is live but/api/automation/board-confighas no corresponding test file yet.
🔴 Risk
- Build integrity —
next.config.tssetsignoreBuildErrors: trueandeslint.ignoreDuringBuilds: true. Production builds succeed despite type and lint errors. This masks real defects and must be resolved before v0.5 Beta gate. - Test coverage gap — 86 test files against 500 total files yields 17.2% test file ratio.
tests/api/covers only 10 route families out of 50 active routes (20%). - Theme system — PR #458 (fix theme persistence, wire
use-themetoThemeProvider) is open with no merge date.theme:auditscript exists but cannot pass while persistence is broken. Blocks EPIC-08. - Legacy archive sprawl — ~65 routes in
archive/legacy-api-backup/including Plaid, HelloSign, Middesk, Stripe, and crowdfunding handlers. No documented deprecation or migration plan in activecontext/docs, creating ambiguity about intended scope. - TypeScript path hygiene —
tsconfig.jsonuses"paths": { "@/*": ["./src/*"] }withstrict: true, but build error suppression means strict mode violations are not surfaced in CI.
Dashboard reflects repository state at commit 08ce25f. Refresh after each sprint close.