PKB · Property inspection, Prague · 2026
Three languages that stay in step.
PKB inspects property in Prague for Czech locals, international buyers and the city's Russian speakers. We rebuilt its site so no language can lose a page, every visitor sees a price before the phone call, and each booking lands straight in the inspectors' software.
- Architecture
- Trilingual content model
- Content recovery
- Price calculator
- Booking hand-off
Overview
Three audiences. Three copies of every page.
PKB sells inspections to Czech locals, international buyers and Prague's Russian-speaking community. The old site kept each language as its own hand-built pages, so every change had to be made three times, and some never were.
So the versions drifted. Articles landed in the wrong place, the Czech section grew two contact pages, and a page nobody had named went live anyway. And a booking was a message in an inbox.
For a business selling to customers in more than one language.
What it had to do
- Make a missing translation impossible, not just unlikely.
- Move the blog without losing an article or an address.
- Show a price before anyone picks up the phone.
- Hand every booking to the inspectors' software, and lose none.
The route table
One page, set in three languages.
We moved the site onto Astro and Sanity and declared every page once, in a single table: its address and title in Czech, English and Russian together. A page can't exist in one language and go missing from another.
Addresses in their own words
/sluzby, /en/services, /ru/uslugi. Each language gets its own words in the address, not a translation hung off a Czech slug.
Translations, declared
Search engines are told which pages are the same page in another language. Before, nothing said so.
Nothing re-typed
We recovered the blog from the old site's own pages, all three languages at once, and every old article address still leads to its article.

Try it
Switch the language.
One page, one row in the table, three languages. The address changes with the words; the page stays the same page.
The front of the business
A price before the phone call.
A visitor picks an inspection package, gives the flat's size, adds checks that each explain in plain words what they involve, and sees the price before committing to anything.
Then the booking goes two ways: a confirmation email in the visitor's own language, with exactly the figure they were quoted, and a reservation straight into PKB Core, the inspection software the practice commissioned next.




The hard part
A booking that said yes and meant no.
Core checks a reservation as a whole and answers with a single “no”. The site can't tell which field Core refused, only that there is no reservation.
So one field the site accepted and Core refused would lose the booking while the visitor read “sent”. We gave the site Core's own limits to check first, so the visitor fixes a field instead of losing a booking. A request that still fails to reach Core raises an alert instead of disappearing, and email stays as the fallback.
Try it
Send a booking Core would refuse.
One message, longer than Core accepts. Send it the way it would have gone, then with the check.
Where it landed
From the bottom of the range to the top.
30 → 98the homepage's mobile performance score, before and after
79 → 100its accessibility score, before and after
Lighthouse lab scores · emulated phone · same profile and version both times
Live at pkb-cz.com in Czech, English and Russian, from one content model. Every form now reports which one brought the lead, so the practice can see what its advertising buys. And the same client came back for the inspection software itself.

