Real Estate Project Interest Leads & WhatsApp Qualification Funnel
Date: 2026-06-17
Period: 2026-01-01 to 2026-06-17 (H1 2026)
Data Sources: sadb_real_estate_project_interested_users, sadb_real_estate_project_interest_responses, sadb_real_estate_projects, sadb_districts
Summary
Section titled “Summary”The real estate project interest feature (lead capture for development projects — both READY and OFF_PLAN — distinct from regular listings) generated 81,902 leads from 52,458 unique users across 454 projects in H1 2026.
Each lead can trigger a 4-question WhatsApp qualification conversation (purpose, timing, payment method, budget). Of the 23,896 conversations created, 13,026 (54.5%) were fully completed — and once a user answers the first question, 75% finish all four, typically within 2 minutes.
Key findings:
- Lead intent is strong and bottom-of-funnel. 80% of qualified leads want a home to live in, 47% intend to buy within a month, and 58% have a budget under SAR 1M — a high-volume, ready-to-transact, mid-market buyer pool.
- In-app (
aqar) is the dominant and highest-quality source — 43% of all leads and 100% “confirmed” — while paid social (Snapchat, TikTok, Instagram) drives volume at much lower confirmation rates (21–33%). - One source path,
aqar_location(20% of all leads), has no confirmation flow today — it produces zero confirmations and zero WhatsApp conversations by design, so it should be reported separately rather than diluting blended confirmation rates. - Highly concentrated geographically: 68% of leads are for Riyadh projects and 84% for Riyadh + Jeddah combined. By project type, 64% of interest is in READY projects vs 35% OFF_PLAN.
- A returning minority drives volume and converts far better. 74% of users submit just one lead, but the 26% who return generate 53% of all leads and convert dramatically better: 75% ever confirm and 69% complete the WhatsApp flow, vs 48% / 41% for single-lead users. Separately, 11% of all leads are duplicates (same user re-pinging a project they already engaged) — inflating raw “lead” counts. Note the WhatsApp flow fires once per user per rolling 3-month window, not per project — a new response is only created if a user returns >3 months after their last one.
- Reservation/transaction outcomes are not captured here (
has_reserved,transaction_id,qualified,qualified_atare unused columns), so conversion beyond the WhatsApp qualification stage must be measured elsewhere.
Funnel Overview
Section titled “Funnel Overview”| Stage | Count | % of leads |
|---|---|---|
| Leads created | 81,902 | 100% |
| → linked to a WhatsApp conversation | 35,908 | 43.8% |
| → “confirmed” lead | 42,845 | 52.3% |
| → conversation started (≥1 answer) | 17,287 | 21.1% |
| → conversation fully completed (4/4 answers) | 13,026 | 15.9% |
Reservation/transaction outcome is not tracked on these tables — see caveats.
Lead Source Analysis
Section titled “Lead Source Analysis”| Source | Leads | % | Confirmed | Confirm % | Notes |
|---|---|---|---|---|---|
aqar (in-app) | 35,341 | 43.1% | 35,341 | 100% | All have a broker assigned; 20,067 had searcher info requested |
snapchat | 17,969 | 21.9% | 3,812 | 21.2% | Paid social |
aqar_location | 16,755 | 20.5% | 0 | n/a | No confirmation flow built yet (by design) |
tiktok | 6,640 | 8.1% | 2,004 | 30.2% | Paid social |
instagram | 5,197 | 6.3% | 1,688 | 32.5% | Paid social |
Interpretation:
- In-app leads (
aqar) convert to “confirmed” at 100% — these are logged-in, verified users inside Aqar, and they are the only source that gets a broker assigned and searcher info requested. - Paid social leads confirm at only 21–33%. This is expected for top-of-funnel ad traffic, but it means ~70–80% of social-sourced leads never reach a contactable/verified state. Snapchat is the largest social channel by volume but has the lowest confirmation rate of the three.
aqar_locationhas no confirmation flow today. These 16,755 leads (1 in 5 of all leads) never enter the WhatsApp qualification path, so they show 0 confirmations and 0 responses by design — not a bug. Its volume almost exactly matches the 16,752 leads withwhatsapp_status = 'completed'and no response link. Because it can’t be qualified yet, it should be reported separately so it doesn’t drag down blended confirmation/qualification rates — and is the obvious candidate if we want to extend the qualification flow to more lead types.
Geographic Distribution
Section titled “Geographic Distribution”Geography is resolved by joining leads → sadb_real_estate_projects (on project_id) → sadb_districts
(on district_id). The lead table’s own rega_* location columns are empty, so the project record is
the source of truth for city/district.
| City | Leads | % | Confirmed | Confirm % | Projects |
|---|---|---|---|---|---|
| الرياض (Riyadh) | 55,861 | 68.2% | 31,631 | 56.6% | 299 |
| جدة (Jeddah) | 13,047 | 15.9% | 4,693 | 36.0% | 41 |
| الدمام (Dammam) | 4,439 | 5.4% | 2,016 | 45.4% | 41 |
| الخبر (Khobar) | 4,431 | 5.4% | 1,779 | 40.1% | 28 |
| المدينة المنورة (Madinah) | 1,254 | 1.5% | 796 | 63.5% | 12 |
| الظهران (Dhahran) | 1,162 | 1.4% | 874 | 75.2% | 4 |
| مكة المكرمة (Makkah) | 822 | 1.0% | 548 | 66.7% | 7 |
Riyadh is the engine of this product — over two-thirds of all leads and 299 of the 454 active projects. Riyadh + Jeddah together account for 84% of leads. Notably, Jeddah confirms at only 36% vs Riyadh’s 57%, worth a closer look (likely a heavier paid-social mix there).
Project Type
Section titled “Project Type”| Project Type | Leads | % | Confirmed | Confirm % | Projects |
|---|---|---|---|---|---|
| READY | 52,499 | 64.1% | 29,650 | 56.5% | 343 |
| OFF_PLAN | 28,435 | 34.7% | 12,607 | 44.3% | 69 |
| (unspecified) | 968 | 1.2% | 588 | — | 42 |
Interest skews toward READY (move-in-ready) projects, which also confirm at a higher rate (57% vs 44%). OFF_PLAN projects are fewer (69) but draw outsized volume per project — consistent with the near-term purchase intent seen in the qualification answers.
Volume Trend (Monthly)
Section titled “Volume Trend (Monthly)”| Month | Leads | Confirmed | With Response | Unique Users | Active Projects |
|---|---|---|---|---|---|
| 2026-01 | 13,216 | 7,562 | 6,230 | 9,541 | 243 |
| 2026-02 | 12,636 | 7,645 | 6,284 | 8,848 | 250 |
| 2026-03 | 8,766 | 5,399 | 4,683 | 6,271 | 201 |
| 2026-04 | 15,411 | 8,346 | 7,214 | 11,385 | 267 |
| 2026-05 | 21,521 | 8,645 | 7,197 | 15,724 | 311 |
| 2026-06* | 10,352 | 5,248 | 4,300 | 7,794 | 292 |
*June is partial (through the 17th).
The May spike is paid-social-driven. Snapchat leads jumped from 3,506 (April) to 7,527 (May),
with TikTok and Instagram also climbing. In-app (aqar) volume stayed flat (~6,400–7,000/month)
throughout. So growth in total leads is coming almost entirely from ad campaigns — which is also why
the confirmed count grew far less than total leads in May (more low-confirmation social traffic).
Leads by Source by Month
Section titled “Leads by Source by Month”| Month | aqar | aqar_location | snapchat | tiktok | |
|---|---|---|---|---|---|
| 2026-01 | 6,981 | 3,380 | 1,436 | 1,153 | 266 |
| 2026-02 | 6,585 | 2,799 | 2,150 | 546 | 556 |
| 2026-03 | 4,999 | 2,263 | 975 | 355 | 174 |
| 2026-04 | 6,700 | 2,946 | 3,506 | 1,264 | 995 |
| 2026-05 | 6,445 | 3,514 | 7,527 | 2,472 | 1,563 |
| 2026-06* | 3,631 | 1,853 | 2,375 | 850 | 1,643 |
WhatsApp Qualification Conversation
Section titled “WhatsApp Qualification Conversation”The qualification flow asks 4 fixed multiple-choice questions over WhatsApp (Saudi colloquial Arabic, with an English variant). Question set:
- Purpose of purchase — Living / Renting / Resale (وش ناوي تسوي بالعقار؟)
- Expected purchase timing — < 1 month / 1–3 months / > 3 months (متى تشوف نفسك جاهز تشتري؟)
- Payment method — Cash / Bank finance (كيف تفضل تدفع؟)
- Budget — < 1M / 1–3M / > 3M SAR (كم الميزانية اللي حاطها في بالك؟)
Conversation completion
Section titled “Conversation completion”| Status | Conversations | % |
|---|---|---|
| Completed | 13,032 | 54.5% |
| Pending (in progress) | 6,609 | 27.7% |
| Incomplete (abandoned) | 4,255 | 17.8% |
| Total created | 23,896 | 100% |
Step-by-step retention
Section titled “Step-by-step retention”| Step | Answered | Retention from prev. | Retention from Q1 |
|---|---|---|---|
| Q1 (Purpose) | 17,287 | — | 100% |
| Q2 (Timing) | 14,838 | 85.8% | 85.8% |
| Q3 (Payment) | 13,864 | 93.4% | 80.2% |
| Q4 (Budget) | 13,026 | 94.0% | 75.4% |
The biggest drop-off is Q1 → Q2 (14% lost); once past Q2, completion is near-certain (>93% per step). Of the 23,896 conversations created, only 72% ever answer Q1 — getting the user to the first reply is the main leak, not the question count.
Response speed
Section titled “Response speed”- Median time to complete the full conversation: 2 minutes.
- 77% of answered conversations were completed within 1 hour of creation.
- p90: ~4.8 hours; only 1,077 (6%) took longer than 24 hours.
This is a fast, low-friction flow — when users engage, they engage immediately.
Buyer Intent Profile (Completed Conversations)
Section titled “Buyer Intent Profile (Completed Conversations)”These distributions describe the qualified buyer pool and are the most commercially useful output.
Q1 — Purpose of purchase
Section titled “Q1 — Purpose of purchase”| Answer | Count | % |
|---|---|---|
| Living (السكن) | 13,724 | 79.4% |
| Renting (التأجير) | 2,961 | 17.1% |
| Resale (إعادة البيع) | 602 | 3.5% |
→ End-user / owner-occupier demand dominates. Only ~3.5% are flippers.
Q2 — Expected purchase timing
Section titled “Q2 — Expected purchase timing”| Answer | Count | % |
|---|---|---|
| Within 1 month (خلال شهر) | 6,914 | 46.6% |
| 1–3 months | 5,462 | 36.8% |
| More than 3 months | 2,462 | 16.6% |
→ 83% intend to buy within 3 months; nearly half within a month. This is a hot, near-term pipeline.
Q3 — Payment method
Section titled “Q3 — Payment method”| Answer | Count | % |
|---|---|---|
| Bank finance (تمويل بنكي) | 8,802 | 63.5% |
| Cash (نقدًا) | 5,062 | 36.5% |
→ Roughly 2 in 3 need mortgage financing — a clear hook for a financing/pre-approval partnership.
Q4 — Budget
Section titled “Q4 — Budget”| Answer | Count | % |
|---|---|---|
| Under SAR 1M | 7,498 | 57.6% |
| SAR 1–3M | 5,030 | 38.6% |
| Over SAR 3M | 498 | 3.8% |
→ Mid-market concentration: 96% have a budget under SAR 3M, and the majority under SAR 1M.
Per-User Behavior
Section titled “Per-User Behavior”The 81,930 leads come from 52,476 unique users (every lead is tied to a registered user — there
are no anonymous/user_id = 0 leads). Grouping by user reveals that a small, highly engaged minority
drives a disproportionate share of volume.
Important: the WhatsApp qualification flow fires once per user per rolling 3-month window — not once per project or per lead. A user’s response record is reused (and denormalized onto all their leads, so a 174-lead user can show 166 leads carrying the same
response_id) for ~3 months; only if they submit interest in a new project more than 3 months after their last response is a fresh response created. This means lead-level “response” counts are not additive, and engagement must be measured per user (did this user ever respond), not per lead. Within this 5.5-month window only 205 users (0.4%) have a second response — and those pairs sit a median of 200 days apart (204 of 205 ≥90 days), consistent with the 3-month TTL re-triggering after the prior response aged out.
Leads per user
Section titled “Leads per user”| Leads generated | Users | % of users | Total leads | % of leads |
|---|---|---|---|---|
| 1 | 38,820 | 74.0% | 38,820 | 47.4% |
| 2 | 7,993 | 15.2% | 15,986 | 19.5% |
| 3 | 2,610 | 5.0% | 7,830 | 9.6% |
| 4–5 | 1,868 | 3.6% | 8,102 | 9.9% |
| 6–10 | 927 | 1.8% | 6,679 | 8.2% |
| 11–20 | 215 | 0.4% | 3,027 | 3.7% |
| 21+ | 43 | 0.1% | 1,486 | 1.8% |
Three-quarters of users submit exactly one lead, but they account for less than half of all volume. The other half comes from the 26% who come back — and the long tail is real: 258 users (0.5%) generated 11+ leads each, totaling ~4,500 leads.
Repeat users are far more valuable
Section titled “Repeat users are far more valuable”Rates below are measured per user (share of users who ever confirmed / ever responded to the WhatsApp flow), which is the correct denominator given the once-per-user flow:
| Segment | Users | Leads | % users ever confirmed | % users ever responded |
|---|---|---|---|---|
| Single-lead users | 38,820 (74%) | 38,820 (47.4%) | 47.7% | 41.4% |
| Repeat users (2+) | 13,656 (26%) | 43,110 (52.6%) | 74.7% | 69.0% |
Repeat users not only generate the majority of leads, they convert dramatically better: 75% ever confirm vs 48%, and 69% complete the WhatsApp flow vs 41% — a ~27 pt gap on both. Engagement compounds; returning users are warmer, not noisier. (The earlier draft’s lead-level “response rate” understated this, because a repeat user’s many leads share a single response record.)
Comparison-shopping vs duplicate leads
Section titled “Comparison-shopping vs duplicate leads”A user generating many leads can mean two very different things — exploring many projects, or re-pinging the same project. Both happen:
| Metric | Value |
|---|---|
| Avg. distinct projects per user | 1.39 |
| Single-project users | 41,777 (79.6%) |
| Multi-project users (comparison shoppers) | 10,681 (20.4%) |
| Users interested in 5+ projects | 1,087 |
| Duplicate leads (same user + same project, repeated) | 8,974 (11.0% of all leads) |
So 1 in 5 users compares multiple developments, and separately 11% of all leads are duplicate submissions for a project the user had already shown interest in — worth de-duplicating before counting “leads” as demand. (Note this does not create extra WhatsApp traffic: the flow fires only once per user per 3-month window, so duplicate leads are a demand-counting issue, not a messaging-cost one.)
Source spread per user
Section titled “Source spread per user”| Distinct sources | Users | % of users | Total leads |
|---|---|---|---|
| 1 | 46,435 | 88.5% | 59,795 |
| 2 | 5,552 | 10.6% | 18,873 |
| 3 | 445 | 0.8% | 2,823 |
| 4 | 44 | 0.1% | 439 |
Most users (88.5%) arrive through a single channel, but the 11.5% who touch multiple sources generate ~27% of all leads — these are cross-channel users who, for example, see a Snapchat/TikTok ad and later engage in-app. This multi-touch group is small but high-volume.
Power users are genuine high-intent shoppers, not bots
Section titled “Power users are genuine high-intent shoppers, not bots”The top users span many distinct projects, confirm at near-100%, and each completed the WhatsApp flow (1 distinct response within the window, as expected under the 3-month reuse) — they look like serious buyers (or real-estate professionals scouting), not automated noise:
| user_id | Leads | Distinct projects | Sources | Confirmed % | Distinct responses |
|---|---|---|---|---|---|
| 2278082 | 174 | 124 | tiktok, snapchat, aqar | 99% | 1 |
| 5311850 | 88 | 76 | aqar | 100% | 1 |
| 461123 | 69 | 59 | aqar | 100% | 1 |
| 12692 | 66 | 48 | aqar | 100% | 1 |
| 2167415 | 47 | 17 | instagram, snapchat, aqar_location, aqar | 55% | 2 |
The #1 user touched 124 distinct projects across 3 ad channels with 99% of leads confirmed — an extreme but real comparison shopper. Every one of these power users completed the WhatsApp flow exactly once in the window (the “distinct responses” column = 1, consistent with the 3-month reuse design), so high lead counts reflect genuine repeated browsing, not flow-spam. These outliers are rare enough (43 users at 21+ leads) that they don’t distort the aggregate intent picture.
Recommendations
Section titled “Recommendations”- Extend the qualification flow to
aqar_location(20% of leads). This path has no confirmation flow today, so 1 in 5 leads is never qualified. It’s the single largest untapped pool — building a WhatsApp flow for it (or routing it into the existing one) would meaningfully grow the qualified funnel. In the meantime, report it separately so it doesn’t depress blended confirmation rates. - Optimize the Q1 step. The funnel’s main leak is getting users to send their first WhatsApp reply (only 72% do). The question count itself is not the problem — post-Q1 completion is >93%/step.
- Lean into financing. 64% of qualified buyers need bank finance and 47% plan to buy within a month — a strong case for an integrated mortgage pre-approval flow tied to project interest.
- Re-evaluate paid social efficiency. Snapchat drove the May volume spike but confirms at only 21%. Compare cost-per-confirmed-lead (not cost-per-lead) across Snapchat/TikTok/Instagram before scaling spend further.
- Watch Jeddah’s low confirmation rate (36% vs Riyadh’s 57%). As the #2 market by volume, closing that gap is leverage — diagnose whether it’s source mix, broker coverage, or project quality.
- De-duplicate before counting demand. 11% of leads are the same user re-pinging a project they already engaged, so report demand on distinct user-project pairs rather than raw lead counts. (Messaging cost is already controlled — the flow fires only once per user per 3-month window.)
- Re-evaluate the 3-month re-qualification interval. Intent decays faster than the flow refreshes: 47% of users said they’d buy “within a month,” yet their answers are reused for 3 months and across different projects. For high-intent, fast-timeline buyers a shorter refresh (or a per-project re-ask) may capture more accurate budget/timing — worth testing against the cost of extra messages.
Caveats & Methodology
Section titled “Caveats & Methodology”- Query deviation from the original request: the source query omitted
FINALand the_peerdb_is_deleted = 0filter. Per project guidelines these were added to all queries below for CDC-accurate (de-duplicated, non-deleted) results. - Geography comes from the project, not the lead. The lead table’s
rega_*location columns are 100% empty, so city/district were resolved by joining tosadb_real_estate_projects(viaproject_id) →sadb_districts. - Reservation/transaction/qualification columns are unused:
has_reserved,transaction_id,qualified, andqualified_atcarry no data on these tables and were excluded. Conversion past the WhatsApp qualification stage must be measured from other tables. - The
confirmedflag’s meaning differs by source path (auto-true for in-appaqar, conditional for social), so cross-source confirmation rates measure verification/contactability, not a uniform quality bar. - Answer distributions combine the Arabic and English variants of the same option.
- June 2026 is partial (1st–17th).
Queries Used
Section titled “Queries Used”-- Overall funnelSELECT count() AS total_leads, uniqExact(user_id) AS unique_users, uniqExact(project_id) AS unique_projects, countIf(confirmed = true) AS confirmed, countIf(real_estate_project_interest_response_id > 0) AS with_response_linkFROM sadb_real_estate_project_interested_users FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01';
-- Source breakdownSELECT source, count() AS leads, countIf(confirmed = true) AS confirmed, countIf(searcher_info_requested_at > '2000-01-01') AS info_requested, countIf(broker_user_id > 0) AS has_brokerFROM sadb_real_estate_project_interested_users FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01'GROUP BY source ORDER BY leads DESC;
-- Geographic distribution (geo resolved via the project record)SELECT d.city_name AS city, count() AS leads, countIf(iu.confirmed = true) AS confirmed, uniqExact(iu.project_id) AS projectsFROM sadb_real_estate_project_interested_users iu FINALLEFT JOIN sadb_real_estate_projects p FINAL ON p.id = iu.project_idLEFT JOIN sadb_districts d FINAL ON d.district_id = p.district_idWHERE iu._peerdb_is_deleted = 0 AND iu.createdAt > '2026-01-01'GROUP BY city ORDER BY leads DESC;
-- Project type (READY vs OFF_PLAN)SELECT p.project_type, count() AS leads, countIf(iu.confirmed = true) AS confirmedFROM sadb_real_estate_project_interested_users iu FINALLEFT JOIN sadb_real_estate_projects p FINAL ON p.id = iu.project_idWHERE iu._peerdb_is_deleted = 0 AND iu.createdAt > '2026-01-01'GROUP BY p.project_type ORDER BY leads DESC;
-- Monthly trend by sourceSELECT toStartOfMonth(createdAt) AS month, countIf(source='aqar') AS aqar, countIf(source='aqar_location') AS aqar_location, countIf(source='snapchat') AS snapchat, countIf(source='tiktok') AS tiktok, countIf(source='instagram') AS instagramFROM sadb_real_estate_project_interested_users FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01'GROUP BY month ORDER BY month;
-- Conversation completion + step retentionSELECT count() AS total_responses, countIf(length(answer_1) > 0) AS a1, countIf(length(answer_2) > 0) AS a2, countIf(length(answer_3) > 0) AS a3, countIf(length(answer_4) > 0) AS a4FROM sadb_real_estate_project_interest_responses FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01';
-- Answer distributions (per question)SELECT answer_1, count() FROM sadb_real_estate_project_interest_responses FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01' AND length(answer_1) > 0GROUP BY answer_1 ORDER BY count() DESC; -- repeat for answer_2..answer_4
-- Response speedSELECT median(dateDiff('minute', createdAt, last_answered_at)) AS median_min, countIf(dateDiff('hour', createdAt, last_answered_at) < 1) AS within_1hFROM sadb_real_estate_project_interest_responses FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01' AND last_answered_at > '2000-01-01' AND last_answered_at >= createdAt;
-- Leads per user distributionSELECT multiIf(leads=1,'1',leads=2,'2',leads=3,'3',leads<=5,'4-5',leads<=10,'6-10',leads<=20,'11-20','21+') AS bucket, count() AS users, sum(leads) AS total_leadsFROM (SELECT user_id, count() AS leads FROM sadb_real_estate_project_interested_users FINAL WHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01' GROUP BY user_id)GROUP BY bucket ORDER BY min(leads);
-- Duplicate leads (same user + same project)SELECT count() AS total_leads, uniqExact((user_id, project_id)) AS distinct_pairs, count() - uniqExact((user_id, project_id)) AS duplicate_leadsFROM sadb_real_estate_project_interested_users FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01';
-- WhatsApp flow fires once per user per 3-month window: distinct responses per userSELECT distinct_responses, count() AS users FROM ( SELECT user_id, uniqExactIf(real_estate_project_interest_response_id, real_estate_project_interest_response_id > 0) AS distinct_responses FROM sadb_real_estate_project_interested_users FINAL WHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01' GROUP BY user_id)GROUP BY distinct_responses ORDER BY distinct_responses;
-- Verify the 3-month TTL: gap between the 2 responses of users who have 2 (no date filter on responses)WITH multi_users AS ( SELECT user_id FROM sadb_real_estate_project_interested_users FINAL WHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01' GROUP BY user_id HAVING uniqExactIf(real_estate_project_interest_response_id, real_estate_project_interest_response_id > 0) >= 2)SELECT count() AS users, median(gap_days) AS median_gap_days, countIf(gap_days >= 90) AS gap_ge_90dFROM ( SELECT r.user_id, dateDiff('day', min(r.createdAt), max(r.createdAt)) AS gap_days FROM sadb_real_estate_project_interest_responses r FINAL WHERE r._peerdb_is_deleted = 0 AND r.user_id IN (SELECT user_id FROM multi_users) GROUP BY r.user_id HAVING count() >= 2);
-- Repeat vs single-lead users: PER-USER confirm/response rates (ever confirmed / ever responded)SELECT multiIf(lead_cnt=1,'single','repeat') AS segment, count() AS users, sum(lead_cnt) AS leads, round(100*countIf(ever_confirmed)/count(),1) AS pct_users_confirmed, round(100*countIf(ever_responded)/count(),1) AS pct_users_respondedFROM (SELECT user_id, count() AS lead_cnt, maxIf(1, confirmed = true) AS ever_confirmed, maxIf(1, real_estate_project_interest_response_id > 0) AS ever_responded FROM sadb_real_estate_project_interested_users FINAL WHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01' GROUP BY user_id)GROUP BY segment;
-- Power users (distinct responses confirms the once-per-user flow)SELECT user_id, count() AS leads, uniqExact(project_id) AS projects, arrayStringConcat(groupUniqArray(source), ', ') AS sources, round(100*countIf(confirmed = true)/count(),0) AS confirmed_pct, uniqExactIf(real_estate_project_interest_response_id, real_estate_project_interest_response_id > 0) AS distinct_responsesFROM sadb_real_estate_project_interested_users FINALWHERE _peerdb_is_deleted = 0 AND createdAt > '2026-01-01'GROUP BY user_id ORDER BY leads DESC LIMIT 12;