KW Market Insights
The problem
Anyone buying, renting or advising on property in Saudi Arabia had to piece the market together from a dozen government portals, bank bulletins and news sites, each with its own format, language and update rhythm. Agents had no neutral, current source they could send a client to, and figures quoted in conversations were rarely traceable to where they came from.
The product
A visitor opens insights.kw-saudiarabia.com in English or Arabic and sees the market as it stands today: the national price index, deal volumes since 2006, a market temperature reading, financing rates and the giga-projects pipeline. They drill into any of 411 districts across Riyadh, Jeddah, Dammam and Al Khobar for price per m², rent, gross yield and quarterly trend, run the buy-versus-rent calculator, or check what a foreign buyer is allowed to own. If they have a question they ask Ask KW, an AI analyst that answers from the same data and cites its sources, and hands them to a KW agent when they want one. They can also request a personalised market report: a serial-numbered PDF with a QR code that anyone can later verify as genuine. The same live figures appear as an embedded widget on kwsaudiarabia.com.
Under the hood
- Data as code: 16 collectors run on scheduled GitHub Actions, save every raw response with a content hash, and commit the market database to git. The server never scrapes; it pulls hourly, so every figure is versioned, reviewable and revertible.
- Ask KW streams answers from 18 tools that query the database, district data and cited guides, with failover across five AI providers and a no-LLM fallback path that still answers when every model is down.
- Reports are rendered by headless Chromium, fingerprinted with SHA-256 and issued a check-digit serial; the verify page hashes an uploaded PDF in the browser and compares it with the stored fingerprint.
- 38 pages served in both languages from one set of files, 897 translation keys per language, first-party analytics that store no IP and respect Global Privacy Control, and 249 automated tests.
Next.js 15 (App Router, Server Components) · React 19 · TypeScript · next-intl (EN/AR, RTL) · SQLite + Drizzle · Zod · Chart.js · Playwright/Chromium · GitHub Actions · nginx + PM2