Loading…
Back to demo
How It Works

Methodology & Data Sources

How we collect, clean, secure, and query Dubai real-estate data for the IRETP demo.

Data Sources

Dubai Pulse Transactions
Hugging Face - viewit-ai/full-dubai-pulse
100,000 rows

Official Dubai Land Department transaction feed (sales, mortgages, grants, lease-to-own). We loaded a 100,000-row stratified sample for the demo - enough to cover every transaction type, area, and year while keeping query latency under ~1s on the demo Postgres tier and AI Gateway token costs predictable. The same pipeline scales to the full 1.5M+ rows; it's a config flag, not a code change.

View source
Dubai Real Estates 1969–2023
Kaggle - zainabhejairi
423,677 rows

Historical DLD dataset spanning 1969–2023. Loaded into kaggle_dld_transactions_historic (250K-row sample), kaggle_dld_valuations (73K rows, full), and kaggle_dld_rents (100K-row Ejari sample).

View source
Dubai RE Transactions Dataset
Kaggle - alexefimik
1,047,965 rows

Multi-year bilingual (Arabic + English) DLD transactions dump. Loaded in full into kaggle_dre_transactions via Kaggle API + psql COPY.

View source
UAE Rental Market Listings
Kaggle - azharsaleem
73,742 rows

UAE rental listings scrape (Bayut/Dubizzle-style). Loaded in full into kaggle_uae_rental_listings - powers rental-yield and price-vs-rent queries alongside the transaction data.

View source
WealthIQ Developer Scores
WealthIQ (scraped via Firecrawl)
97 rows

Public league table of 97 Dubai developers with A+ to D grades derived from DLD completion rate, average delivery delay, escrow flags and litigation history. Scraped with Firecrawl on demand, reconciled against DLD project/transaction counts, then re-scored locally using the six-factor RFP weighting (on-time delivery 25% · RERA compliance 20% · units delivered 15% · completed projects 15% · complaint index 15% · ESG 10%). Powers the Developer Scorecard page.

View source

Ingestion Pipeline

1

Download

Dubai Pulse Parquet is fetched directly from Hugging Face. Kaggle sources are listed and await credential-based download.

2

Sample & Filter

DuckDB is used to read Parquet/CSV, apply stratified sampling (100k rows), and filter out malformed or incomplete records.

3

Normalize

Columns are renamed to a consistent schema: price fields in AED, areas in sqft, dates as ISO 8601, and categorical fields lower-cased and trimmed.

4

Load to Postgres

Cleaned data is written to Postgres via bulk COPY. Indexes are built on date, area, property type, and procedure for fast query performance.

Database Schema

Eight tables across four data sources. The AI chat tool can query any of them; individual pages mostly stick to dld_transactions, kaggle_dre_transactions, kaggle_dld_rents, and kaggle_uae_rental_listings.

dld_transactions~100,000 rows
2008 → 2024

Stratified sample of the Dubai Pulse DLD feed - sales, mortgages, grants, lease-to-own. The cleanest recent feed; used by Projects, Speculation, Seasonality.

ColumnTypeDescription
idBIGSERIALUnique row identifier
procedure_nameTEXTTransaction type (Sell, Mortgage, Grant, Lease to Own…)
transaction_dateDATEDate the transaction was recorded
property_typeTEXTVilla, Unit, Building, Land…
property_sub_typeTEXTFlat, Townhouse, Office, Hotel Apartment…
property_usageTEXTResidential, Commercial, etc.
area_nameTEXTDLD community / district
building_nameTEXTNamed building or tower
master_projectTEXTLarger development project name
nearest_landmarkTEXTNearby landmark
nearest_metroTEXTClosest Dubai Metro station
nearest_mallTEXTClosest major shopping mall
bedroomsTEXTStudio, 1 B/R, 2 B/R…
parkingsINTEGERNumber of parking spaces
built_up_area_sqftNUMERICProperty size in square feet
selling_price_aedNUMERICTotal transaction value in AED
sale_price_per_sqftNUMERICDerived AED per sqft for sales
rent_value_aedNUMERICRent value (only set for rental procedures)
rent_price_per_sqftNUMERICDerived AED per sqft for rentals
kaggle_dre_transactions~1,047,965 rows (full)
2000 → 2024

Full bilingual (Arabic + English) DLD transactions dump from Kaggle (alexefimik). The widest single transaction table.

ColumnTypeDescription
instance_dateTEXTTransaction date (mixed DD-MM-YYYY / D/M/YYYY)
procedure_name_enTEXTTransaction type in English
property_type_enTEXTVilla, Unit, Land, Building
property_sub_type_enTEXTFlat, Townhouse, Hotel Apartment…
property_usage_enTEXTResidential, Commercial, etc.
area_name_enTEXTDLD community / district
building_name_enTEXTNamed building or tower
master_project_enTEXTMaster development name
rooms_enTEXTBedroom string (Studio, 1 B/R…)
procedure_areaTEXTRegistered area (sqm)
actual_worthTEXTTransaction value in AED
meter_sale_priceTEXTAED per sqm for sales
rent_valueTEXTRental value where applicable
meter_rent_priceTEXTAED per sqm for rentals
kaggle_dld_transactions_historic~250,000-row sample
1969 → 2023

Long-range historical DLD transactions (Kaggle - zainabhejairi). Use for pre-2010 / multi-decade trend questions.

ColumnTypeDescription
instance_dateTEXTTransaction date (mixed formats)
procedure_name_enTEXTTransaction type
property_type_enTEXTHigh-level category
property_sub_type_enTEXTSub-category
area_name_enTEXTCommunity / district
master_project_enTEXTMaster development name
rooms_enTEXTBedroom string
procedure_areaTEXTRegistered area (sqm)
actual_worthTEXTTransaction value in AED
meter_sale_priceTEXTAED per sqm
kaggle_dld_valuations~73,677 rows (full)
~2010 → 2023

DLD-registered bank/regulatory valuations. Powers the Valuation gap detector (valuation vs realised sale price).

ColumnTypeDescription
procedure_yearTEXTYear of valuation
instance_dateTEXTValuation date
property_type_enTEXTVilla, Unit, Land…
area_name_enTEXTCommunity / district
actual_worthTEXTValuation amount in AED
actual_areaTEXTProperty area (sqm)
property_total_valueTEXTTotal assessed value in AED
kaggle_dld_rents~100,000-row sample (of 6.5M Ejari)
2012 → 2019 (snapshot)

Ejari rental contracts - new vs renewal pricing. Heavily 2018-2019 weighted (see Rents page disclaimer).

ColumnTypeDescription
contract_start_dateTEXTLease start
contract_end_dateTEXTLease end
contract_amountTEXTTotal contract value in AED
annual_amountTEXTAnnualised rent in AED
contract_reg_type_enTEXTNew vs Renew
area_name_enTEXTCommunity / district
ejari_property_type_enTEXTUnit, Villa…
ejari_property_sub_type_enTEXTBedrooms encoded here (Studio, 1bed room+Hall…)
property_usage_enTEXTResidential / Commercial
tenant_type_enTEXTPerson / Company
actual_areaTEXTLeased area (sqm)
kaggle_uae_rental_listings~73,742 listings (full)
Current / recent listings

Bayut/Dubizzle-style asking-rent scrape across UAE. Powers the rental Map and Metro premium pages.

ColumnTypeDescription
addressTEXTListing address
rentTEXTAsking rent in AED
rent_per_sqftTEXTAED per sqft
bedsTEXTBedrooms
bathsTEXTBathrooms
typeTEXTApartment, Villa, Townhouse…
area_in_sqftTEXTListed area in sqft
frequencyTEXTYearly / Monthly
furnishingTEXTFurnished / Unfurnished
purposeTEXTFor rent / For sale
cityTEXTDubai, Abu Dhabi, Sharjah, Ajman
locationTEXTNeighbourhood
latitudeTEXTGeocoded latitude
longitudeTEXTGeocoded longitude
posted_dateTEXTDate listing was posted
dre_project_sales_summaryAggregated rollup
Derived from kaggle_dre_transactions

Pre-aggregated project-level sales (count, total volume, avg AED/sqft). Backs the Projects page for fast loads.

ColumnTypeDescription
master_projectTEXTProject name
area_nameTEXTCommunity / district
yearINTEGERYear bucket
reg_typeTEXTOff-plan vs Ready
transactionsINTEGERCount of sales
total_volume_aedNUMERICSum of transaction values
avg_price_aedNUMERICAverage sale price
avg_price_per_sqftNUMERICAverage AED per sqft
developers~12 seeded, extensible to 97
Q2 2026 snapshot

Developer scorecard — six-factor RFP rating (on-time delivery, RERA compliance, units delivered, completed projects, complaint index, ESG). Powers the Developers page.

ColumnTypeDescription
slugTEXTStable developer identifier
nameTEXTDeveloper display name
foundedINTEGERYear the developer was founded
tierTEXTLetter grade (A+ … D)
rankINTEGERPosition in the league table
overall_scoreNUMERICWeighted composite score 0–100
score_on_time_deliveryNUMERICOn-time handover rate score (weight 25%)
score_rera_complianceNUMERICRERA audit / escrow discipline score (weight 20%)
score_units_deliveredNUMERICVolume-normalised units delivered score (weight 15%)
score_completed_projectsNUMERICLifetime completed projects score (weight 15%)
score_complaint_indexNUMERICInverse of complaints per 1,000 units (weight 15%)
score_esgNUMERICLEED / Estidama certification coverage score (weight 10%)
projects_deliveredINTEGERHandover-signed projects
projects_announcedINTEGERTotal announced projects
units_deliveredINTEGERTotal handed-over units
avg_delay_daysINTEGERMean delivery delay vs promised handover
escrow_flagsINTEGERRERA escrow-account flags
complaints_per_1000NUMERICRERA-logged complaints per 1,000 units
esg_certified_pctNUMERIC% of portfolio with LEED / Estidama
rera_ratingTEXTRERA compliance grade (A+ … C)
source_urlTEXTWealthIQ source page
scraped_atTIMESTAMPTZLast Firecrawl refresh
datasetsMetadata
Internal

Registry of ingested datasets - source URL, row counts, last refresh. Used by the ingestion pipeline, not user-facing.

ColumnTypeDescription
slugTEXTStable dataset identifier
titleTEXTDisplay name
source_urlTEXTOrigin (Kaggle / HF / etc.)
row_countBIGINTLoaded row count
last_loaded_atTIMESTAMPTZMost recent refresh

Security & AI Query Model

Read-Only SQL Guard

The AI does not write to the database. All queries pass through a run_sql PostgreSQL function with three layers of protection:

  1. Regex gate - queries must start with SELECT or WITH.
  2. Keyword blacklist - INSERT, UPDATE, DELETE, DROP, ALTER, and similar are blocked.
  3. Row cap - results are aggregated through jsonb_agg which caps output at 500 rows per query.

AI-to-SQL Flow

When you ask a question in natural language, the following happens:

  1. The AI receives the database schema and your question.
  2. It drafts a PostgreSQL SELECT query tailored to the schema.
  3. The query is executed via the read-only run_sql function.
  4. If the result is numeric or time-series, the AI emits a chart JSON block and the UI renders a Recharts visualization inline.
  5. Otherwise, the raw rows are shown in a sortable data table.

Tools & Menu Items

Each page in the VALUS demo is a focused analytical module. Below is what every tool does, how it works, and when to use it.

Chat

/

Natural-language Q&A over the full DLD dataset. Ask anything in plain English (or Arabic) and get back a SQL-backed answer, chart, or data table.

How it works: Your question is sent to an LLM together with the database schema. The model drafts a read-only PostgreSQL SELECT query, which is validated and executed against the live dataset. Numeric or time-series results are rendered as Recharts visualisations; tabular results appear in a sortable grid.

Best for
Ad-hoc market researchPrice benchmarking by areaVolume trend queriesInvestor due diligence

Map

/map

Interactive rental-listing heatmap covering Dubai, Abu Dhabi, Sharjah and Ajman. Every dot is a real listing coloured by annual rent.

How it works: 73,000+ scraped listings are geocoded and plotted on a Leaflet map. Filters (city, bedrooms, property type, max rent, posting year) are applied server-side so the browser only renders the matching subset. Click any dot for full listing details.

Best for
Neighbourhood rent scoutingRelocation planningLandlord pricing comparisonRental affordability mapping

Projects

/projects

Dubai's most-traded residential projects ranked by transactions, total volume, average price and AED/sqft. Filter by area, year range, and registration type (off-plan vs ready).

How it works: Aggregates 1M+ DLD sales transactions at the project level. A top-project card highlights the #1 most-traded tower. The table supports sorting by volume, price, or transaction count, with inline bar visualisations for quick comparison.

Best for
Project demand benchmarkingDeveloper performance trackingOff-plan vs ready comparisonArea-level supply analysis

Metro

/metro

Rental premium calculator for every Dubai Metro station. See how much extra tenants pay to live within walking distance of each Red and Green line stop.

How it works: Rental listings are grouped by proximity to each metro station (radius configurable from 800m to 4km). The station average AED/sqft is compared against the citywide average from 34,000+ listings. Stations are ranked by premium percentage.

Best for
Tenant location budgetingInvestor target-area selectionTransit-oriented development researchRental yield near metro lines

Speculation

/speculation

Off-plan vs ready market gauge. Track the speculative cycle by measuring off-plan transaction share, volume, and price premium over time.

How it works: Splits DLD project-level sales into off-plan (developer primary sales) and ready (secondary resale). Calculates share by transaction count and by volume, plus average AED/sqft for each category. Hot areas (highest off-plan share) and cool areas (ready-heavy) are ranked.

Best for
Market cycle timingSpeculation risk assessmentDeveloper launch strategyInvestor entry/exit signals

Valuation

/valuation

Valuation gap detector — compare DLD-registered bank valuations against realised sale prices to detect bubbles and financing discounts.

How it works: For each area, computes the median bank valuation AED/sqft and the median realised sale AED/sqft. The gap percentage = (sale − valuation) / valuation. Positive gaps signal market prices running above bank appraisals; negative gaps suggest financing-side conservatism.

Best for
Bubble detectionBank risk modellingMortgage underwriting reviewArea-level price sanity checks

Rents

/rents

New vs renewal rent comparison. Measures how much newly signed Ejari contracts diverge from renewals — a proxy for tenant repricing risk and landlord pricing power.

How it works: Ejari rental records are classified as new (first-time registration) or renewal (re-registered lease). Median AED/sqft is computed for each group by area and year. A large new > renew gap means sitting tenants are under-market and face sharp increases on renewal.

Best for
Tenant renewal budgetingLandlord rent adjustment planningInvestment yield forecastingMarket rent vs contract rent analysis

Seasonality

/seasonality

Year-by-month transaction heatmap for sales and Ejari rentals. Spot quiet months, peak seasons, and long-term shifting patterns.

How it works: Transactions are binned by year and month, then normalised into a heatmap. Click any cell to drill into month-level details: transaction count, median/mean/total value, top areas, top property types, and top projects for that month.

Best for
Listing timing optimisationMarketing budget planningDeveloper launch schedulingHistorical pattern research

Developers

/developers

Developer reliability scorecard — one A+ to D grade per Dubai developer, computed from six weighted criteria straight out of the IRETP RFP.

How it works: WealthIQ's public league table is scraped via Firecrawl and reconciled against DLD project and transaction counts. Each developer is re-scored locally with the six-factor RFP weighting: on-time delivery 25%, RERA compliance 20%, units delivered 15%, completed projects 15%, complaint index 15%, and ESG certification coverage 10%. Results are cached in the developers table and refreshed on demand from the page.

Best for
Buyer confidence & pre-purchase due diligenceInvestor developer benchmarkingRegulator delivery-risk monitoringBroker off-plan qualification

Use Cases Covered

  • Market Transparency Q&A - average price per sqft by community, top 10 areas by volume, year-over-year trends.
  • Investor Insights - median sale prices, rental yield proxies, hotspot detection by transaction volume.
  • Regulator Signals - outlier price spikes, unusual transfer patterns, area-level activity dashboards.
  • Developer & Project Intelligence - grade every Dubai developer A+ to D on the six-factor RFP scorecard (on-time delivery, RERA compliance, units delivered, completed projects, complaints, ESG), identify the most-traded projects, and benchmark pricing by tower.
  • Rental Market Analysis - compare new vs renewal rents, detect tenant repricing risk, and map rental premiums around metro stations.
  • Speculation & Market Timing - track off-plan share cycles, spot overheated areas, and time entry/exit using seasonality patterns.
Built for the VALUS IRETP proposal - Dubai Land Department real-estate transparency initiative.