Deal flow
Deal flow
Last updated 5/3/2026
Deal Flow
This document stores the source context for the Deal flow metric.
Definition
| Field | Value |
|---|---|
| KPI-ID | KPI-001 |
| Source | /api/analytics/portfolio → src/app/api/analytics/portfolio/route.ts; /api/analytics/performance → src/app/api/analytics/performance/route.ts; /api/automation/analytics → src/app/api/automation/analytics/route.ts |
| Owner | Product & Growth (ZoomProp platform team) |
| Frequency | Daily (automated pipeline); weekly rollup surfaced in src/app/api/analytics-dashboard/route.ts |
What It Measures
Deal flow quantifies the number of real estate investment opportunities that progress through ZoomProp's end-to-end evaluation pipeline within a given period. A single "deal" begins when a user saves or flags a property from the Discover page and ends when they either submit an offer via /api/ai/offer-analysis, archive the property from their watchlist, or allow it to expire from an active alert filter.
Specifically, the metric aggregates:
- Properties entering the pipeline — unique property records surfaced via
/api/analytics/propertiesthat are added to a user collection (tests/api/collections/route.test.ts) or watchlist (WATCHLIST_ACTION_PLAN.md). - AI-assisted investigations initiated — calls to
/api/actions/analyze-property-investigation(src/app/api/actions/analyze-property-investigation/route.ts) and/api/ai/property-analysis(src/app/api/ai/property-analysis/route.ts), indicating a user has moved from browse to active due diligence. - Offer-stage engagements — requests reaching
/api/ai/offer-analysis(src/app/api/ai/offer-analysis/route.ts), representing deals that have progressed to term evaluation. - Co-investment deals staged — completion of the
co-investment-steponboarding step (src/app/(auth)/onboarding/_components/steps/co-investment-step.tsx) and associated crowdfunding project interactions preserved inarchive/legacy-api-backup/crowdfunding/projects/route.ts.
The cap-rate schema (constMonthlyRent, constVacancy, constOperExpenses, constResEstimate, constClosingCosts — validated via CapRateCalculationSchema in the database schema layer) provides the underwriting signal that gates whether a deal is classified as qualified or unqualified when it enters the pipeline.
Deal flow is the primary leading indicator for platform revenue because subscription tier limits (enforced via archive/legacy-api-backup/check-org-subscription/route.ts and the free-query grant introduced in PR #455 / commit 3a74c26) are directly tied to throughput. A healthy deal-flow rate validates that AI features — including /api/ai/commercial-analysis, /api/ai/maintenance-analysis, and /api/ai/property-inspection-analysis — are converting discovery intent into actionable investment decisions.
Thresholds
| Level | Value | Action |
|---|---|---|
| Healthy | ≥ 50 qualified deals entering the pipeline per active org per week, with ≥ 20 % progressing to /api/ai/offer-analysis | No action required; monitor via src/app/api/analytics-dashboard/route.ts weekly digest and @knocklabs/node notification (@knocklabs/react alert center at src/app/(dashboard)/alerts/_components/alert-center-dashboard.tsx) |
| Warning | 25–49 deals per org per week, or offer-stage conversion dropping below 15 % | Trigger automated alert via /api/alerts/trigger (src/app/api/alerts/trigger/route.ts); review alert filter assignments at /api/alert-filters/assignments; inspect AI suggestion quality through /api/ai/suggestions and /api/ai/suggest-tags |
| Critical | < 25 deals per org per week for two consecutive weeks, or zero offer-analysis calls in a 7-day window | Page on-call via .github/workflows/alert-testing.yml; escalate to Growth team; audit Elasticsearch connectivity (@elastic/elasticsearch ^8.18.2) serving property search at archive/legacy-api-backup/elastic-search/search/route.ts; verify Clerk org session health at /api/auth/active-org and /api/auth/session; review zp-fetch-service/Dockerfile deployment logs for upstream data feed failures |
Related IDs
- BR-001 — Business requirement: platform revenue scales with deal throughput; subscription tiers gate query volume (
archive/legacy-api-backup/check-org-subscription/route.ts,archive/legacy-api-backup/update-org-subscription/route.ts). - BR-002 — Free-query monthly grant for unpaid users must not artificially suppress deal-flow counts; see commit
3a74c26andsrc/app/(auth)/onboarding/_components/steps/billing-setup-step.tsx. - MON-001 — OpenTelemetry trace instrumentation (
@opentelemetry/api ^1.9.0,@opentelemetry/sdk-trace-base ^2.0.1) capturing latency on/api/ai/property-analysisand/api/ai/offer-analysis; spans feed the performance dashboard at/api/ai/performance-monitoring. - MON-002 — Alert history and delivery monitoring via
/api/alerts/history(src/app/api/alerts/history/route.ts) and preferences at/api/alerts/preferences; CI alert-testing gate in.github/workflows/alert-testing.yml. - UJ-001 — Investor onboarding journey:
investment-interests-step.tsx→geographic-focus-step.tsx→co-investment-step.tsx→portfolio-setup-step.tsx; each completed step signals intent and raises expected deal-flow baseline for that org. - UJ-002 — Discover-to-watchlist journey: Mapbox (
@googlemaps/js-api-loader ^1.16.10,@mapbox/mapbox-gl-draw ^1.5.0) property discovery → collection save → AI investigation → offer analysis; end-to-end covered bytests/api/properties/route.test.tsandtests/api/collections/route.test.ts. - API-001 —
/api/analytics/portfolio(src/app/api/analytics/portfolio/route.ts) — primary data source for portfolio-level deal counts. - API-002 —
/api/actions/analyze-property-investigation(src/app/api/actions/analyze-property-investigation/route.ts) — investigation-stage event source. - API-003 —
/api/ai/offer-analysis(src/app/api/ai/offer-analysis/route.ts) — offer-stage conversion event source. - API-004 —
/api/automation/analytics(src/app/api/automation/analytics/route.ts) — automation pipeline throughput; cross-referenced with board config at/api/automation/board-configto confirm deal-stage transitions. - TEST-001 —
tests/api/portfolio/route.test.ts— unit coverage for portfolio aggregation logic feeding KPI-001. - TEST-002 —
tests/api/properties/route.test.tsandtests/api/search/route.test.ts— validate that property ingestion feeding the top of the deal funnel is consistent. - TECH-001 —
zp-fetch-service/Dockerfile— containerised fetch service providing upstream property data; outages directly reduce deal-flow input volume.