Real Estate Listings Platform - Website

Job ID: 40560088

Budget: $250 – $750 USD

We are an established real estate agency based in Harare, Zimbabwe (sales, rentals, property management, valuations, and custom home construction / land development). We need an experienced developer to build a custom, self-hosted real estate listings platform — a public-facing website plus a full admin back office.

A working reference version already exists, so requirements are well-defined and not open-ended; the successful freelancer will be walked through it. We want the platform rebuilt on a portable, standard stack we own outright (no proprietary low-code lock-in). Prices are in USD; the market is Zimbabwe (Harare suburbs).

This is a bespoke application, not a template or off-the-shelf theme. WordPress/Wix-only bids will not be considered because of the custom AI, search, and import logic described below.

[Full Scope — Frontend Pages]

Public website (responsive, mobile-first):

Home — hero, featured listings, agency intro, calls to action.
Properties — searchable/filterable listings grid (by listing type, property type, price range, bedrooms, location, features).
Property Detail — image gallery, full spec, interactive map (Leaflet), inquiry form, plus the two AI assistants described below.
About — agency profile.
Contact — contact details + enquiry form.
Build With Us — land-developer / custom construction service page with a “timeline of a home” process section and an enquiry form.
Authentication pages:

Register.
Login.
Forgot Password.
Reset Password.
Admin back office (role-restricted):

Admin Dashboard — summary stats / overview.
Admin Listings — manage all listings (search, status, featured, edit, delete).
Admin Listing Edit — create/edit a property, upload images, and use the AI content generator (below).
[Full Scope — Data Model]

Property record must include these fields:

title, description, seo_meta (SEO summary, ≤160 chars)
listing_type — enum: For Sale / For Rent / Build
property_type — enum: House, Flat/Apartment, Townhouse/Cluster, Cottage/Garden Flat, Residential Stand, Farm/Plot, Warehouse/Industrial, Commercial, Rooms, Retail/Shop, Office, Other
price (USD), price_period (once-off / per month)
location (suburb), city
bedrooms, bathrooms, area_sqm
features[] (e.g. borehole, pool, garage), images[] (uploaded image URLs)
status — enum: Active / Under Offer / Sold / Rented / Draft (default Draft)
featured (boolean), ref_code
listing_duration — enum: 30 days / 60 days / 90 days / 6 months / No expiry
expiry_date
Required fields: title, listing_type, property_type, price, location.
User record with roles (public user vs. admin) and secure password reset.

[Full Scope — Backend Functions (ALL EIGHT REQUIRED)]

Every item below is in scope. Quote each one.

Natural-Language Search — user types plain English (e.g. “3-bed house in Borrowdale with a pool under $250k”). An LLM API (the reference build uses Anthropic Claude Haiku; OpenAI or equivalent acceptable) extracts structured filters — listing type, property type, min/max bedrooms, min/max price, location keywords, feature keywords — then the backend scores and ranks matching listings and returns a human-readable summary of the search.
Secure Map Key Service — serves the maps/tiles API key to the frontend without exposing it in client code.
Neighbourhood AI Assistant (per property) — an LLM-powered chat that answers buyer/renter questions about the area around a specific listing: schools, shops, transport, hospitals, restaurants, safety, general area info — grounded in Zimbabwe geography.
Site-Wide AI Chat Assistant — an LLM-powered real estate assistant that is context-aware of the property currently being viewed and the current set of active listings; it references listings by name/detail, stays on-brand, and nudges serious enquiries toward contacting the agency / booking a viewing.
AI Listing Content Generator (admin-only) — from the structured property fields, generates (a) a 2–3 paragraph aspirational marketing description and (b) an SEO meta description (≤150 chars). Reference build uses Claude Sonnet for quality.
Scrape & Import Existing Listings — a robust importer that crawls our existing live listings website (URL shared with the hired freelancer), paginates the for-sale and for-rent index pages, opens each property detail page, and parses: reference code, title, price, location/suburb/city, bedrooms, bathrooms, area (sqm), features (main + other), all full-size images, and description. It deduplicates by reference code against existing records and bulk-creates the rest, with batching, error handling, and a created/skipped/errors report. (Reference implementation is ~280 lines — this is real work, not a plugin.)
Inquiry Email Notification — when a client submits a property inquiry, email the agency inbox (address provided after hire) with the property + client details, via an email API (reference build uses the Gmail API; SMTP/SendGrid/Resend acceptable).
Auto-Expire Listings — a scheduled job that reverts any Active/Under Offer listing past its expiry_date back to Draft.
[Full Scope — Integrations]

Maps — interactive property maps (Leaflet + a tile/geocoding provider key).
LLM/AI API — powers items 1, 3, 4, 5 above. Bidder must have real experience integrating an LLM API (Claude/OpenAI/etc.), including prompt design and JSON-structured outputs.
Email API — for inquiry notifications (Gmail API / SMTP / transactional email service).
Payments (Stripe) — optional module: card payments for premium/featured listing placements. Stripe is scaffolded in the reference build but not yet wired server-side. Bidders: state separately whether Stripe checkout for paid/featured listings is included in your quote, and at what added cost. We may defer this to v2 — price it as an add-on line item.
Image upload & hosting for listing photos.
[Non-Functional Requirements]

Fully responsive and fast on mobile (most of our traffic is mobile).
SEO-ready: per-listing meta tags, clean URLs, sitemap; server-side rendering or pre-rendering of listing pages strongly preferred.
USD pricing, Zimbabwe/Harare context throughout.
Secure auth (hashed passwords, session handling, rate limiting on login/reset) and a proper admin role gate on all admin functions and the expiry job.
Clean, documented, handed-over source code we own, plus a short deployment/runbook doc.
[Preferred Stack]

Reference frontend: React 18 + Vite + Tailwind CSS with a Radix/shadcn-style component set, framer-motion, react-leaflet, react-quill (rich text), jsPDF. You may propose an equivalent modern stack. Backend: Node.js or Deno serverless/API functions with PostgreSQL or MongoDB. Tell us what you would use and why.

[Deliverables]

Complete source code (frontend + backend) in a Git repo we own.
Deployed, working platform on hosting we control.
All 8 backend functions live and tested.
One-time data import from our existing live website completed.
Admin credentials + a short admin guide.
Deployment/runbook documentation and a handover call.
[Suggested Milestones — for a Fixed-Price Agreement]

Setup & data model — repo, schema, auth scaffolding, admin role gate.
Public site — Home, Properties (search + filters), Property Detail (gallery + map + inquiry), About, Contact, Build.
Admin back office — Dashboard, Listings management, Listing Edit with image upload.
AI features — natural-language search, neighbourhood AI, site-wide chat, AI content generator.
Integrations & automation — email notifications, auto-expire job, (optional Stripe).
Data import — scrape/import from our existing live website, dedup, verify.
SEO, testing, deployment & handover.