THE PORTAL · MANUALS
All manuals

Product · how-to

Property Listings

Upload photos, set price and status, open houses, agents, and CSV import — on the agent’s own site from the owner desk. Not Shop. Not a live MLS feed.

Phase 1–3 Owner + Studio No live IDX
Who this is for. Owners (e.g. Leonardo Armas) use Part A. Studio / The 100 Club use Part B to enable the module, seed brands, and support clients.

Part A — Owner: upload & manage listings

A1. Open Listings

  1. Sign in to the owner desk for your brand.
  2. Left menu → Listings.
  3. Ensure the checkbox Listings module on is checked (or request it from Home if you cannot toggle).

A2. Create one listing

  1. New listing.
  2. Fill Title (required), subtitle, status, type, price or price label, address, beds/baths/sqft/year.
  3. Write description + highlights (one per line).
  4. Photos — multi-select JPG/PNG/WebP, max ~8 MB each. First image = cover.
  5. Optional: open house times/notes, agent roster pick, MLS #, external URL, Featured.
  6. Save listing.

A3. Status meanings

StatusPublic effect
ActiveAvailable on the market
PendingUnder contract badge
SoldSold badge (often muted card)
Coming soonPre-list tease
ArchivedHidden from public (desk still has record)

A4. Photos best practices

A5. Open house & agent

A6. CSV bulk import

  1. Sample CSV → download headers + examples.
  2. Edit in Excel / Google Sheets → save as CSV.
  3. Import CSV → paste or upload → Run import.
  4. Same mls_id = update existing; new mls_id = create.

Aliases accepted: title/name, price/list_price, address/street, beds/bedrooms, baths/bathrooms, sqft/square_feet, mls_id/mls_number, agent_name, open_house_start, featured, image_url, …

A7. Public pages

A8. Leonardo Armas specifically


Part B — Studio: enable, support, ops

B1. Enable Listings on a brand

  1. Studio → brand → Modules → turn listings on, or
  2. Owner desk with IT mode: feature toggle, or
  3. API / script: set features_json.listings = true on portal_sites.
  4. Confirm public API: GET /api/public/listings?site={slug} returns enabled: true.
Portal reload. After shipping listings code, Reload Portal in Server Control so routes are live. Owners will 404 until then.

B2. New real-estate client checklist

  1. Create portal site (slug, name, accent, public URL).
  2. Enable listings (and portal/website as needed).
  3. Deploy public pages: at minimum template listings.html + listing.html, or custom luxury theme (see Leonardo).
  4. Nginx: /portal/ proxy to :8091 so public pages hit the API same-origin.
  5. Seed sample listings if desired: node scripts/seed-listings-demo.js or brand-specific seed.
  6. Give owner login + this manual (Help tab auto-shows Listings guide when module is on).

B3. Data & files

B4. Business API (authenticated desk)

MethodPathUse
GET/api/business/listings?site=List + agents + enabled
POST/api/business/listingsCreate
POST/api/business/listings/:idUpdate / archive
POST/api/business/listings/uploadPhoto data URL
POST/api/business/listings/importCSV text
GET/api/business/listings/csv-sampleSample CSV
GET/POST/DELETE/api/business/listings/agentsRoster
POST/api/business/listings/featureToggle module

B5. Custom site (Leonardo pattern)

B6. Support tips

B7. Manuals for the client