Save the user's search criteria once as a named, persistent watchlist (same criteria as search_properties) with alert preferences (min_score, new listings, price drops with optional minimum percent or amount, back on market). Realty.Bingo then monitors the area on a schedule, independent of any conversation, and records new matching listings, price reductions and relistings as alerts. Saving again with the same name replaces it. Returns how the criteria were interpreted (hard vs soft vs excluded) and a preview from stored data. Preferences about the people in a neighbourhood are refused (fair housing).
View input schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"criteria": {
"type": "object",
"properties": {
"listing_type": {
"type": "string",
"enum": [
"sale",
"rental"
]
},
"location": {
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"zip_codes": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{5}$"
}
},
"center": {
"type": "object",
"properties": {
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"radius_miles": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 50
},
"polygon": {
"minItems": 3,
"maxItems": 100,
"type": "array",
"items": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": -90,
"maximum": 90
},
{
"type": "number",
"minimum": -180,
"maximum": 180
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
},
"preferred_zip_codes": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{5}$"
}
}
},
"additionalProperties": false
},
"property_types": {
"maxItems": 7,
"type": "array",
"items": {
"type": "string",
"enum": [
"single_family",
"condo",
"townhouse",
"multi_family",
"apartment",
"manufactured",
"land"
]
}
},
"exclude_property_types": {
"maxItems": 7,
"type": "array",
"items": {
"type": "string",
"enum": [
"single_family",
"condo",
"townhouse",
"multi_family",
"apartment",
"manufactured",
"land"
]
}
},
"min_price": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000
},
"max_price": {
"description": "Hard ceiling: listings above it are excluded.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000
},
"ideal_max_price": {
"description": "Soft target: listings above it rank lower but stay in.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000
},
"min_bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"preferred_bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"bedrooms_exception": {
"description": "e.g. 'three bedrooms, but two is fine with an office': min_bedrooms 3 plus {min_bedrooms: 2, requires: ['home office']}",
"type": "object",
"properties": {
"min_bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"requires": {
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 60
}
}
},
"required": [
"min_bedrooms",
"requires"
],
"additionalProperties": false
},
"min_bathrooms": {
"type": "number",
"minimum": 0,
"maximum": 20
},
"min_living_area": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"min_lot_area": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000000
},
"min_year_built": {
"type": "integer",
"minimum": 1600,
"maximum": 2100
},
"max_hoa_fee": {
"type": "number",
"minimum": 0,
"maximum": 100000
},
"must_have": {
"description": "Mandatory features, e.g. garage, fireplace. Unmentioned = unverified, not excluded (unless strict_unknowns).",
"maxItems": 15,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 60
}
},
"nice_to_have": {
"description": "Soft features that improve ranking.",
"maxItems": 25,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 60
}
},
"styles": {
"description": "Architectural styles, e.g. Craftsman, Victorian, mid-century modern.",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 60
}
},
"avoid": {
"description": "Features that exclude a listing when the listing states them, e.g. fixer-upper, pool.",
"maxItems": 15,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 60
}
},
"max_distance": {
"description": "Straight-line distance from a place the user names (e.g. work). Not driving time.",
"type": "object",
"properties": {
"place": {
"type": "object",
"properties": {
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"miles": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"label": {
"type": "string",
"maxLength": 60
}
},
"required": [
"place",
"miles"
],
"additionalProperties": false
},
"strict_unknowns": {
"description": "Exclude listings that do not state a must_have feature (default false: keep and flag).",
"type": "boolean"
},
"investment": {
"type": "object",
"properties": {
"min_gross_yield_pct": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"max_price_per_sqft": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"additionalProperties": false
},
"notes": {
"description": "The user's own words, kept for reference; terms in it that match the feature list become soft preferences.",
"type": "string",
"maxLength": 500
}
},
"required": [
"listing_type",
"location"
],
"additionalProperties": false
},
"alert_prefs": {
"type": "object",
"properties": {
"min_score": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"new_listings": {
"type": "boolean"
},
"price_drops": {
"type": "boolean"
},
"min_drop_pct": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 90
},
"min_drop_amount": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000000
},
"back_on_market": {
"type": "boolean"
},
"status_changes": {
"type": "boolean"
}
},
"additionalProperties": false
},
"monitoring": {
"default": "active",
"type": "string",
"enum": [
"active",
"paused"
]
},
"priority": {
"default": "normal",
"type": "string",
"enum": [
"normal",
"high"
]
}
},
"required": [
"name",
"criteria"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}