Sihanoukville Property Rental:
A One-Map System
Finding a place in Sihanoukville isn't hard — there are plenty of brokers. What's hard is that there's no information system letting you quickly and fully see the whole Sihanoukville rental market, and find the best-value listing that matches your needs. Information sits scattered across brokers and chat groups, in isolated silos. This system tries to pull that scattered listing and land data onto one queryable map.
Intro: It's Not Brokers That Are Missing — It's the Full Picture
Finding a place in Sihanoukville is, honestly, not hard. There are many brokers; ask around and you'll find something. The real trouble is something else: there's no information system that lets you quickly and fully see the entire Sihanoukville rental market, and find the best-value listing that matches your needs.
Which area at what price, how many new listings appeared recently, the typical rent range for a sea-view two-bedroom, which plots are up for sale — this is scattered across dozens of brokers and chat groups, in isolated silos. There's no single place to see the whole picture. Both buyers and sellers make decisions on fragments — that's the information asymmetry.
What this system tries to fix is exactly that: pulling scattered listing and land for rent/sale info onto one map, so you can browse the whole thing and also query it in one sentence. It doesn't replace brokers — it's a market view that both brokers and clients can use.
Below: what it can do now, how it was built, and where it could go.
Why I Built This
I've been in Sihanoukville for 8 years. My field is land resource management; I do GIS, remote sensing, and spatial-data work. Over these years, Sihanoukville's property and land rental market has had one constant condition: the information is scattered.
Listings sit across dozens of chat groups, land info in different brokers' notebooks, city-amenity info across public sources and satellite imagery. Nobody acts in bad faith — the market is just at a relatively early stage. But the result is that neither buyers nor sellers can easily get a complete market view.
So I spent some time building this system to collect, organize, and present that scattered information on one map. It's not some grand undertaking — the whole thing took about three months, and with today's tooling and serverless services, one person can run it. Here it is, explained plainly.
Live Now: One Map, Three Entrances
The system already runs; you can open it now. It has three parallel entrances, one dataset behind them:
- Telegram Mini App (main entrance): @shvvilla_lt_bot — open inside Telegram, zero install.
- WeChat Mini Program: search "shvvilla 助手" inside WeChat — convenient for users in China or those used to WeChat. (Note: currently an individual entity without corporate or surveying-and-mapping qualifications, so the WeChat side has no map view or property-transaction features yet — basic query only.)
- WhatsApp plugin: send a query directly in WhatsApp — fits local users' habits.
All three feel the same. Here's how it works, using the Telegram Mini App as the example.
① First, a map: the map view
Open the Mini App and the first thing you see is the whole Sihanoukville listing map — 1,127 listings as pins across the map, clustered by area. You can zoom, pan, and tap any pin for details. This solves "seeing the full picture": before asking anyone, scan the whole of Sihanoukville on the map yourself. It's essentially a single-map management view that visualizes scattered listings in one place.
② Then, semantic query
On top of the map, if you have a specific need, just type a sentence: "sea-view 2-bed under $1,500, short-term OK" — the system understands the whole sentence and filters and highlights matching listings on the map, no checkbox filters needed. The map view handles "browse it all", the query handles "find it fast" — they work together.
③ Same system: the Sihanoukville land rent/sale map
Beyond listings, the Sihanoukville land rent/sale map (Telegram Mini App entry: same domain, /tg/ path) uses the same architecture for 148 parcels for sale/rent: a satellite hybrid base map showing plot boundaries, area, title type (Hard Title / Soft Title), and price range — from a few hundred square meters to over a hundred hectares, all point-mapped and filterable.
There's also a city-amenity base map (2,621 POIs: schools, hospitals, markets, ports, hotels) to judge a property's surroundings. Listings, land, and amenities — three maps sharing one data foundation — stacked together give a fairly complete view of Sihanoukville's rental/sale market.
How It Works: In Three Sentences
Skipping the jargon, the system does three things: pull the scattered data in → make it understand plain language → deliver it from any entrance.
Sentence 1: Pull the scattered data in
Every day at 3 AM, the system automatically pulls listing and land data from 5 sources, removes duplicates (the same unit posted 10 times across groups → kept once), cleans it, and stores it in one warehouse. Fully automatic.
Sentence 2: Make it understand plain language
This is the key step. A traditional database queries by field — check "2BR", check "sea view", fill a price range. But people say "cheap two-bed near the beach, short-term". An embedding model turns each listing description into a string of numbers (a "semantic fingerprint"), turns the user's sentence into the same kind, then finds the closest matches. It understands meaning, not keywords. A language model then summarizes results back in plain language.
Sentence 3: Deliver from any entrance
Telegram Mini App, WeChat Mini Program, WhatsApp plugin, web map, internal admin — all call the same retrieval logic. Swap the frontend skin, the backend doesn't change.
A few choices, explained
Why a Telegram Mini App as the main entrance? Most local and international users in Sihanoukville use Telegram. A Mini App opens inside the chat, use-and-go, no app download, low to develop and maintain. WeChat Mini Program and a WhatsApp plugin run in parallel to cover different habits.
Why serverless? One person maintaining it, no bandwidth to run servers. Serverless costs near-zero when idle, scales when there's traffic — suitable for this scale.
Why semantic rather than keyword search? Sihanoukville listing descriptions are a multilingual, colloquial, loosely-structured mix; keyword matching does poorly on that. Semantic search understands the whole sentence, which fits this kind of data better.
Technical details (for technical readers — skip if not relevant)
Data pipeline: a scheduled daily Job collects from multiple sources → dedup & clean → text embedding (text-embedding-005, 768-dim) → write to the warehouse. Runs unattended.
Storage & retrieval: the unified foundation is BigQuery (dataset shv_property). Semantic retrieval primarily via Vertex AI Discovery Engine; on flakes it auto-degrades to BigQuery VECTOR_SEARCH, transparent to users.
Result generation: recalled candidates are summarized and rewritten into natural language by Gemini 2.5 Flash.
Runtime: backend on Cloud Run, billed per request, auto-scaling, with monitoring, logs and fallback. All channels (Telegram / WeChat / WhatsApp / web) call the same retrieval logic.
Feedback loop: cross-channel user actions write to lead_log, used to improve ranking — the system improves with use.
Cost & Effort
To be honest and avoid overstating it: this system took about three months to build. The reason one person could do it in three months is mostly the tooling dividend of recent years — AI-assisted coding plus serverless services let small teams, or individuals, build what used to require a team.
All infrastructure is serverless, pay-per-use; under demo and early real traffic, monthly infrastructure cost stays fairly low. That's not me being frugal — this kind of architecture is just cheap by nature.
The architecture's replication cost is fairly low. Once the first scenario works, doing a second or third — swap data sources, swap frontend — doesn't require rebuilding the backend. That's why the next section discusses where else this might apply.
Real Query Gallery
A few real natural-language queries and the system's response. The user checked zero filters — just a sentence.
"sea-view 2-bed under $1500 short-term OK" → 5 results, 3 support short-term, $1,200–1,480, sorted by distance to coastline.
"downtown shopfront good for a restaurant" → recognizes "commercial + dining", returns street-facing shops with surrounding POIs as a foot-traffic reference.
"large land in Otres area for tourism development" → switches to the land library, returns multi-hectare plots, flagged by title type and Tourist Zone status.
That's what "query the map in plain language" means: you don't learn its interface, it adapts to how you speak.
what's missing is one place to see the whole picture.
This Architecture Might Apply Elsewhere
Abstracted, this system handles "a class of information with location, description, and contacts". A few other industries in Cambodia have similar scattered-information problems, and in principle the same architecture — swap data source, swap frontend — could adapt. These are early ideas, not promises of things already built:
- Cambodia-wide property & land rental/sales: extend this Sihanoukville map to Phnom Penh, Siem Reap, Kep, Kampot, then beyond. Take on regional brokerage: brokers add listings, get unified display and retrieval instead of group-spamming.
- Cambodia tourism on one map: nationwide attractions, hotels, routes, guides — one map queryable in plain language. "With kids, 3 days, beach, not too tiring" — same retrieval logic.
- Cambodia industrial-park investment Mini App: nationwide SEZs/industrial parks, with plots, utilities, policies, and contacts structured onto a map. "Parks near a port, with power quota, warehouse-ready" — the contact surfaces directly.
- Cambodia agricultural sourcing: origins and farmer contacts for cashews, mangoes, rubber, durian, pepper — same retrieval stack for B2B matching, so buyers find supply in one sentence.
These share the same data pipeline, retrieval logic, and Mini App distribution as the property system; the difference is mainly data ingestion and frontend copy. Get the listing part solid first; the rest is for later.
A Few Things You Can Verify Yourself
Don't take my word for it — you can check these directly:
- All three maps open right now — links above, no demo booking needed.
- Data auto-refreshes at 3 AM daily — not a one-time dead import.
- The backend on Cloud Run bills per request and auto-scales — with monitoring, logs, and a fallback when the primary retrieval engine flakes.
- Every channel's user actions write to the same behavior log, so ranking improves with use.
All of this can be checked right now by opening the links.
Try it yourself before forming a view.
FAQ
Where does the data come from? Is it legal?
One person built it — what if you walk away?
Is the data accurate? How often updated?
How does it make money?
Can someone just copy this?
Why you?
How long to expand to another city/industry?
How do I get in touch?
If You Want to Use It, or Just Talk
| You are | What you can do | How to start |
|---|---|---|
| Looking for a place / land | Just open the Mini App — browse the map first, then query in one sentence | Any entrance below, free |
| Broker / agent | Put listings in for unified display, skip repeated group-spamming, let clients find them on the map | Telegram or email, note "broker" |
| Someone in another industry / city | If your field has the same scattered-info problem, let's discuss whether this approach fits | Telegram or email, tell me your direction |
A new industry or city mainly means ingesting new data sources, adjusting terminology and frontend copy, and integration — the backend and retrieval mostly reuse. Whether it's worth doing depends on the specifics; happy to talk first.
Entrances
All three feel the same — pick whichever is handy:
Contact me directly
Finding a place/land, collaboration, or just a chat:
Closing
What this system does is fairly simple: pull Sihanoukville's scattered listing and land for rent/sale info onto one map, so people can see it as a whole and query it in a sentence. It addresses one specific problem — "seeing the full market" — it doesn't replace brokers, and it doesn't overstate its own role.
If you're a broker, looking for a place or land, or you think this approach fits your field — you're welcome to use it, or just reach out for a chat. Contact options are above.
The data figures, tech stack, and product links in this article match the actual running environment, with no embellishment. The maps open right now.