Real estate · Portal, CRM and automations
A real-estate portal in six languages, run from a CRM and updated every morning with no re-typing
Palmora lists properties for sale and rent in Phuket. We built the website, the CRM that serves as its back office and the automations that connect them: a listing approved in the CRM is live in six languages the next morning, or straight away at the push of a button.

Key figures
6
languages served
English, French, Thai, Russian, Chinese and German
865
listings online per language
Catalogue counted on 21 September 2026
3
alert channels for the team
Business, technical and contact requests
Operational figures taken from the project's own tools. We publish no sales or traffic figures without their owner's consent.
The starting point
Listings lived in a spreadsheet and were copied to the website by hand, and every language added work. Callback requests only arrived by email: a lost email meant a lost client, and nobody knew.
The business needed one place to enter a property and follow a client, and a website that kept up on its own.
What we did
The CRM becomes the back office
Self-hosted Twenty is the single source for properties, contacts and deals. The billing history was moved into it, and a small in-house app lets the team sort photos and change a listing’s status there.
New properties arrive on their own
Every morning, new listings from a feed are imported with their photos and given an internal reference. Their description is written in the house format, then they wait for a human to approve them.
The website follows without anyone touching it
Every morning, a sync publishes the approved catalogue: optimised photos, translated text, withdrawn listings reported cleanly to search engines. A “Publish to the website” button in the CRM saves waiting for the next day.
Six languages without a full-time translator
Listings are translated by a model chosen for its cost, about six times cheaper than the standard model, and a cache avoids paying twice for the same translation.
No enquiry lost
Every form is saved to the database before any email is sent, then creates the contact and the deal in the CRM, and notifies the team in its channel.
Operations that watch themselves
A report every morning (new properties, approval queue, sync status, backup age), a restore test every month, an alert if a job has not checked in for 30 hours. When the sync fails, a coding agent prepares the fix.
In pictures



What it changes
- Publishing a property no longer means copy and paste: approve it in the CRM and the website follows.
- Adding a language does not mean hiring: German went from the blog to the whole site in July 2026.
- Contact requests are followed up in the CRM instead of sitting in an inbox.
- Problems surface before a client sees them: the team reads a report, not technical logs.
Timeline
January 2025
Multilingual Astro website, first optimisations
May 2026
Twenty CRM replaces the spreadsheet as the single source
July 2026
Site audits, enquiries saved to the database, German across the whole site, sync moved to our server
August 2026
Translation model six times cheaper
Under the hood
- Astro
- Twenty CRM
- n8n
- Supabase
- Gemini
- Cloudflare R2
- Netlify
- Discord
- Claude Code
Limits and next steps
- No published figures yet on traffic or enquiries received: conversion tracking is being set up, and the figures will come with it.
- Listing page speed on mobile is still an open workstream.
- The LINE, Telegram and WeChat channels are not connected yet.