Costa Romana
A pre-construction oceanfront development in La Romana, Dominican Republic, sold mostly to buyers overseas who will never walk the site before they commit. The website had to do the work a sales office does: show the building as it will actually be built, list every one of the 76 residences, and answer the questions a buyer asks from four time zones away.
Sell a building nobody can visit
Twelve floors, 76 residences, delivery in 2029. Everything a buyer can judge today is on the website, which makes every claim on it load-bearing. If a floor plate is drawn wrong or an area is off by five square metres, that error is what somebody bought.
So the job was less about styling a brochure and more about getting the building onto the page truthfully: the real footprint, the real unit mix, the real distances, and a way for the developer to keep availability current without calling a developer every time a unit sells.
What we walked into
A site that looked finished and was not. Most of these only surface when you check the page against the architect drawings.
- The domain was misspelled. The live site sat on coastaromana.com, with an extra letter. Every link, listing and business card pointed at a name that was not the project.
- There was no unit data. The residences page described the building in general terms. Nothing tied a floor, a line and an area back to a drawing.
- The 3D model was a guess. A slender tower stood in for what is actually a wide slab of 47.98 by 17.43 metres, with the service core behind the residences.
- Pricing could not be published. Rates move with the building level, so any single figure on the page would have been wrong for most of the stock.
- The location section was a narrow column. At roughly 560 pixels wide, any map dropped into it would have rendered its labels at about eight pixels.
- Stock photography and a dead link. The Register Interest page carried twelve library images and no working route back to the main site.
- Nothing answered how you get there. For an overseas buyer, travel is the first objection, and the site had no page for it.
What was built
76-unit inventory
Generated from the architect zoning plans rather than typed by hand: five floors of eight residences and six floors of six. Every unit carries its interior area, balcony area and the plan reference it came from, so any figure on the page traces back to a drawing.
Interactive 3D viewer
A WebGL model of the real building, drawn to the surveyed footprint, with the service core behind the residences, units flush to the sea-facing facade, projecting balconies, rooftop signage and pool. Buyers rotate it and pick a floor.
Availability admin
A small admin screen so the developer marks a residence reserved or sold in seconds. Availability is the one thing on the site that changes weekly, so it is the one thing that does not need a developer.
Request Pricing
Prices replaced with an enquiry trigger across the inventory and the homepage cards. It keeps every figure honest while rates are still being set by level, and it routes the buyer into the pipeline instead of a dead end.
Original location map
A hand-drawn vector of the south-east coast in the project palette, showing both international airports, the drive times and Costa Romana between them. 8KB, sharp at any size, and licensed to nobody.
Getting Here page
A page built around the three airports that serve the development, with live route data linked from a source that maintains itself and current weather for the region.
Domain migration
The whole site moved to costaromana.com, with the old spelling kept alive on path-preserving redirects so no existing link breaks.
Content correction pass
Delivery year, project name, contact address and the residence descriptions brought into line across every page, and the stock library images replaced with the project renders.
The site itself
Captured from the live site at costaromana.com.









Changing the name without losing anyone
A domain move on a live sales site is the kind of task where a quiet failure costs enquiries for weeks, so every route was checked by hand rather than assumed.
- DNS cut over to the new domain and propagation confirmed against the live record.
- Certificate issued and forced HTTPS enabled, then every route re-tested over the secure scheme.
- Redirects written to preserve the path, so an old deep link lands on its own page rather than the homepage.
- All seven pages and all 22 assets verified on the new domain.
- Internal links, canonical tags, sitemap and the contact address updated to match.
- The 76-unit inventory and the 3D viewer confirmed intact after the move.
Choices worth defending
A mapping screenshot on a commercial sales page is a licensing question nobody wants to answer later, and it is a flat image: the labels blur when it scales and a screen reader gets nothing. Drawing it took an afternoon and gave an 8KB file that is sharp at any size, sits in the project palette, and keeps the drive times as selectable, indexable text.
Because a spreadsheet retyped by hand is a spreadsheet with a typo in it. Generating the 76 units from the zoning plans means the unit mix, the areas and the plan references all agree with the architecture by construction, and the marketing figure of 76 falls out of the floor counts rather than being asserted.
Rates change with building level and were still being set. A from price would have been accurate for a handful of units and misleading for the rest, and correcting it later is worse than never publishing it. Request Pricing keeps the page honest and turns the gap into an enquiry.
A video shows the building the way the studio framed it. A model lets a buyer turn it, find the sea-facing side, and see which floor a residence sits on. For pre-construction that difference matters, and it runs from a single lightweight scene rather than a hundred megabytes of footage.
The site is a marketing site. Its copy changes a few times a year, but availability changes weekly, so only availability needed to be editable. A focused admin screen solves the real problem in seconds a week, where a full CMS would have added a login, a schema and a maintenance burden to change one field.
A hardcoded airline list is out of date the first time a carrier drops a season. Linking a live route source means the page keeps telling the truth without anyone remembering to maintain it.
The map was the point of that section, and in a 560 pixel column its labels would have rendered around eight pixels tall. Widening the section was cheaper than degrading the map, so the layout moved to fit the content rather than the other way round.
What shipped
- Live on costaromana.com with a valid certificate and forced HTTPS.
- Path-preserving redirects from the old spelling, verified route by route.
- Seven pages and 22 assets confirmed on the new domain.
- All 76 residences generated from the architect zoning plans.
- Interior area, balcony area and plan reference on every unit.
- Filters by bedroom count and availability status.
- WebGL model rebuilt on the surveyed 47.98 by 17.43 metre footprint.
- Service core placed behind the residences, units flush to the sea-facing facade.
- Rooftop signage and pool, and balconies that project as they will be built.
- Original 8KB vector map of the south-east coast in the project palette.
- Drive times of 1 hour 7 minutes from Santo Domingo and 55 minutes from Punta Cana, as real text.
- Location section rebuilt full width so the map is legible.
- New page covering all three airports that serve the development.
- Live route data and regional weather linked rather than hardcoded.
- Wired into the navigation, the footers and the sitemap.
- Availability admin so the developer updates unit status without a developer.
- Delivery year, project name and contact address consistent across the site.
- Stock photography replaced with the project renders.
Selling something that is not built yet?
Pre-construction lives or dies on how believable the website is. If you have drawings and no site to put them on, let us talk.