get_listing
ChatGPTUse this only when the user asks about one specific listing for something its search_listings result does not carry, such as every price it had before, its amenities, rules, community fees or floor plans; a search_listings result already carries each listing's price, size, area, project, pictures and link. Read one published real estate listing by its id. Returns the listing's title in every language it has, the price of each of its operations and every price it had before, in currency when given or else in the listing's own currency, everything the publisher declared about the property, its description, its publisher and contact, where it is, and the URLs of its pictures. A listing is only found in the country it belongs to, so ask the user for that country when they have not said, rather than trying several. The advertiser can be asked about the listing through submit_enquiry.
search_geo_entities
ChatGPTUse this before search_listings whenever the user names a place to search in. Turn the name of an area — a neighbourhood, a city, a district, a province — into the osmId that search_listings needs to filter by it. Returns at most 5 candidates, each with the areas that contain it and how many listings it has, so tell two areas of the same name apart by those. An empty list means no area matched: tell the user so and ask them to name it differently, never invent an id or reuse one from another country.
search_listings
ChatGPTUse this when the user wants to find property to buy or rent: condos, apartments, houses, villas or land. It searches the live inventory, so prices and availability are current. It returns one page of up to pageSize matching listings with the total number of matches, and the user sees them as cards and on a map. Do not search again to answer a question about a listing it already returned, such as 'tell me more about the second one': answer from that result, and call get_listing with the listing's id for what the result does not carry. Ask the user for anything you do not know rather than guessing it: the country, whether they are buying or renting, the kind of property, and the currency of any budget they give you. When they say any kind of property will do, leave propertyTypes out. To filter by an area or by a building, first call search_geo_entities or search_projects to turn the name the user gave into an id, and pass that id here; never invent one. When the user gives map coordinates instead of a place name, pass them as boundingBox. Listings come ordered by relevance, the most relevant first, unless the user wants the cheapest, the most expensive or the newest ones first: then order them with sorting. When the user wants more of the same search, ask for the next page; to show ones that fit the user better, add filters such as an area, a property type, amenities, furnishing, bedrooms, bathrooms, a floor area, a budget, whether it is a foreclosure, how recently it was published or, in Mexico, the government housing credit the buyer will pay with.
search_projects
ChatGPTUse this before search_listings whenever the user names a building, condominium or development project. Turn its name into the projectId that search_listings needs to filter by it. Returns at most 5 candidates. An empty list means no project matched: tell the user so and ask them to name it differently, never invent an id or reuse one from another country.
submit_enquiry
ChatGPTPuts a user interested in one listing in touch with its advertiser: sends the advertiser the user's interest in the listing together with their contact details and message, so the advertiser can contact them. Use this when the user wants to ask the advertiser about a listing, visit it or be contacted about it. Never make up contact details: ask the user for them.