CONDO·PSM148,200▲+2.1%
BANGTAO·MID112,000▲+4.3%
RAWAI·LOW68,000▲+0.5%
KAMALA·LUX210,000▼−0.4%
ABSORPTION3.8%/mo
PROJECTS317▲+4
VILLA·HIGH108,000▲+3.1%
DQS·AVG78/100▲+2
MAKUHA INTELLIGENCE · WK10 2026 · PHUKET OFF-PLAN
VIEW:
2026-03-11 07:04 ICT
Market Overview: Week 10
7-day snapshot · March 3–10, 2026 · Phuket off-plan segment · all product types
Total Projects
317
▲ +4 this week
Avg ฿/sqm · Condo
148k ฿
▲ +2.1% vs last week
Avg Absorption Rate
3.8%/mo
→ unchanged
Projects w/o Price >30d
23
▲ +3 require outreach
Low · Condo <8M ฿
84proj
26% of market
Mid · Condo 8–15M ฿
112proj
35% · largest seg
High · Condo 15–20M ฿
67proj
21% of market
Luxury · Condo 20M+ ฿
38proj
▲ +2 this week
Villas (all segments)
16proj
5% of market
Market Structure by Type
Projects by product type
New Projects Added — Last 8 Weeks
By product type (stacked)
ModePurposeTabs / NavigationAudience
📋 Weekly Report7-tab weekly market snapshot. Market Overview · Segmentation · Price Trends · Sales Velocity · Projects · Signals · Data Schema① – ⑦ tabs in nav barAnalyst · client · team
📊 Platform DashboardAggregated live analytics across all 300+ projects. Always current, not time-boxed.① Market · ② Segments · ③ Unit Mix · ④ Velocity · ⑤ FinancialsInternal analytics
🗂 Project PassportFull per-project intelligence card. Filter by Type → select Project → renders Block A/B/C, charts, AI insight, unit table, DQS.Type dropdown → Project dropdown → dynamic renderSales · developer · investor
📈
Bangtao Mid-segment Condo: +4.3% ฿/sqm this weekOrigin Plug & Play and Mono both raised prices. Possible Phase 2 cycle trigger.
Rawai: 3 new projects — 2.5× above 8-week average2 of 3 are untracked developers. Segment classification pending (no price lists yet).
🔴
Luxury segment: Absorption rate dropped to 1.2%/mo (-0.4% vs last week)Title Kamala Sea unsold inventory at 70%. Lowest velocity in 12 weeks.
Market Segments: Low / Mid / High / Luxury
Segment assigned by 51% rule · Condo and Villa thresholds differ · updated weekly from price snapshots
51% Rule — Segment Assignment Logic
A project is classified into a segment when ≥51% of its total units fall within that price band.
If no single band reaches 51%, the project is tagged mixed and shown in all applicable segments with a weight.

Condo thresholds: Low <8M ฿ · Mid 8–15M ฿ · High 15–20M ฿ · Luxury 20M+ ฿
Villa thresholds: Low <15M ฿ · Mid 15–35M ฿ · High 35–90M ฿ · Luxury 90M+ ฿
Source field: price_snapshots.units[].price_thb — count per band / units_total
Condo — Segment Distribution
Projects by segment · current week
Villa — Segment Distribution
Projects by segment · current week
Segment Mix by District — Condo
Share of Low / Mid / High / Luxury projects per district
SegmentThresholdProjectsTotal UnitsMedian ฿/sqmAbsorption/moAvg Unit Price฿/sqm Δ WoW
Low<8M ฿849,84072,0005.8%5.4M ฿+1.2%
Mid8–15M ฿11214,320112,0004.1%11.2M ฿+2.3%
High15–20M ฿675,360148,0003.2%17.4M ฿+2.1%
Luxury20M+ ฿381,520210,0001.2%28.5M ฿-0.4%
SegmentThresholdProjectsTotal VillasMedian ฿/sqm (BUA)Absorption/moAvg Villa Price฿/sqm Δ WoW
Low<15M ฿38442,0003.4%11M ฿0%
Mid15–35M ฿615668,0004.2%24M ฿+1.8%
High35–90M ฿596108,0002.9%58M ฿+3.1%
Luxury90M+ ฿218195,0000.8%120M ฿0%
Origin Plug & Play · Bangtao · 288 units total
Unit count per price band → 51% rule → segment assigned = Mid
8%
63% ✓
22%
7%
Low <8M: 23 units (8%)
Mid 8–15M: 181 units (63%) ← assigned segment
High 15–20M: 63 units (22%)
Luxury 20M+: 21 units (7%)
฿/sqm Dynamics Over Time
Weekly snapshots · median ฿/sqm · by district, segment, and product type
Median ฿/sqm by District — Condo · 12 Weeks
Each point = median of psm_median across all active price lists in district for that week
Median ฿/sqm by Segment — Condo · 12 Weeks
Low / Mid / High / Luxury trend lines
฿/sqm Range by Product Type
Min / Median / Max · current week
ProjectDistrictTypeSegment฿/sqm Prev฿/sqm CurrΔ WoWSnapshot
Botanica ForestaBangtaoVillaHigh142,000148,200+4.4%06 Mar
Origin Plug & Play 2BangtaoCondoMid98,500103,000+4.6%05 Mar
Title Kamala SeaKamalaCondoLuxury125,000121,500-2.8%04 Mar
Anchan TropicanaRawaiVillaHigh155,000158,500+2.3%03 Mar
Absorption Rate · by Segment, Type & Unit Mix
Units sold per month · derived from inventory snapshots + sales launch date · segmented by 51% rule
● Low
5.8%
units/mo as % of inventory
▲ +0.3% vs last week
● Mid
4.1%
units/mo as % of inventory
▲ +0.1% vs last week
● High
3.2%
units/mo as % of inventory
→ unchanged
● Luxury
1.2%
units/mo as % of inventory
▼ -0.4% vs last week
Absorption Rate by Segment · 8-Week Trend
Condo only · Low / Mid / High / Luxury
Absorption Rate by District · Radar
Median across projects per district · current week
Units Sold per Month by Type · Studio / 1BR / 2BR / 3BR+ — Last 8 Weeks
Stacked bar · absolute units sold per week aggregated across all tracked projects
Unit TypeUnits AvailableUnits Sold (mo)Absorption/moAvg Days on MarketSegment MixAvg Price
Studio1,8401246.7%14dLow3.8M ฿
1 Bedroom4,2102315.5%18dMid8.9M ฿
2 Bedroom3,8901483.8%26dHigh16.2M ฿
3 Bedroom+920182.0%54dLuxury29.4M ฿
Penthouse18421.1%90d+Luxury48M ฿
Villa TypeVillas AvailableSold (mo)Absorption/moAvg Land sqmAvg BUA sqmSegmentAvg Price
2 Bedroom4249.5%280180Low12M ฿
3 Bedroom13885.8%420260Mid26M ฿
4 Bedroom6423.1%620380High62M ฿
5 Bedroom+1800.0%1,200650Luxury115M ฿
Added This Week: 4 Projects
Auto-detected by scraper · segment classification requires price list · coverage gaps flagged
Active Projects by District
Data Quality Score Distribution
0–100 · completeness: has price list, launch date, unit breakdown, verified developer
ProjectDistrictDeveloperTypeSegmentDays w/o PriceContactStatus
Title Kamala BayKamalaRhom Bho PropertyCondopending47@sales_title_thAwaiting
Mono Loft RawaiRawaiMono DevelopmentCondopending31No Contact
Skypark CelesteKo KaeoCondoduplicate?38Verify
Auto-Detected Deviations
Compares current vs previous snapshot · thresholds configurable · segment-aware detection
Detection logic: Δ ฿/sqm >3%/week · Absorption shift >1.5%/mo · Available units increased (cancellation) · Segment boundary crossing (price list update moves project to new segment) · New developer · Data gap >30d
🟢
Bangtao Mid-Condo: 3 developers raised prices simultaneouslyOrigin, Mono, Botanica all updated price lists this week. Likely demand-driven or infrastructure trigger. Monitor next 2 weeks for segment boundary crossing.
🟡
Rawai: 3 new projects, 2 unclassified (no segment yet)No price lists received. Segment remains unknown. Agent A2 outreach queued.
🔴
Title Kamala Sea: price -2.8% → approaching High/Luxury boundaryIf next snapshot confirms <15M ฿ for 51% of units, project reclassifies from Luxury → High. Absorption already lowest in segment.
🟡
Laguna Sky Park: +2 available units — booking cancellation detectedunits_available[t] > units_available[t-1]. Absorption rate recalculated. No segment impact.
🔴
23 projects stale >30 days — segment assignments unverifiableCoverage dropped to 72%. 8 of 23 are in Luxury segment — highest risk of misclassification.
Platform Data Structure
Every report metric maps to a specific field · segmentation derived from units[] array
projects — master record
// PostgreSQL: projects table { "project_id": "uuid-v4", "name": "Origin Plug & Play", "developer": "Origin Property Public Co.", "district": "Bangtao", "sub_district": "Cherngtalay", "product_type": "condo", // condo|villa|townhouse|mixed "freehold_available": true, "units_total": 288, "floors": 8, "buildings": 3, "status": "selling", "sales_launch_date": "2024-01-15", "completion_date": "2026-09-01", "has_sales_kit": true, // A2 received a price file "has_contacts": true, // A1b found a sales contact "last_price_date": "2026-03-05", "data_quality_score": 87, // 0–100 · 7-criteria model "trust_index": 89 // manual analyst input · methodology TBD }
source_files — file journal (physical copy guard)
// Every incoming price file = one record — two links stored { "id": "uuid-v4", "project_id": "ref → projects", "received_at": "2026-03-05T09:12:00Z", "file_date": "2026-03-04", "gdrive_url_original": "developer's folder", "gdrive_url_copy": "/incoming/origin_pp_20260305.pdf", "file_format": "pdf", // pdf|xlsx|jpg "source_channel": "whatsapp", "parse_status": "ok", // pending|ok|needs_review|failed "changed_vs_previous": true, // triggered new snapshot "confidence_avg": 0.94 }
price_snapshots — immutable record per update
// New record each update — never overwritten { "snapshot_id": "uuid-v4", "project_id": "ref → projects", "snapshot_date": "2026-03-05", "source_file_id": "ref → source_files", "units_total": 288, "units_available": 41, "units_sold": 247, "units_reserved": 0, "psm_min": 88000, "psm_max": 142000, "psm_median": 103000, "psm_delta_vs_prev": 500, // Δ ฿/sqm vs previous snapshot // Segment bands — computed from units[] "band_low_count": 23, // <8M ฿ "band_mid_count": 181, // 8–15M ฿ ← 63% → segment = mid "band_high_count": 63, // 15–20M ฿ "band_lux_count": 21, // 20M+ ฿ "segment_assigned": "mid", "segment_changed": false, // true = crossing event → anomaly "confidence_score": 0.91, "cancellation_detected": false, // units_available increased "promo_active": false // price_promo_thb set on any unit }
units — per-unit row (separate table, not JSONB)
// Separate table — enables cross-project queries on unit level { "unit_ref": "A-301", "unit_type": "1BR", // studio|1BR|2BR|3BR|penthouse · OR villa_2bed … villa_5bed "area_sqm": 68.5, // NSA for condo, BUA for villa "land_sqm": null, // villas only "floor": 3, // null for villas "view": "pool", // sea|pool|garden|city|null "ownership_type": "leasehold", // always explicit — leasehold|freehold "price_thb": 9800000, // base price — always present "price_list_thb": 10200000, // list price before discount (if shown) "price_promo_thb": null, // promo price if separately listed "price_per_sqm": 143066, "status": "available" // available|sold|reserved|needs_review }
Derived fields — computed by Agent A4
// Not stored. Recalculated each report generation. segment = band with count ≥ ceil(units_total × 0.51) → if no band qualifies: segment = "mixed", shown in all applicable absorption_rate_monthly = (units_sold / units_total) / months_since_launch × 100 psm_delta_weekly = (snapshot_curr.psm_median − snapshot_prev.psm_median) / snapshot_prev.psm_median × 100 segment_crossing_flag = snapshot_curr.segment_assigned ≠ snapshot_prev.segment_assigned → anomaly: "segment_reclassified" data_quality_score = has_price_list_fresh_14d(+25) + has_unit_breakdown(+20) + has_launch_date(+15) + developer_verified(+15) + units_total_known(+10) + has_contacts(+10) + has_completion_date(+5) trust_index = // manual input by analyst — not computed. Methodology: next iteration. llm_provider = "Claude API" // normalization + Vision + Link Extractor + A4 narrative
5 tables in PostgreSQL: projects · source_files · price_snapshots · units · contacts. Segment assigned per snapshot — so segment history is preserved. source_files stores both the original developer link and our physical Drive copy — data never lost if developer deletes their folder. Existing Sales Kits → parse into price_snapshots with snapshot_date = file date.
Telegram Bot — Command Reference
// All commands available in bot. Admin-only: /run /report → Latest weekly PDF report /status → Agent status: last run · errors · coverage rate /run [agent] → Manual agent trigger (admin only) · A1 / A2 / A3 / A4 / A5 /new_project [url] → Urgently queue project for A1 /passport [name|id] → PDF passport of specific project /passport_compare [p1] [p2] → Side-by-side comparison of two projects /passport_list [district] → All passports in district with key metrics
Implementation phases: Фаза 0.5 (Excel cleanup → Supabase import · 3–5 days) → Фаза 0 (infra: Python · Supabase 5 tables · Sheets API · Telegram skeleton · Claude API · 1–2 wks) → Фаза 1 (A1 scraper + A1b · 3–4 wks) → Фаза 2 (A3 parser + A2b link extractor · 3–4 wks) → Фаза 3 (A4 analytics + first passports + A5 · 2–3 wks) → Фаза 4 (A2 communicator · 2–3 wks) → Фаза 5 (weekly cadence · alerts · /passport · 2–3 wks). Total: ~3–4 months to production.
Select a project type and project above
Full passport will render here
Phuket Off-Plan Market · All Segments
Aggregate view across all tracked projects · updated weekly from price snapshots
Total Projects
317
All types
Total Units Tracked
31,040
incl. sold
Units Available
9,240
30% of total
Units Sold (all time)
21,800
70% absorbed
Total Market Value
₿142B
฿ total GDV
Projects by Type
Project Launches by Quarter
Number of new project launches over time
Completions by Quarter
Expected handovers
Market Value by Segment · Condo
Total GDV per segment (฿ billion)
Units Sold per Month · Last 12 Months
All types combined · with type breakdown
Low · Mid · High · Luxury — Full Breakdown
Condo and Villa segments · 51% unit-count rule · historical segment migration tracked
Segment Share Over Time — Condo Projects
% of active projects per segment · quarterly
Average ฿/sqm per Segment · 12-Week Trend
SegmentProjectsUnits TotalUnits Avail.Absorption/moMedian ฿/sqmGDV (฿B)% of Market GDV
Low849,8402,4605.8%72,00053.1B37%
Mid11214,3204,0104.1%112,00057.6B41%
High675,3602,1453.2%148,00022.4B16%
Luxury381,5206271.2%210,0008.6B6%
Condo Unit Types · Villa Bedroom Types
Breakdown by unit type · count, share, area, price range · across all tracked projects
Unit Count by Type
Unit Mix — Count & Share
Studio
18%
5,587
1 Bedroom
38%
11,795
2 Bedroom
31%
9,622
3 Bedroom+
10%
3,104
Penthouse
3%
932
Unit TypeCountShareArea sqm (min/avg/max)Price THB (min/avg/max)฿/sqm (min/avg/max)Dominant Seg
Studio5,58718%24 / 31 / 422.1M / 3.8M / 6.2M72k / 91k / 132kLow
1 Bedroom11,79538%35 / 52 / 744.8M / 8.9M / 16M84k / 108k / 168kMid
2 Bedroom9,62231%60 / 86 / 1249.2M / 16.2M / 28M98k / 132k / 198kHigh
3 Bedroom+3,10410%96 / 142 / 21018M / 29.4M / 58M128k / 168k / 240kLuxury
Penthouse9323%180 / 260 / 48028M / 48M / 120M142k / 192k / 310kLuxury
Villa TypeCountLand sqm (min/avg/max)BUA sqm (min/avg/max)Price THB (min/avg/max)฿/sqm BUA (avg)Segment
2 Bedroom42200 / 280 / 380140 / 180 / 2209M / 12M / 18M67,000Low
3 Bedroom138280 / 420 / 680200 / 260 / 38014M / 26M / 42M100,000Mid
4 Bedroom64450 / 620 / 980280 / 380 / 52032M / 62M / 98M163,000High
5 Bedroom+18900 / 1,200 / 2,400480 / 650 / 98085M / 115M / 180M177,000Luxury
Absorption Analysis — Full Market
Monthly absorption by segment · unit type · district · project ranking
Absorption Rate by Segment · 12-Month Trend
Units Sold by Type · Monthly · 12 Months
Project Absorption Ranking — All Active Projects · Min 20 Units
Color = segment · green = top quartile · red = bottom quartile
ROI · Rental Yield · Price Forecast
ROI from price appreciation + rental yield (AirDNA data) · forecast from price list history
Avg Rental Yield · Condo
6.2%
▲ +0.3% vs Q4 2025
Avg Price Appreciation · YoY
8.4%
▲ Bangtao led +12%
Avg ROI (yield + capital)
14.6%
→ stable
Luxury Yield
4.1%
▼ lowest segment
Price Forecast · Condo · By Segment · +12 Months
Based on historical ฿/sqm rate of change from price list snapshots
Rental Yield by District · Current Quarter
AirDNA data integrated · annual gross yield estimate
Data sources for financials: ฿/sqm trends from price_snapshots · rental yield from AirDNA API (occupancy × ADR × 365 / purchase price) · ROI = rental yield + annual capital appreciation · Price forecast = linear regression on psm_median time series per segment