Properties

Keep your listing inventory in Gene App so the AI can match leads to real properties instead of guessing.

Where to change itProperties
On this page

Overview#

Properties is the listing inventory Gene App keeps for you. When the AI talks to a lead, it searches this inventory and references real units instead of guessing.

  • The same inventory appears on the standalone Properties page and inside Settings, Knowledge. It is identical in both places.
  • It works alongside the knowledge base, which holds your wider company information.
  • You can attach documents (brochures, floor plans, images, video) to a property so the AI has them on hand.

What a property holds#

Every property carries a set of fields: name, location, area, city, country, a map pin, type, beds, baths, size, price with currency, status and description. It also keeps any extra columns an import brought in.

How the page looks#

  • The page opens on a table of all properties, 20 per page.
  • A Table / Grid switch in the toolbar swaps the table for cards led by each listing's cover photo. Your browser remembers the choice.

Every field, column, filter and option is listed in full under Details below.

Add properties#

You have three ways to get listings in:

  • Add property (toolbar): asks for a name, then adds the property to the inventory. Fill in the rest of its fields afterwards in the edit modal.
  • Import (toolbar): opens the Import Properties dialog to upload a spreadsheet (.xlsx, .xls or .csv). See Import a spreadsheet.
  • Connect website (toolbar, in every workspace): opens the Connect website dialog, the one place that pulls listings in from your site. See Connect your website.

Edit a listing#

Click any row (or any card in the grid) to open the edit modal. It holds every field, the extra columns and the linked documents.

Fields in the edit modal#

The modal shows, from top to bottom:

  1. An Images grid.
  2. The fields: Name, Location, Area, City and Country, Map pin, Type, Beds (number), Baths (number), Size (a number with sq ft or sq m beside it), Price, Status, Description (multi-line). When the listing has a web address (a feed's listing link, or the Project website field), a View on website link under Name opens that page in a new tab.
  3. A Contacts section.
  4. One input per custom column. Bookkeeping that a feed, a website sync, a CRM transfer or the photo download stores on a listing (a feed hash, the feed's own listing ID, when photos were last fetched, retry counts, the lists of image and file links, the GoHighLevel object and record a listing came from) is not shown here; those photos and files already appear in the Images grid and Linked documents. A custom value that holds a full date and time written by a sync shows as a readable date, for example "30 Sep 2026, 12:03", rather than an edit box.
  5. A Linked documents section.

Two fields need a word of explanation:

  • Map pin takes a Google Maps link or coordinates such as "9.82546, 118.74541". It sets the exact point on the public portal map. Under it, the editor confirms "Pin set" with the coordinates, or says it could not read a pin.
  • Price is a number, labelled with its currency (for example "Price (AED)"). The price is saved in the currency the label shows: the listing's own currency, or your workspace currency when it has none.

Photos#

Drop photos onto the Images grid or click Add to upload. Every uploaded photo is converted to WebP automatically, so the listing and its portal page load fast without any quality loss you would notice.

  • Set the cover (hero): hover a photo and click Cover. The cover is the hero image on the card and at the top of the portal page. The current cover carries a Cover badge. If you never pick one, the first photo is used.
  • Reorder: drag any photo. The order you set here is the order the gallery shows on the portal page.
  • Remove: hover a photo and click the X. This also deletes the photo from Files.
  • Shown to leads: a photo you add here starts as Gene can send, so it shows on the portal page and Gene can send it to leads. A photo whose file name looks sensitive (a passport, an ID, a contract) starts as Internal instead. Switch any photo either way in Files (see Choose which files the AI can send). An Internal photo never shows on the portal, not even as the cover: the listing's card and page use the next photo that may be shown.

Contacts on a listing#

The Contacts section has three pickers: Developer, Agent and Owner.

  • Each picker lists the contacts that carry that label. Labels are set on the contact's page.
  • Each picker saves the moment you choose.
  • The chosen contact sits at the top of the list, ticked. Click it again to clear the picker; there is no separate clear button.
  • Picking a Developer also fills the portal's developer name when the listing has none yet.
  • The contact's page then lists this property with its role.

Linked documents#

  • Link an existing document: a searchable picker of your documents (PDF, Word, slide decks, spreadsheets and CAD drawings). Photos are not listed here, since they belong in the Images grid. Type part of a name, pick one, and it is linked to this property. You can also link from the Files tab by tagging the property on a file. When every document is already linked to this property (or Files has none yet), the picker says so and links to the Files page.
  • Portal button: under each document the portal offers for download, the text of its button on the listing page. Gene App fills it in for you: "Download project brochure" for the brochure (or the listing's first document when nothing else names it), "Download price list", "Download floor plans", "Download payment plan" and so on, read from the file name. Type your own text to replace it. It saves as you type. Clear the field to go back to the automatic text.
  • Open a file: click its name to open the file in a new tab. A file whose stored name is only a code (a feed's "22d148f0821a391b.pdf") shows what it is instead, such as "Brochure (PDF)", taken from its Portal button text, its role on the listing or what Gene read in it. Hover the name to see the stored one. Files a feed brings in from now on are saved under the listing's name and what the file is instead, such as "Marina Gate Brochure.pdf" or "Marina Gate Floor plan.pdf", when the feed's own name is a code (see Listing feeds).
  • Open in Files: the folder icon beside the name opens the Files page on that file, inside its folder with its Details open.
  • Unlink: the X next to a linked file removes the link.
  • Files marked "Internal" (not shareable) show an Internal tag. They never appear on the portal, so they have no Portal button.

Units#

When units are on for your account, a development's editor lists its units (or lots). In the table, a development with units shows the count under its name, such as "12 units · 4 available".

The assistant can search available units across all developments in one call, by exact code, named project, property type, area, bedrooms, bathrooms, pool, view, furnishing, ownership (freehold or leasehold) and a price range, without reading every project's full details. A lead can ask for several areas at once ("Pererenan and Uluwatu"). Areas are a tree with alternate spellings: a Bukit search includes Uluwatu, Pecatu, Bingin, Ungasan and Nusa Dua, and an Uluwatu search includes Pecatu and Bingin; Legian (and Sunset Road), Nuanu (inside Tabanan) and Sidemen (inside Karangasem) are known areas too. A townhouse search finds townhouse developments by their name, whatever type they are stored as, and a lead asking for a house is shown villas and townhouses. Sea and ocean are the same view, as are paddy and rice field, so a lead asking for a sea view is shown the units stored as Ocean view. Free-text words match each word on its own, in any order, so "furnished private pool" finds a unit whose specs say furnished and private pool in separate fields. Pool, view, furnished, bathrooms and ownership are read as real specs, and a unit with a missing spec does not match (ownership comes from the development's freehold or leasehold details). The assistant returns a handful of real available units (5 by default, up to 10) with the total number that match, their price range and how many there are of each type. When the lead gives a budget, the units closest to it come first, and the assistant may mention one or two real units up to 30% above it, always saying they are above budget. Asked for the cheapest, it sorts by lowest price; asked for new listings, by most recently listed. Prices are compared as USD equivalents, so units listed in different currencies rank together; give a currency with any price range, budget or cheapest-unit request. A lead can give a budget in their own currency (AUD, SGD, RUB, CNY, JPY, EUR, GBP and most others): the assistant converts it at the current rate and tells the lead once what it comes to in the currency your units are priced in ("AUD 150,000 is about US$98,700"), then quotes each unit in its own currency. When a lead writing in Indonesian gives a figure without a currency ("800", "800 juta", "1 M", "1,5 miliar"), it is read as rupiah. Optional preferences such as quiet or sunset only rank real matches. Freehold or leasehold, furnishing, pool, view, a minimum price and a cheapest-first or newest-first order only narrow the search when the lead's own messages or form answers mention them, in English or in Indonesian, Russian, Spanish, Dutch, German or French ("kolam renang", "бассейн", "amueblado", "zeezicht"); a value the lead never gave is ignored, so the assistant does not hide units over a requirement nobody asked for.

When nothing matches exactly, the assistant loosens one filter at a time, in this order: spelling, a wider area, soft specs, bedrooms plus or minus one, then price up to the top of the client's stated budget. It tells the lead what changed. It never loosens what the lead insisted on, sold units, a named project, a unit code or ownership. If still nothing fits, it says there is no exact match and offers the closest real available units, saying how each differs from the request (area, bedrooms, price), rather than only asking which requirement to change. When the lead gave a budget, those closest units are ones with a price; a unit with no price is only offered when nothing near the request has one. A cross-project overview is compact; the assistant reads a named project's full sheet when it needs detailed specs. Whenever the assistant mentions a unit, it names the project with it ("Serenity Sanur Villas, unit A10"), never the unit code alone. When the unit code already contains the project name, it says the code on its own ("Neat House 3", not "Neat House, unit Neat House 3").

  • Add adds a single unit to this development.
  • Import reads a units or lots price sheet (CSV, Excel or PDF). Gene reads the rows and proposes a column mapping for you to review. Nothing is saved until you confirm. If not every row could be read (a long PDF, for example), the import may be partial and marking missing units as sold is off; export the sheet as CSV or Excel for a full import.
  • Mark units missing from this sheet as sold (in the import): existing units of this development whose code is not in the sheet are set to Sold. Nothing is ever deleted.
  • Edit selected applies only the fields you fill in to every selected unit. Rename unit codes replaces the text everywhere it appears in the selected codes (for example A- to B-). Set attributes applies each value to every selected unit; leave a value empty to remove that attribute.
  • Photos & videos on a unit are shown on that unit's public page, and the photos also thumbnail the unit card. Photos you add here start as Gene can send, like the listing's Images grid (see Photos). Documents linked to the unit (a brochure or floor plan) are listed there too, each opening the same way as in Linked documents: click the name to open the file, or the folder icon to open it in Files.

Saving#

  • There is no Save or Cancel. Every field saves on its own as you type, and the marker at the bottom shows Saving..., then Saved.
  • If a save fails, the marker reads "Not saved. Try again". Click Try again to resend it.
  • Close the editor with its X. A change still waiting is saved first; if it could not be saved, Gene App asks before you close and lose it.
  • Photo uploads, cover changes, reordering and the Contacts pickers save the moment you make them.
  • Create post: when Posts is on for your account, this link at the bottom opens the post composer with the listing's photos already in.
  • Push this project: when it is on for your account, this link at the bottom left sends the listing to the leads it fits, or to the people in your Contacts smart lists, each with their own proposal. See Push this project.
  • Marketplaces: when it is on for your account, this section of the editor switches the listing on or off for each property portal you publish to, says what each portal still needs, and holds the advertising permit number. See Marketplaces.

Find and organise listings#

  • Search (toolbar): matches across every field plus all extra-column values. Matching text is highlighted in the table.
  • Filter and clear (filter row): narrow by location, source, Division, type, off-plan or ready, status, beds and price range. Clear filters resets every filter and the search. See Filters.
  • Smart lists (tabs above the filter row): Add smart list opens a dialog where you describe the list in your own words, such as "Villas in Dubai under 2M", and Gene turns it into rules (location, type, price and so on) with a live count of matching listings. The list becomes a tab that shows only the listings matching those rules. Smart lists are shared with everyone in the workspace. See Smart lists.
  • Page through (below the table): Previous / Next with a "Page X of Y" indicator when there are more than 20 results.
  • Table / Grid (toolbar): two icons that switch between the table and a grid of cards.
    • Each card shows the cover photo, the construction and availability chips, the name, the location and the price.
    • Click a card to edit the listing.
    • Select mode always shows the table.

Work with columns#

  • Add column (filter row): adds a new custom column to the table. It starts labelled "New column". Rename it from the header.
  • Columns (filter row): choose which columns you see in the table. What Gene can see is set separately, under AI visibility. Bookkeeping a feed, website sync or CRM transfer stores on a listing (Feed Hash, Ghl Record ID, Price Display and the like) is never offered as a column.
  • Rename a column (table header): hover a column header and click the pencil. This changes the display label only. It never rewrites row data.
  • Reorder columns (table header): drag a column header onto another to change the left-to-right order. Name is an ordinary column: it scrolls with the rest of the table.

Control what the AI can see#

AI visibility (filter row, managers only) opens What the AI can see, with one switch per property field. Price, Beds and every column an import or sync brought in are in the list, except the sync's own bookkeeping (feed hash, GoHighLevel record IDs and the like), which Gene never shares.

  • The list is in three groups: Standard fields, then Imported and custom fields (columns that hold a value on at least one property), then Not filled in on any property yet. The top line counts how many fields are on, and Find a field narrows a long list.
  • Switch a field off and Gene stops using it and sharing it with leads. A commission column is a typical example.
  • Every field starts on, except fields that look like commission or owner prices, and extra columns you have hidden from the table.

Edit the type and status choices#

Type and Status stay free text, but the listing editor suggests the choices your listings already use, so "Villa" does not end up as "villa" and "Villas" on three listings. To tidy those choices, open the Type or Status filter and pick Edit options at the bottom (managers only).

  • The dialog lists every type (or status) your listings hold, with how many listings have each.
  • Rename a choice by editing its name. Every listing that has it changes when you leave the field. Rename it to a choice that already exists and Gene App asks to merge the two.
  • Remove a choice with its trash icon. After a confirm, it is cleared from every listing that has it, and those listings are left without a type (or status).
  • Add a choice in the last row. The listing editor offers it straight away, before any listing uses it.
  • Listings that come from a connected website or XML feed get their type and status from there again on the next sync.

Delete listings#

  • One listing: the trash icon on the right of each row removes that property.
  • Several at once: Select (toolbar) appears when more than one property is in view. It enters multi-select mode. Tick the listings and press Delete to remove them.

Either way, Gene App asks you to confirm first. Once deleted, the AI can no longer quote those listings. Listings that come from a connected website return on the next sync, while anything added by hand is gone for good. You have a few seconds to undo.

Import a spreadsheet#

Click Import in the toolbar to open the Import Properties dialog.

  1. Drop or pick an .xlsx, .xls or .csv file. Every row is read, however long the sheet, and all columns are kept. To import from a Google Sheets link instead, see Connect your website.
  2. Gene auto-maps headers to name, location, type, beds, price, currency, status and description. Anything unmapped becomes a custom column.
  3. A preview table follows. Tick which rows to import.
    • Likely duplicates (against existing listings and within the file) are flagged "Duplicate" and pre-excluded.
    • Skip dupes and Keep all toggle them.
    • A counter shows how many of N rows will import.

A sheet with one row per unit#

A developer's inventory often has one row per unit, with the project name repeated on each row ("White Palm, A-101", "White Palm, A-102"). When a sheet has a project column and a unit number column, and the projects repeat, Gene imports it by project instead:

  • Each project becomes one property, and its rows become that property's units. The preview reads "1,512 units in 36 projects detected" and lists one row per project with its Location, Units (and how many are available), Type, Price and Status. Untick a project to leave it out, then press Import N projects.
  • Project details are read once per project: location, city, developer, project status, ownership (freehold or leasehold), lease years and lease end date, handover and description. Each unit gets its unit number, status, beds, size, price and type, plus its block or building and baths.
  • The project's price is its cheapest unit, shown as "From" when the units are priced differently.
  • Duplicates are judged on the unit number within a project, never on the project name, so 22 units of one project are 22 units, not 1 listing and 21 duplicates. A unit number repeated inside one project keeps its last row.
  • Importing the same sheet again updates it instead of adding a copy. A project already in Gene App (same project ID from the sheet, else the same name) is marked In Gene in the preview and updated from the sheet, and its units are matched by unit number and updated in place. A listing kept up to date by a listing feed or WordPress listing sync is only matched on the project ID, never on the name, so a sheet project that shares its name is added as a listing of its own and the synced listing is left as it is. Blank cells never wipe a value already there.
  • Rows with no project or no unit number are skipped, and the preview says how many.
  • Units are added when units are on for your account. Otherwise the projects are imported on their own, and the confirmation says how many units were not added.

A sheet with one row per listing imports one property per row, as above.

When WordPress listing sync is on for your account, a WordPress tab sits next to File upload. See WordPress listing sync.

Connect your website#

Click Connect website in the toolbar. The dialog is headed Connect website. Once WordPress listings sync from your site, both the button and the dialog read Website connected, and the dialog shows the site's address.

  • Sync your listings:
    • Other website / feed opens the AI reader. Paste a website or API URL and Gene extracts the listings (listing pages, Webflow or API endpoints). Paste a Google Sheets link and Gene reads the whole sheet like a file upload instead, every row, including one row per unit. The sheet must be shared as "Anyone with the link can view". The same preview and duplicate check as a file upload follows.
    • WordPress (Manage WordPress sync once connected) and XML listing feed appear when those syncs are on for your account. See WordPress listing sync and XML listing feeds.
  • Visitor tracking (when website tracking is on for your account): a link to Settings, Lead Sources, Website, where the tracking script lives.
  • Ask Gene: hands you to the assistant to walk you through connecting, step by step.

The property portal#

Available when the property portal is on for your account.

The property portal is a public website of your published listings. You share one clean link with buyers and agents instead of sending listings one at a time. Every published property becomes its own page, kept in sync with your inventory: edit a listing and the portal updates automatically.

Publish and share a listing#

  1. Open a listing and turn on Show on portal in its Portal section.
  2. Set the Link (slug), the readable end of the URL (for example sora).
  3. Set the Visibility: Public, Unlisted or Private.
  4. Share the link. Copy the home link from Your portal address under Settings > Portal, or use Copy inside a listing for that listing's link. Those are the public addresses to send to buyers.

Portal addresses#

Until you connect your own domain, the portal lives at:

PageAddress
Portal homeportal.gene.so/<your-workspace> (for example portal.gene.so/mojo)
A projectportal.gene.so/<your-workspace>/<project>
A unitportal.gene.so/<your-workspace>/<project>/<unit>

<your-workspace> follows your Friendly Business Name, and you can rename it under Your portal address in Settings > Portal. Links you already sent keep working after a change.

What buyers see#

  • Your logo in the header. Every portal page (home, listing, unit) shows the logo from Settings > Business Profile at the top left, in its dark-background version when the buyer views the portal in dark mode and you uploaded one. The header shows the logo or your company name, never both: the logo on its own when you uploaded one (so a logo that already spells your name is not repeated), your company name when you did not.
  • One download button per document. A listing's Documents section offers each shareable linked document as its own button, labelled by what it is ("Download project brochure", "Download price list"), or by the text you set in the document's Portal button field (see Linked documents). With more than one document, Download all N as a zip sits underneath.
  • The primary document beside the enquiry button. The side card next to Submit interest offers the listing's first document by its button label, with a link to the rest ("2 more documents").

Enquiries from the portal#

A buyer who presses Submit interest on a listing becomes a new lead in Gene App.

  • The lead is assigned through your Routing pool, like a lead from any other source.
  • Routing rules apply on top where they are switched on.
  • Someone already in Gene App keeps their owner. Gene follows up in your existing conversation with them instead of sending a second welcome.

See the portal yourself#

View portal on the Properties page, and Open or View full portal inside a listing, open the portal as your team sees it. Anyone signed in to your workspace skips the buyer sign-in, and nothing they open is recorded as lead activity.

Use your own domain for the portal#

You can serve the portal from your own web address instead, like portal.yourcompany.com. Set it up under Settings > Portal:

  1. Enter the address you want (for example portal.yourcompany.com).
  2. Gene shows one DNS record to add: a CNAME.
    • Host: the subdomain label (for example portal). Type only the label; your DNS provider fills in the rest of the domain.
    • Value: cname.vercel-dns.com.
  3. Add that record at whatever provider manages your domain's DNS (your registrar).
  4. Click Verify. The domain goes live once the record is verified, which can take a few minutes to propagate.

Once verified, the whole portal serves from your domain (portal.yourcompany.com/<project>) and the share links switch to it automatically.

Note

Which domain is which: the portal domain needs only the one CNAME record above. It is different from the email sending domain (SPF and DKIM records under Settings > Communication > Email, Connect your domain) and from AI Visibility (an A record).

Tips#

Tip

When a property's currency is unknown, the price shows as a plain number rather than an assumed symbol, so a missing currency never looks like the wrong one. Set the currency in the edit modal to format it.

Tip

Keep price and status current. The AI references these live values when answering leads, so accurate fields mean accurate replies.


Details#

Everything on the Properties inventory screen, for when you need to look something up: every field, column, filter and action. The standalone Properties page and Settings, Knowledge show the same inventory, so all of this applies in both places.

Per-property fields#

These are the fields on each property, shown as table columns and editable in the edit modal (click a row).

  • Name. Text. The first column by default. New rows start as "New property".
  • Location. Text.
  • Type. Text, free form (for example Apartment, Villa). The edit modal suggests the types your listings already use.
  • Beds. Number (bedrooms). On import, messy values are parsed: "Studio" becomes 0, "3+1" becomes 3, "Three" becomes 3, "3 BR" becomes 3.
  • Baths. Number (bathrooms).
  • Size. Number, with its unit picked beside it in the edit modal: sq ft (the default) or sq m. The table shows it with the unit, for example "1,264 sqft".
  • Price. Number. An older AED price field is kept in sync alongside it. Filtering and display fall back to that AED value when the main price is empty.
  • Currency. Select shown beside Price in the edit modal. Options: Unknown (empty), AED, USD, EUR, GBP, SAR, INR, JPY, CNY. When unknown, the price renders as a plain grouped number, never an assumed symbol.
  • Status. Text, free form (for example Off-plan, Available, Sold, Reserved). The edit modal suggests the statuses your listings already use.
  • Description. Multi-line text. Hidden by default in the table (it is a base column you can unhide or reorder) and always editable in the modal.
  • Division. Dropdown: which part of your business the listing belongs to. Every workspace starts with Off-plan, Secondary and Trophy asset; see Division.
  • Custom columns. Any column an import did not map to a base field is kept per property as custom data. Each appears as its own table column and as an input in the edit modal, except the bookkeeping a feed, sync or CRM transfer keeps (Feed Hash, External ID, photo fetch times, retry counts, image and file link lists, Price Display, Country ISO, Price As Written, Ghl Object, Ghl Record ID, Duplicate Of Ghl Record, Wp Modified, Field Defaults Applied). Those are never a table column, a choice under Columns, an input in the edit modal, a field in Data & Fields or a switch under AI visibility. The values stay stored on the listing; the Price and Location columns already show the price and country. A sync-written date and time shows there as a readable date, not an input.
    • Raw column names become readable titles: "price_usd" becomes "Price USD", "gross_yield" becomes "Gross Yield".
    • A header that already reads like a label (it has spaces, slashes or brackets) keeps its wording as typed, so "Plot / Land (m2)" stays "Plot / Land (m2)" in the table, in What the AI can see and in what the AI is told.
    • Known acronyms like USD, ROI and SQFT stay upper-cased.

Division#

Every listing has a Division field: a dropdown that says which part of your business the listing belongs to, such as Off-plan, Secondary or Trophy asset.

  • It shows in the edit modal with the other fields, as a column in the table and as the Division filter.
  • The choices are yours. Every workspace starts with Off-plan, Secondary and Trophy asset. Rename them, add more or remove some on the Properties object in Data & Fields, on its Fields tab.
  • A listing feed can set it for every listing it brings in, for example Secondary for a resale feed and Off-plan for a developer's feed (see Field values a feed sets). A Division you change by hand on one listing stays as you set it.
  • Listings brought across from your old CRM's custom objects get the Division chosen for their object in the import (see Custom objects).

Columns and table#

The page shows a single horizontally scrolling table. Every column, Name included, scrolls with it.

Columns are not fixed: they are the base fields plus any custom columns found in your data (sync and import bookkeeping left out, see Custom columns under Per-property fields). The default order is Name, Location, Type, Beds, Price, Status, Description. The other fields of a listing (Baths, Size, Area, City, Country, Developer, Handover and so on) can be added as columns too, and show the listing's value, or "-" when it has none.

Column controls:

  • Rename. Hover a header and click the pencil. Display label only; never rewrites row data.
  • Reorder. Drag a header onto another header.
  • Add column. Button next to the filters. Adds a custom column labelled "New column" (then "New column 2", and so on, to stay unique) that may have no data yet.
  • Columns. Button next to the filters. A checklist of every column; unticked columns are hidden from the table. What the AI sees is set separately, under AI visibility.
  • Hidden columns are dropped from the table. The arrangement (labels, order, hidden and added columns) is saved for the whole workspace.
  • AI visibility. Button next to Columns, for managers (anyone who can configure the AI). Opens What the AI can see.
    • One switch per field, standard and custom, saved the moment it is flipped. Name is always on.
    • Grouped as Standard fields, Imported and custom fields (those with a value on at least one property), and Not filled in on any property yet, with a count of how many are on. A search box (Find a field) appears when the list is longer than 12 fields.
    • A field switched off is never used or shared by Gene with leads.
    • Every field starts on, except fields that look like commission or owner prices, and custom columns you have hidden from the table. Switch them on here to override.

Pagination: 20 properties per page, with Previous / Next and a "Page X of Y" indicator. The page resets to 1 whenever search or filters change.

Filters#

A filter row sits above the table, in this order: Location, Source, Division, Type, Off-plan or ready, Status, Beds, Price.

  • Location. A pill that opens a searchable list of the places your listings name, each with how many listings name it, most first. The places come from each listing's City, Area, Location and Country, split into their parts ("Dubai, UAE" gives Dubai and UAE). Tick several places to see listings in any of them; the pill reads the place, or "Dubai +2" for several. A listing matches when its city, area, location or country names the place as a whole word. Shown once a listing has a place.
  • Source. Select, shown only when more than one source exists. Options: All sources, plus each distinct source value. A source is the import file name, the connected URL, an XML feed's name (the site it reads from, such as rehouse.ae), or "Manual" for properties added by hand.
  • Division. Select. Options: All divisions, plus each Division your listings have, in the order of the Division field's choices. Shown once a listing has a Division (see Division).
  • Type. Select. Options: All types, plus each distinct type found across the inventory (sorted). Managers also see Edit options at the bottom, which opens the type list (see Edit the type and status choices).
  • Status. Select. Filters by availability, read from each listing's status: a status that mentions sold counts as Sold Out, reserved or under offer as Reserved, withdrawn or off market as Withdrawn, and anything else (Off-plan, Ready, an empty status) as Available. Options: All statuses, Available and Sold Out, plus Reserved and Withdrawn once a listing has them. Managers also see Edit options at the bottom, which opens the status list.
  • Off-plan or ready. Select. Filters by the construction stage read from each listing's status (the same Off-plan or Ready chip the cards show), separately from availability, so "Off-plan" and "Available" can be combined. Options: Off-plan or ready (no filter), plus Off-plan and Ready when a listing has them. Hidden when no listing's status says either.
  • Beds. A pill that opens a range slider, from 0 to the most bedrooms in the inventory (at least 5). The pill reads the range picked, such as "2 - 4", "Up to 3" or "3+". A property matches when its bedrooms fall inside the range; listings with no bedrooms set drop out once a bound is set.
  • Price. A pill that opens a range slider, from 0 to just above the highest price in the inventory, in the workspace currency. The pill reads the range, such as "Up to AED2M" or "AED1M+". A property matches when its price (or the older AED price as a fallback) falls inside the range.
  • Clear filters. Appears when any filter or the search is active; resets all filters and the search.

Search box: free text. Matches across name, location, area, city, country, developer, type, status, description, beds, price, the older AED price, currency, source, and every custom-data value, joined and lowercased. Matching substrings are highlighted in the table.

Smart lists#

A row of tabs above the filter row, shown once the inventory has a listing. A smart list is a set of rules: its tab shows only the listings that match them, with a count of how many match right now. Smart lists are shared with everyone in the workspace.

  • All is the built-in default (no filters, no search).
  • Add smart list opens New smart list:
    • Describe the list: one box where you write what should be in the list, such as "Villas in Dubai under 2M", "Off-plan 3 bed apartments" or "Ready townhouses in Bali from 500K". As you type, Gene turns it into rules, read against what your own listings hold (their places, types, statuses, sources and developers), so "Dubai" becomes a Location rule only when you have listings in Dubai. Words it cannot place on its own are passed to the AI, which can only pick values your listings already have. That happens when you leave the box or press Enter (or after a short pause in typing), and "Reading the rest..." shows while it does. It never takes more than 20 seconds: if the AI cannot read the rest, the rules already shown stay and the box says "Couldn't read that, try again or adjust the rules below." with a Try again link.
    • The rules show as chips under the box, each with an x to remove it, followed by a live count such as "12 listings match". Words that did not become a rule are listed as "Not used". If nothing could be read, it says "Couldn't turn that into rules. Try a place, type, price or beds, or adjust the rules below." and the words become a search, so the list still works.
    • Adjust rules (folded): a search box plus the same Location, Source, Division, Type, Off-plan or ready, Status, Beds and Price controls as the filter row, for fine-tuning by hand. They start from the filters and search on screen; typing a description replaces the rules with what it reads.
    • Name: filled in from the description as you type (for example "Villas in Dubai under 2M"). Edit it if you want another name.
    • Create turns on as soon as the list has one rule; Enter in the description box creates it too. With no rule it reads "Add at least one rule, otherwise this list is the same as All."
    • The list keeps its description. Hovering its tab shows it.
  • Click a tab to open the list. Its filters and search go on screen, and its rules show as chips under the tabs, such as "Location: Dubai", "Type: Villa", "Off-plan", "3+ beds" or "Price up to AED2M". Click a chip to edit the rules.
  • A list saved without rules shows no count, an Add rules chip and "No rules yet, so this list shows all properties."
  • If you change the filters or search while a list is open, the chip row shows "Filters changed." with Keep them in this list (saves what is on screen as the list's rules) and Undo (puts the list's rules back).

Custom lists have a per-list menu (the dots beside the tab):

  • Edit rules. Opens Rules for the list: the Describe the list box prefilled with its description, the rule chips with the live count, and Adjust rules. Rewriting the description reads it into fresh rules. Changes save as you make them; close it with the X. A save that gets no answer within 20 seconds stops and shows "Not saved." with Try again instead of staying on "Saving...".
  • Rename. Inline rename.
  • Delete list. Opens a confirm dialog. Removes only the list, not any properties.

Sort and views#

There is no sort control. Rows and cards appear in stored order and are paginated 20 per page. The table and the grid of cards share the same filters and pages.

  • A Table / Grid switch (two icons in the toolbar) chooses between the table and a grid of cards.
  • The choice is remembered per browser. Select mode always shows the table.
  • Each card shows the cover photo (or a placeholder), the construction and availability chips, the name, the location and the price.

Row and bulk actions#

  • Edit. Click any row (or card, in the grid) to open the edit modal.
  • Push (per row). Megaphone icon beside the listing name, shown when you hover the row, when Push this project is on for your account. Opens the same popup as Push this project in the editor.
  • Delete (per row). Trash icon at the right of each row deletes that property.
  • Select. Toolbar button (shown when more than one property is in view) that enters multi-select mode. In select mode:
    • a checkbox column appears;
    • Select all / Deselect all toggles the current page;
    • Cancel exits;
    • Delete (N) bulk-deletes the chosen properties.

Edit listing modal#

Opened by clicking a row or a card. Below the Images grid (see Photos), the fields come in this order:

  1. Name, with a View on website link under it when the listing has a web address: the listing link a feed brought in, or else the Project website field. It opens the page in a new tab.
  2. Location, hint "How the place is described to buyers, e.g. Kuta Hills, South Lombok"
  3. Area
  4. City and Country (one row)
  5. Map pin, hint "Paste a Google Maps link or coordinates. Sets the exact point on the public portal map."
  6. Type, with the types your listings already use suggested as you type. Any other text is accepted too.
  7. Beds (number)
  8. Baths (number) and Size (one row). Size is a number with a unit picker beside it: sq ft or sq m. A size typed with no unit set is saved in sq ft.
  9. Price (number). The label carries the currency, for example "Price (AED)", and the price is saved in that currency.
  10. Status, with the statuses your listings already use suggested as you type. Any other text is accepted too.
  11. Description (multi-line, resizable)

Then come the Contacts section, one input per custom column (feed and sync bookkeeping left out, sync-written dates and times shown as a readable date), and the Linked documents section.

Contacts:

  • Developer, Agent, Owner. Three pickers, each listing only the contacts that carry that label (set on the contact's page). Empty state: "No contacts labelled Developer yet. Add the label on a contact to pick it here." (Agent and Owner read the same way.)
  • Each picker saves the moment it changes, with its own saved indicator. Clicking the chosen contact again clears it.
  • Picking a Developer fills the portal's Developer name on portal when that field is empty.
  • Selling agent on your team. Follows the three pickers when agent contact cards or routing rules are on for your account. Pick a teammate, or "Nobody yet".
    • It lists only teammates who can take leads: people who have joined the workspace (not pending invites), and not Tech seats.
    • When routing rules and Leads interested in a property are both on, a routing rule set to Assign to the property's agent sends this property's leads to that person. The hint under the picker says "Routing rules can send this property's leads to them."
    • Without property links that rule action is not offered, so the hint reads "The teammate who sells this property."

Linked documents:

  • Lists files linked to this property with an icon by type (image, video, or document) and an "Internal" tag for files that are not shareable.
  • Under each shareable document (not videos, which the portal plays instead), a Portal button text field that autosaves, with a saved indicator beside it. It holds the button text buyers see on the listing page, up to 80 characters; empty means the automatic text.
  • Link an existing document... opens a searchable list of the workspace's documents not yet linked (search placeholder "Search documents", "No document found." when nothing matches). It stays visible when every document is already linked (or there are none yet), and then says so with a link to the Files page. While a link saves it reads "Linking...".
  • Link an existing document, Portal button and Unlink work as described in Linked documents above.
  • Empty state: "No files linked yet. Link one below, or tag this property on a file in the Files tab."

Footer:

  • No Save or Cancel button. Name, Location, Type, Beds, Baths, Size and its unit, Price (and the older AED price kept in sync with it), Currency, Status, Description and all custom values save as you type.
  • The status marker on the right shows Saving..., Saved, or "Not saved. Try again" with a Try again link.
  • The X closes the editor after saving anything still waiting.
  • Push this project (on the left, when it is on for your account) opens the push popup: Gene shows the leads this listing fits (or the people in the smart lists you choose in Send to) and sends each one a proposal. See Push this project.
  • Create post (on the left, when Posts is on for your account) opens the post composer with this listing's photos in.

Import dialog#

The Import button opens the Import Properties dialog on File upload. When WordPress listing sync is on for your account, a tab bar adds WordPress next to File upload.

File upload#

  • Accepts .xlsx, .xls, .csv via file picker or drag and drop. Every row is read, with no row limit. All columns are preserved for the AI.
  • Headers are auto-mapped to fields. Case, spaces and punctuation are ignored ("Project Name", "project_name"), an exact header name wins over a partial match, and a column that is empty on every row is never mapped:
    • Name: project name, project, development, complex, property name, listing name, name, title, scheme (a developer, agent, owner or unit name column is never taken as the name)
    • Location: location, address, district, community, sub community, neighbourhood, locality, region, emirate, borough. "Area" is read as floor area, not location.
    • Type: property type, unit type, type, category, layout
    • Beds: bedrooms, beds, bed, br, bhk ("Studio" counts as 0, "3+1" as 3). Bathrooms never land in Beds.
    • Price: price, asking price, list price, sale price, total price, cost, value, rent (not price per sq ft, deposit, commission or fee). The currency is detected from the cell value, then from a code in the column name such as "Price (USD)".
    • Currency: currency, price currency, curr, ccy (read per row)
    • Status: status, unit status, availability, sale status, then project or construction status
    • Description: description, desc, details, notes
  • Currency priority: an explicit currency column wins, then a symbol or code detected in the price cell, then a code hinted by the price column name.
  • Rows with no name fall back to the location, then the first non-empty text value; rows with no usable name are skipped. Fully empty rows are dropped.
  • Any unmapped column (developer, unit number, size, tenure and so on) is kept as custom data under its own header.
  • A sheet with one row per unit (a project column and a unit number column, projects repeating) switches to the project preview instead. See A sheet with one row per unit.
    • Unit numbers are read from unit, unit no, unit number, unit code, unit ref, plot no, lot, villa no, apartment no, flat no or ref. A project ID column (project id, project code, development id), when there is one, groups rows ahead of the name.
    • Also read per project: developer (developer, builder), project status (project status, construction status, stage), ownership (ownership, tenure), lease years (lease years, lease term, lease), lease until (lease until, lease expiry, lease end), handover (handover, completion, delivery), city, latitude and longitude.
    • Also read per unit: size (size, area, built up area, sq ft, sq m, read as sq m unless the header or value says sq ft), baths, and block (block, building, tower, phase, cluster). With no type column, the type is read off the block or project name when it names one type only ("Villas").
    • Any other column becomes a project detail when it is the same on every row of a project (a brochure link), else a unit detail (a floor).
    • Preview step: a select-all checkbox and one row per project with Project, Location, Units, Type, Price and Status. A banner notes projects already in Gene App, rows skipped, and unit numbers repeated within a project. Back returns to upload. Import N projects runs the import.
  • Preview step: a table with a select-all checkbox, Name, Location, Type, Beds, Price and Status, plus a per-row include checkbox.
    • Duplicates (matching existing properties or repeated within the file) are flagged "Duplicate" and auto-excluded.
    • A banner shows the duplicate count split into "already exist" and "repeated in file", with Skip dupes and Keep all buttons.
    • A counter shows "X of N will be imported" (and notes when extra columns are preserved).
    • Back returns to upload. Import N properties runs the import.

Opened by Other website / feed in the Connect website dialog.

  • Website, feed or Google Sheets link. Text input (placeholder https://example.com/properties). Accepts listing pages, Webflow, API endpoints or a Google Sheets link.
  • Extract properties. A website or API URL goes to the AI extractor (this can take 10 to 20 seconds), then shows the same preview and dedup table as File upload before import.
    • A Google Sheets link is not sent to the AI. Gene downloads the tab the link points to, every row, and runs it through the same column mapping and preview as a file upload, including the project preview for a sheet with one row per unit. The sheet must be shared as "Anyone with the link can view"; otherwise Gene says so and suggests downloading it and uploading the file.

Connect website dialog#

The Connect website toolbar button (it reads Website connected, with a check, once a WordPress site is syncing) opens a dialog of the same name.

  • Header: once connected, "Syncing daily from <your site>". Your property listings sync in from your website and stay updated.
  • Sync your listings: WordPress (Manage WordPress sync once connected) when WordPress listing sync is on for your account; XML listing feed when listing feeds are on; and Other website / feed, always. A website syncs daily and, where listing feeds are on, an XML listing feed syncs every 30 minutes.
  • Visitor tracking (when website tracking is on for your account): a link to Settings, Lead Sources, Website, where the tracking script lives.
  • Ask Gene: closes the dialog and asks the assistant to help connect the site.

Empty states#

  • No properties yet: "Add your first property" plus Import spreadsheet and Add property buttons. Gene matches leads to the listings you add here.
  • No results after filtering: "No properties match your search or filters." with a Clear filters button.
  • Currency (edit modal): Unknown, AED, USD, EUR, GBP, SAR, INR, JPY, CNY.
  • Beds filter: a range slider from 0 to the most bedrooms in the inventory (at least 5).
  • Location filter: a searchable list of the places your listings name, with a listing count each ("No place found." when the search matches none). Several can be ticked.
  • Off-plan or ready filter: Off-plan or ready, Off-plan, Ready (each only when a listing has it).
  • Type filter: All types, plus distinct types in the inventory, then Edit options (managers).
  • Status filter: All statuses, Available, Reserved (when a listing has it), Sold Out, Withdrawn (when a listing has it), then Edit options (managers).
  • Edit options dialog (Property types / Property statuses): one row per choice with its listing count ("Not used yet" for an added choice no listing has), a trash icon to remove it, and an "Add a type" (or "Add a status") row. Changes save on their own.
  • Smart list menu: Edit rules, Rename, Delete list.
  • Source filter: All sources, plus distinct sources (file names, URLs, XML feed names, Manual).
  • Import tabs: File upload, plus WordPress when WordPress listing sync is on.