ZoomProp

Deal flow

Deal flow

Last updated 5/3/2026

Deal Flow

This document stores the source context for the Deal flow metric.

Definition

FieldValue
KPI-IDKPI-001
Source/api/analytics/portfoliosrc/app/api/analytics/portfolio/route.ts; /api/analytics/performancesrc/app/api/analytics/performance/route.ts; /api/automation/analyticssrc/app/api/automation/analytics/route.ts
OwnerProduct & Growth (ZoomProp platform team)
FrequencyDaily (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:

  1. Properties entering the pipeline — unique property records surfaced via /api/analytics/properties that are added to a user collection (tests/api/collections/route.test.ts) or watchlist (WATCHLIST_ACTION_PLAN.md).
  2. 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.
  3. 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.
  4. Co-investment deals staged — completion of the co-investment-step onboarding step (src/app/(auth)/onboarding/_components/steps/co-investment-step.tsx) and associated crowdfunding project interactions preserved in archive/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

LevelValueAction
Healthy≥ 50 qualified deals entering the pipeline per active org per week, with ≥ 20 % progressing to /api/ai/offer-analysisNo 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)
Warning25–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 windowPage 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
  • 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 3a74c26 and src/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-analysis and /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.tsxgeographic-focus-step.tsxco-investment-step.tsxportfolio-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 by tests/api/properties/route.test.ts and tests/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-config to confirm deal-stage transitions.
  • TEST-001tests/api/portfolio/route.test.ts — unit coverage for portfolio aggregation logic feeding KPI-001.
  • TEST-002tests/api/properties/route.test.ts and tests/api/search/route.test.ts — validate that property ingestion feeding the top of the deal funnel is consistent.
  • TECH-001zp-fetch-service/Dockerfile — containerised fetch service providing upstream property data; outages directly reduce deal-flow input volume.