UpliftCRE Docs

AI Citability

The machine-readable surfaces every UpliftCRE site publishes — the listing fact feed, llms.txt, markdown doors, the property-facts table, and the information AI can read (JSON-LD).

Your site is built to be read by machines as well as people. This page documents the surfaces every site publishes for AI assistants and developers: a JSON fact feed per listing, a plain-text site index, markdown twins of key pages, a facts table, information AI can read (JSON-LD), and the standard sitemap and feeds.

Availability

  • The JSON-LD information AI can read is always on. So is the privacy guard: confidential listing details — internal notes, seller motivation, comps, private documents, coaching fields, assessed value, legal description — are withheld from every machine-readable response, always.
  • The fact feed, the llms.txt index, the markdown doors, and the property-facts table are part of the platform's AI Citability surfaces. They are enabled per site by the team — they are not a switch you hold. If they are not live on your site yet, ask hello@upliftcre.com.
  • The site must be public. A site hidden from search engines serves none of the crawler-facing surfaces.

The listing fact feed

Every published listing exposes a JSON fact feed, on your own domain: GET https://www.yourdomain.com/wp-json/ucre/v1/listings/{id}.

The id is the listing's id — visible in the dashboard's listing links, in the CSV export's Listing ID column, and through the connector's list tool. The endpoint is public: no sign-in, no key. An unpublished, hidden, or wrong-id request answers a plain not-found — there is no way to tell a hidden listing from a missing one.

The response carries the listing's identity — id, title, public URL, published and modified timestamps — plus a facts object:

FieldMeaning
labelThe fact's display label — the price fact reads "Asking price" or "Sold price", never a bare "Price"
valueThe value as published
unitUSD, sqft, acres, years, ft, percent — or none
sourceWhere the value came from: advisor for advisor-entered values, or an external source such as the county appraisal district for tax and parcel facts
as_ofWhen the value was current

The fact set is allowlisted, not scraped. A fact appears because it is registered — never merely because a field exists. The set, in feed order:

  • Deal terms: construction status, WALT (years), listing status, transaction type, property type, property subtype, asking price, lease rate, lease period, lease structure
  • Location: address, city, state, postal code
  • Size and specs: building size (SF), lot size (acres), year built, zoning, parking spaces, parking type, clear height (ft), suite count, tenancy
  • Tax and parcel: parcel / APN, annual property tax, taxing jurisdictions
  • Financials: NOI, cap rate, occupancy — published only when the listing's tier is set

Enrichment facts register as they become available and join the same set.

The property-facts table

The same fact set can render on the listing page itself as a semantic HTML table — so the facts a visitor reads are the facts the feed serves. Templates place it with the shortcode [ucre_property_facts] (attributes: id — defaults to the current listing; title — defaults to "Property Facts", pass an empty string to omit the caption).

The emitted markup is stable for styling:

ElementClass / attribute
Tableucre-facts
Captionucre-facts__caption
Rowucre-facts__row
Label cellth.ucre-facts__label
Value celltd.ucre-facts__value, with data-fact="{key}"

With the surfaces off, the shortcode renders nothing — never literal shortcode text.

llms.txt

The site serves a virtual llms.txt at its root — /llms.txt on your domain. It is plain text, generated at request time, and carries:

  • Your company name and tagline.
  • A Listings section linking the listings archive and the newest listing's fact feed.
  • A Notes section stating that the same fact set appears on the page, in the JSON feed, and in the JSON-LD; figures are as published; and the sitemap location.
  • The markdown index link, when the markdown surfaces are on.

Markdown doors

Three ways to read key pages as markdown, all on your own domain:

  1. The site index: /index.md — the whole site, listed.
  2. The .md door: take a listing, glossary, or team page URL and replace the trailing slash with .md — for example, /team/jane/ becomes /team/jane.md.
  3. Content negotiation: request the normal URL with an explicit Accept: text/markdown header. Wildcard accept headers do not trigger it — the preference must be explicit.

The doors cover listings, the CRE glossary, and team pages.

Information AI can read (JSON-LD)

Every page emits JSON-LD — information AI can read. The organization graph runs site-wide, breadcrumbs appear on every page but the home page, and archive pages list their items. Per content type:

ContentType
Home pageRealEstateAgent (with the site's organization and website details)
ListingsRealEstateListing (with broker, offer, price specification, address, geo, and the fact set as additional properties)
Team pagesPerson (with RealEstateAgent and credentials)
Insights articlesArticle
Market-news articlesNewsArticle
Market reportsReport (with place coverage, measured variables, and mentioned terms)
Case studiesArticle
Track record dealsArticle
Markets servedPlace
ServicesService
Asset typesArticle
Glossary termsDefinedTerm
FAQsFAQPage
TestimonialsReview — only after the client's sign-off
Any other pageWebPage

Pages that carry FAQ content emit an additional FAQPage node alongside their primary type.

Sitemap and feeds

  • Sitemap: the standard sitemap at /wp-sitemap.xml. Individual published pages stay in it and live at their own links; below a section threshold, the section's archive page and its category and tag listings are held back — see Tools and sections for the thresholds.
  • RSS: each content type has its standard feed. Below a threshold, that type's feed is switched off rather than serving a near-empty collection.
  • Listing visibility: listings marked hidden by their visibility setting are excluded from the feed, the JSON-LD, and these surfaces.
  • Search and REST collections stay open below thresholds, by design — a section being too young to have an archive page does not hide the individual work.

On this page