Phuket Map
Domain: phuketmap.app (registered — standalone canonical, tier-1 SEO)
Pattern: hybrid — neighborhood choropleth (status, recordKey area) + POI markers (coworking, gyms, beaches, nightlife, healthcare)
Build tier: B
Lineage: Locality Showcase program. Sister map to Floripa (Florianópolis). Shares the template; this is pilot #2.
Strategic role
A single beautifully-designed interactive map of Phuket with everything a traveler, digital nomad, or relocating expat needs, plus cross-layer intent filtering as the moat. Serves two audiences from one product:
- Path A — nomads/travelers/expats (discovery + affiliate revenue): people who currently stitch Phuket intel from Hipflat, Airbnb, Facebook groups, Reddit, and Google Maps. A single map with cross-layer filtering is a 10x improvement.
- Path B — government/tourism/real estate contracts (the real money): Tourism Authority of Thailand (TAT), Phuket Provincial Government, Phuket Real Estate Association. The map is a free public demonstration of Atlas’s locality intelligence capability. The methodology/about page does the B2B sales work.
The moat is the same as Floripa: intent filtering, not the layers themselves. Google Maps has the POIs. Nobody lets you query “areas under ฿30k/month with reliable fibre, walkable to a swimmable beach, a Muay Thai gym within a 10-min Grab, away from the Patong party noise.” That cross-layer query is the product.
Audience
Path A (free, affiliate):
- Digital nomads (Phuket is a top-5 global nomad island)
- Long-stay travelers + remote workers
- Expats relocating (retirement, lifestyle, family)
- Muay Thai + fitness tourists (Phuket is a global Muay Thai training hub)
- Medical tourists (world-class private hospitals)
Path B (contract showcase):
- Tourism Authority of Thailand (TAT) — Phuket office + national MICE/tourism budget
- Phuket Provincial Government — tourism marketing + investment attraction
- Phuket Real Estate Association + major developers (Laguna, MontAzure, Banyan Tree)
- Property portals wanting white-label area intelligence
- Hospitality groups + hotel chains with Phuket assets
Scope
Areas (the choropleth records, ~13): Patong, Kata, Karon, Kamala, Surin, Bang Tao / Cherng Talay (Laguna), Rawai, Nai Harn, Chalong, Phuket Old Town, Mai Khao, Nai Yang, Thalang.
POI + data layers (the overlays + filters):
Property & cost:
- Long-term rent by area (฿/month, by property type)
- Sale prices — note Thailand foreign ownership rules (condo 49% foreign freehold quota; villa leasehold or Thai company structure)
- Short-term / Airbnb pricing with seasonality (high season Nov–Apr vs low/monsoon May–Oct — prices swing hard)
- Cost of living beyond rent (groceries, restaurants, gym, scooter)
Lifestyle:
- Beaches categorized (party / family / swim / surf) + monsoon safety (rip currents, red-flag season — real fatality issue on west coast)
- Muay Thai camps + gyms + CrossFit + yoga (major nomad draw)
- Coworking spaces (location, price, vibe)
- Nightlife clusters (Bangla Road Patong, Old Town, Rawai chill bars)
- Viewpoints + hiking + island-hop departure points (Phi Phi, Similan, Racha, Coral)
- Dining density + digital-nomad-friendly cafes
Practical:
- Internet / fibre availability + speed by area (critical for nomads)
- Healthcare — private hospitals + clinics (Bangkok Hospital Phuket, Bumrungrad — medical tourism is a Phuket differentiator vs Floripa)
- International schools (family expat audience — more relevant here than Floripa)
- Transport: Grab/Bolt avg prices, songthaew routes, scooter rental, traffic hotspots
- Crime/safety + road safety (Phuket has a high motorbike accident rate — legitimate filter)
- Flood-prone zones (monsoon flooding)
- Beach water quality + jellyfish season
Context graphs:
- Tourist arrivals + occupancy over the year (high vs low season)
- Climate / temperature + monsoon graph
- Nomad/expat density + English-speaker areas
Excluded from v1: restaurant-level reviews (Google owns this), individual property listings (portal territory — link out via affiliate instead), live booking.
Schema design
interface PhuketArea {
id: string; // recordKey, e.g. "patong"
name: string;
nameThai: string;
coast: 'west' | 'south' | 'north' | 'east' | 'central';
latitude: number;
longitude: number;
boundaryGeoJsonRef: string; // R2 path to area polygon
// Property & cost (numeric for filtering)
rentLongTermThbMonth: { studio: number | null; oneBed: number | null; twoBed: number | null; villa: number | null };
saleThbSqm: number | null;
foreignOwnership: { condoQuotaAvailable: boolean | null; villaStructure: 'leasehold' | 'thai_company' | 'none' };
airbnbThbNight: { low: number | null; high: number | null }; // seasonality
costOfLivingIndex: number | null; // relative to Phuket average = 100
// Lifestyle scores (0-100, derived, for intent filtering)
beachAccessScore: number | null;
swimmabilityScore: number | null; // factors monsoon safety
nightlifeScore: number | null;
fitnessScore: number | null; // Muay Thai + gym density
walkabilityScore: number | null;
quietnessScore: number | null;
// Practical
internetMedianMbps: number | null;
healthcareProximityMin: number | null; // mins to nearest private hospital
floodRisk: 'low' | 'medium' | 'high';
roadSafetyNote: string | null;
// Audience fit
nomadDensity: 'low' | 'medium' | 'high';
englishPrevalence: 'low' | 'medium' | 'high';
bestFor: Array<'nomads' | 'families' | 'retirees' | 'party' | 'luxury' | 'budget' | 'fitness' | 'medical'>;
sources: Array<{ url: string; type: string; fetchedAt: string }>;
}
// POIs are a separate collection, point geometry, tagged by area + category
interface PhuketPOI {
id: string;
areaId: string;
category: 'coworking' | 'muay_thai' | 'gym' | 'yoga' | 'beach' | 'nightlife' | 'cafe' | 'hospital' | 'school' | 'viewpoint' | 'boat_departure';
name: string;
latitude: number;
longitude: number;
attributes: Record<string, string | number | boolean>; // category-specific
affiliateUrl: string | null; // booking/affiliate link where applicable
sources: Array<{ url: string; type: string; fetchedAt: string }>;
}
Route families
/— main interactive map with the cross-layer intent filters (the product)/area/<slug>/— per-area page (~13) — primary SEO + showcase surface (“Rawai for digital nomads”, “Bang Tao guide”)/compare/<a>-vs-<b>/— area comparison (~78 pairs prioritized by search: “Rawai vs Nai Harn”, “Kata vs Karon”, “Bang Tao vs Surin”)/beach/<slug>/— per-beach pages (~30) — high consumer search (“best beaches Phuket”, “[beach] Phuket”)/category/<slug>/— lifestyle category pages (coworking, Muay Thai camps, family-friendly areas, etc.) — ~15/topic/<slug>/— guides (monsoon season guide, foreign property buying in Phuket, DTV visa for Phuket, best areas for families, Muay Thai training guide, medical tourism) — ~30/q/<slug>/— Q&A (“where should digital nomads stay in Phuket”, “is Phuket safe”, “can foreigners buy property in Phuket”) — ~50/methodology,/attribution,/about— about/methodology carries the Path B contract CTA
Per locale: ~220 pages. Locales: en primary; consider ru, zh, de (large Phuket visitor + expat populations). Across 4 locales: ~880 pages.
Cross-portfolio connections
| Connected Atlas map | Relationship |
|---|---|
| visa | Thailand DTV digital nomad visa, Elite, retirement, education — “can I stay” |
| foreign-property | Thailand condo quota + leasehold + Thai company structures — “can I buy” |
| tax | Thailand tax residency + remittance rules — “what will I pay” |
| free-zone | Phuket-adjacent investment zones |
| cost-of-living (planned) | Phuket vs other nomad bases |
| healthcare-cost (planned) | Medical tourism cost comparison |
Every area + topic page cross-links into the relevant core Atlas maps. This is the coherent story for BOTH nomads (“here’s your visa/property/tax answer”) AND tourism authorities (“Atlas runs a serious global intelligence portfolio, not just a travel blog”).
SEO + AEO
SEO targets:
- “phuket map” (category head term — standalone domain wins CTR here)
- “where to stay in phuket” / “best area in phuket for [nomads/families/couples]”
- “[area] phuket guide” (Rawai, Bang Tao, Kata, etc.)
- “[area] vs [area] phuket”
- “best beaches phuket”
- “phuket digital nomad” / “phuket long term rental”
AEO: Heavy LLM-search audience (nomads ask ChatGPT “where should I live in Phuket”). QAPage schema on /q/. First-paragraph direct answers on area pages. llms.txt finalized at Phase 6.
Monetization
Path A (passive): affiliate — accommodation (Booking, Agoda, Airbnb), Muay Thai camps, coworking day passes, tours/island-hopping (GetYourGuide, Klook), eSIM (Airalo), insurance (SafetyWing). Subtle placement on POI cards — never pop-ups.
Path B (the real money): the /about + /methodology pages carry the demonstration framing:
“Phuket Map is a free public demonstration of Atlas Development’s locality intelligence platform, built with the same system we use to ship custom tourism, economic-development, and real-estate mapping platforms for clients. For an official version for your jurisdiction — branded design, proprietary data layers, investor/visitor portal, ongoing maintenance — contact us at [email].”
Contract range: $30K–$200K (TAT Phuket, Provincial Government, real estate association, developer white-label). In-person pitch viable — you’re in SE Asia regularly.
Build effort
~3 weeks. Long pole is data normalization across area + POI layers (same pipeline as Floripa). Discovery → Perplexity Deep Research prompts per layer → normalize to CSV/JSON → geocode → master area table as join key → gap-fill.
Launch sequencing
After Floripa proves the template. Phuket is pilot #2 of the Locality Showcase program. Validate the shared template on Floripa first, then Phuket inherits it cleanly.
Caveats
- Foreign property rules are legally sensitive. Present factually; link to foreign-property map; don’t give individualized legal advice.
- Monsoon safety is a real-fatality topic (drownings on west coast in low season). Beach safety data must be accurate and current; don’t downplay.
- Road safety — Phuket motorbike accident rate is high. Present honestly as a livability factor.
- Affiliate density must stay subtle — heavy affiliate placement kills the Path B (tourism authority) credibility.
Open questions
- Locales — confirm ru/zh/de worth the translation cost given Phuket’s Russian + Chinese + German visitor/expat populations. Recommend en + ru + zh for v1.
- Should
/area/pages show live Airbnb pricing (via affiliate/API) or seasonal averages only? Recommend seasonal averages for the map; affiliate deep-links for live. - Shared template vs Phuket-specific: this brief assumes Phuket inherits the Floripa template. Confirm Floripa’s template is locked before scaffolding Phuket, or the two will diverge.
Success criteria
- Map renders with chosen basemap on a freshly-deployed Worker
- Cross-layer intent filter returns correct areas for a compound query (e.g. rent < ฿30k AND swimmable beach AND fibre > 100Mbps AND fitness score > 60)
- At least one full data refresh round-trip via the monthly GHA cron
- All declared routes (
/,/area/[slug],/compare/[a]-vs-[b],/beach/[slug],/category/[slug],/q/[slug],/topic/[slug],/methodology,/attribution,/about) return 200 - OG images render per route
- Attribution shows
© OpenStreetMap contributors | © Protomaps - No requests to
*.mapbox.comat runtime -
/aboutcarries the Path B contract CTA
Scope cuts (deferred to v2)
- Live booking integration (link out via affiliate in v1)
- Restaurant-level review data
- Individual property listings (portal territory)
Cage-bends from the boilerplate
- Intent-filtering query engine (cross-layer compound filters) — if not already in the boilerplate from Floripa, build here and promote once a second locality needs it.
- POI collection alongside area choropleth (hybrid) — confirm the boilerplate handles a secondary point collection tagged to choropleth records.
Smoke-test checklist before declaring v1 shipped
- Production URL renders correctly on desktop + mobile
- Choropleth (areas) + POI markers + intent filters work as designed
- OG image generation produces correct images per route
- Prerendered routes display correctly
- Affiliate links resolve; Path B CTA present on /about