# Competitive Teardown: Filipino Homes (filipinohomes.com) Clean-room research notes for the "property-portal" (bilingual JP/EN, SUUMO-like PH real-estate demo) roadmap. All data gathered from public HTTP responses (`curl`), rendered page text (WebFetch), and public web search on 2026-07-11. Inferences are explicitly marked `(inferred)`; anything not directly observed is marked `not observed`. ## 1. Overview & positioning (agent-network brokerage model) Filipino Homes is the consumer-facing portal of the **Leuterio Realty & Brokerage Group**, founded by Anthony Gerard "Tonton" Leuterio (Cebu-based, operating since 2008). Positioning observed via WebSearch and the site's own About page: - Self-described as "the country's fastest-growing real estate brand" and "the largest comprehensive real estate solutions portal in the Philippines." - Self-reported network size: "providing livelihood opportunities to nearly 5,000 people across the country" (site's own About page, `/about/soul-of-company`). Third-party press (Philstar/Sunstar, 2024) cites larger figures — "100 offices nationwide" and "11,000–14,000 licensed real estate professionals" — these are press claims, not confirmed on-site, so treated as `(inferred, third-party)`. - Model is a **three-sided marketplace**: buyers pick their preferred listing agent directly on a listing; agents can recruit/co-broke with other agents; sellers/developers list through the network. This is described in press coverage as "agents can help agents, buyers can choose their preferred agents on the listing, and agents can look for buyers and ask support from their co-agents." - Sister brand: **Rent.ph** ("the biggest rental website through Rent.ph") — a separate rental-only property under the same group `(inferred from About page text, not independently verified)`. - Founder Anthony Leuterio was named 2024 NAR (US National Association of Realtors) International Realtor of the Year — used heavily in marketing/PR. - The group is actively building a proprietary AI layer branded **"ASA GPT"** ("Proprietary AI Software for Real Estate"), described in press as integrated across "135 offices nationwide" with "9 proprietary AI tools." Corroborated on-site: `robots.txt` explicitly disallows `/asa-gpt`, and the homepage search bar has a visible **"AI ON / OFF"** toggle (see §4). ## 2. Tech stack & architecture Observed via `curl -sIL` on homepage, category, and detail pages (desktop Chrome UA), plus fetched JS chunks. - **Framework**: Next.js, App Router, server-rendered/ISR. Evidence: `x-nextjs-prerender: 1`, `x-nextjs-stale-time: 300` response headers; HTML contains React Server Component streaming markers (`self.__next_f.push`, 36 occurrences on the detail page); JS chunk filenames include a `turbopack-*.js` bundle, confirming the build uses **Turbopack** (Next.js's Rust bundler), implying a recent Next.js version (15.x class). - **Hosting/CDN**: Origin is **Vercel** (`x-vercel-cache: HIT`/`MISS`, `x-vercel-id: sfo1::iad1::...` — SFO edge, IAD1 origin region), fronted by **Cloudflare** as reverse proxy/WAF (`server: cloudflare`, `cf-cache-status: DYNAMIC`, `cf-ray`, Cloudflare NEL/report-to headers). So: Cloudflare (DNS+proxy) → Vercel (Next.js hosting/ISR) → app. - **UI library**: **MUI (Material UI)** — class names like `MuiBox-root`, `mui-1og570q` etc. are pervasive across all three pages sampled. - **Object storage/CDN for media**: AWS S3, bucket `filipinohomes123.s3.ap-southeast-1.amazonaws.com` (ap-southeast-1 = Singapore), serving `.webp` images from a path literally named `filipinohomes-compressed-from-old/...` (suggesting a past migration/re-compression pass of legacy image assets). - **Analytics/marketing scripts**: Google Tag Manager (`googletagmanager.com/gtag`) is present; Google Analytics, Google Maps JS API, YouTube embeds, and Google OAuth (`accounts.google.com`) are all explicitly allow-listed in CSP. `static.cloudflareinsights.com` (Cloudflare Web Analytics/RUM) is also allow-listed. No Meta Pixel, Hotjar, Clarity, Segment, or Sentry script tags were found in the sampled JS chunks (small sample; not exhaustive — `not observed`, not "absent"). - **Real-time chat**: A `socket.io` client connects to `wss://system.leuteriorealty.com/services/filipinohomes/chat` (found literally in a JS chunk: `globalThis.__fhChatSocket??(0,s.io)("https://system.leuteriorealty.com/services/filipinohomes/chat",{autoConnect:!1,transports:["w...`). `system.leuteriorealty.com` is also explicitly allow-listed in CSP `connect-src` (both `https://` and `wss://`), confirming this is the group's shared CRM/chat backend, separate from the public marketing domain. - **CSP-declared backend API hosts** (from the `content-security-policy` header's `form-action`/`connect-src`): `https://api2.filipinohomes.com` and `https://laravel.filipinohomes.com`. These were **not observed directly** in the sampled server-rendered HTML or in the handful of JS chunks fetched (listing data appears to be fetched server-side during Next.js rendering, not client-side XHR for the pages sampled) — their existence and naming (`laravel.filipinohomes.com` strongly implies a **Laravel/PHP backend**) is confirmed only via the CSP allow-list, so treat the API's internal shape as `(inferred)`. - **Dynamic OG image generation**: `GET https://filipinohomes.com/og/listing?...` returns `content-type: image/png`, `x-matched-path: /og/listing`, cached `public, max-age=86400, immutable` — a Next.js dynamic Open Graph image route (Vercel `@vercel/og`-style, `(inferred)`) that renders a per-listing social-share card server-side from query params (title, price, beds, baths, area, photo). - **Security headers**: strict CSP (report-only variant also shipped in parallel for safe rollout testing), `strict-transport-security: max-age=63072000; includeSubDomains; preload`, `x-frame-options: SAMEORIGIN`, `permissions-policy` disabling camera/mic/interest-cohort/browsing-topics, `cross-origin-opener-policy: same-origin-allow-popups` (the "allow-popups" variant is needed for Google OAuth popup flow). - **Locale**: `` on every page sampled (home, category, detail) — single-locale site, no `hreflang` alternates observed, no language switcher UI found. ## 3. Data layer & hidden APIs - **Backend API hosts** (from CSP, not directly called in sampled requests): `https://api2.filipinohomes.com`, `https://laravel.filipinohomes.com` — `form-action` targets, i.e. used for form submissions (contact/lead forms, login). Full endpoint paths: `not observed`. - **CRM/chat backend**: `https://system.leuteriorealty.com/services/filipinohomes/chat` (Socket.IO namespace/path), confirmed in JS source. - **robots.txt** blocks crawling of `/admin/`, `/client/`, `/editor/`, `/login`, `/api/`, `/_next/`, `/dashboard/`, `/cookies/`, `/maintenance/`, and `/asa-gpt` — confirms an internal `/api/` surface exists on the same origin (likely Next.js route handlers proxying to the Laravel/api2 backends) plus an agent-facing `/dashboard/` and `/editor/` (listing CMS) and `/client/` area, all gated behind `/login`. - **Sitemaps** (`sitemap.xml` → sitemap index): separate sitemap files for `sitemap-static-1.xml`, `sitemap-categories-1.xml` (62 URLs), `sitemap-listings-1.xml` through `-18.xml` (18 shards — at typical ~50k URLs/shard this implies the catalog is potentially in the hundreds of thousands of listing URLs, `(inferred)`), `sitemap-agents-1.xml`/`-2.xml`, `sitemap-blogs-1.xml`, `sitemap-news-1.xml`/`-2.xml`. There is also a separate `image-sitemap.xml` and `news-sitemap.xml` declared in `robots.txt`. - **JSON-LD (schema.org)** is emitted server-side on every page type sampled, using the `