ESYS VIP: a complete real estate platform in two weeks
A real estate practice on the Costa Blanca, live with the full surface area in fourteen days. A public catalogue with new-build and resale listings, a buyer account with favourites, saved searches and price alerts, and an agency admin that translates every property field across four languages and runs on its own media library.

Day 1–3 · The brief
ESYS VIP is a real estate practice on the Costa Blanca. The discovery call put the goal in focus on day one: a real online presence the agency owns, with the surface area that matches how the team actually works. Listings that browse like a property magazine. A buyer-side account that remembers favourites, saved searches and price alerts. An agency admin where ten years of stock get loaded, edited and translated by the team itself, in four languages.
Three surfaces, one repository, one team. By day three we had the scope locked and the calendar drawn: fourteen days, brief to live, no phase two.
Two weeks, three surfaces
- 14 daysBrief to liveTen working days and a weekend, one repository, no phase two
- 3Surfaces shippedPublic catalogue, buyer account, agency admin
- 4Languages per listingSpanish, English, Italian, Russian, translated field by field with AI assist
- 100Photos per listingOn the agency's own R2 bucket, with alt text written in four languages

Day 4–7 · A catalogue, not a feed
Week one built the public catalogue. The front page is the search itself: city or area, type, bedrooms, one Search. The hero is a real photograph of Alicante, not a hero illustration, because the agency sells the place as much as the property. Below the fold the Featured Properties grid shows six listings at a time with the facts a buyer actually scans for: price, location, bedrooms and bathrooms, surface in square metres, resale or new-build tag, an Available pill that flips to Reservado the moment the admin updates it.
The property detail page is the one screen we obsessed over. A wide photograph above a thumbnail strip that runs to a hundred images per listing, the full title carrying the neighbourhood (Jubalcoy, Torremanzanas, El Campello, La Mata), a fact strip of bedrooms, bathrooms and square metres, a tag row separating resale from new-build and house from villa, and a booking card pinned next to the gallery with price, reference and Contact. No disclaimers, no ad slots between the photos and the price, the agent's contact right where the buyer is ready to use it.



Day 8–11 · An account, not a contact form
The second week landed the buyer side. Sign in, sign up, password reset and two-factor authentication on day eight. A four-section cuenta on day ten: favourites that read off the same heart icon shown on every listing, saved searches that re-run on a schedule, price and new-listing alerts delivered by email, profile settings for language and contact preferences.
The account is where the relationship with the buyer lives. A buyer can star a listing, get an email when a comparable property in the same village drops, save a search for 3-bedroom houses with a pool in Mutxamel under €350,000, and come back to the agency through a page they already know. Two-factor protects the account from credential stuffing, password reset goes through email with a short-lived token, and the same components render the entire flow on mobile without a thinned-down feature set.



Day 12–14 · An admin that translates
The back office had to do three jobs on the last sprint: keep the catalogue editable in minutes from a phone, hold the media library that feeds every listing, and translate the same property into four languages without a separate workflow per language.
The media library is the agency's own asset store. A drag-and-drop dropzone with a JPG, PNG, WebP, GIF and AVIF whitelist and a 200 MB ceiling per file. A search across every asset. Folders that mirror how the agents already group their stock (Sin carpeta, borre xose, JUBALCOY at launch). Photographs sit on the agency's own Cloudflare R2 account, full export and migration in the team's hands.
Edit mode opens on a page that holds the data structure of the listing in three columns: básica (title, reference, description), detalles (type, category, price, surface, bedrooms, bathrooms), and ubicación. Every text field carries the four-language toggle (ES, EN, IT, RU) and the AI translate icon next to it, so an agent writes once in Spanish and one click later has the English, Italian and Russian versions to review, edit or accept. The per-listing image panel reads from the same library, holding up to a hundred photographs per listing, with an alt-text field per language for every image, so the SEO surface is multilingual without a second pass.
The sidebar carries the modules already in production (Propiedades, Blog, Usuarios, Media, Opciones) and the three coming next, marked Soon (Leads, Analytics, Ajustes), so the roadmap is visible inside the tool that runs the agency, not buried in a Notion the team never opens.


AI in the loop
Claude API sits inside the admin, doing two jobs that used to eat an agent's afternoon.
The first is translation. The translate icon next to every text field calls Claude with the source string, the target locale, the property record around the field (price, neighbourhood, type, surface, status) and the agency's voice notes pulled from the brand brief. What comes back is not the dictionary translation of a sentence in isolation. It is the same description rewritten by a translator who knows that segunda mano lands as resale in English, that obra nueva is new-build, that Russian buyers want square metres before bedroom count, and that the agency talks about Alicante in a register the team has tuned over twelve years.
The second is content generation. The wand icon on the title and description fields drafts the property copy from the structured data already in the form: a one-line title that names the neighbourhood first, a long description that hits the facts a buyer scans for in the order they scan for them, an alt text per image per language for the photographs the agent uploaded ten seconds ago. The draft is never auto-saved. An agent reads it, edits it, accepts it. The system tracks which fields started from an AI draft and which were hand-written, so the agency keeps the proportion of authored-by-human content where it wants it.
We wired the API the same way we wired the database. The prompts live in the repository alongside the listings, readable by anyone with commit access. The team tunes them, swaps them or stops calling them altogether on its own terms.


Stack
- Next.js16
- React19
- TypeScript5
- TanStack Query
- Tiptap
- Postgres16
- Supabase
- Upstash Redis
- Cloudflare R2
- Resend
- Claude API
- Vercel Edge
“Two weeks. We now have a website that handles new builds, resale, the buyer account, our journal and the daily admin from one screen, in four languages. The agents stopped copy-pasting descriptions on day three of using it.”
Need the full real estate surface in two weeks?
We build the public catalogue, the buyer account and the agency admin from one repository, in your locales, with your team's voice in every translation. Get in touch.
Start a project