Skip to main content
Version: v1.0

Validation Rules

Quality rules applied to each property before publishing. If a rule fails, the property is blocked, published as draft, or published normally with missing amenities recorded.


Severities

SeverityEffect
BLOCKThe property is not published. You must fix the data in your CRM so it can be processed in a later cycle.
DRAFTThe property may publish in draft state or with reduced internal visibility.
WARNThe property publishes normally. Only applies to missing amenities.

When a property fails multiple rules, the highest severity determines the result:

Any BLOCK rule fails -> BLOCK result
No BLOCK, any DRAFT rule fails -> DRAFT result
No BLOCK or DRAFT -> PUBLISH result

All rules are evaluated to provide complete diagnostics. The standard webhook with status REJECTED includes only blocking issue messages.


BLOCK Rules

These rules prevent publication.

RuleField(s)Condition that must pass
Property typeproperty_typeMust be commercial and resolve to office, retail, industrial, or terrain. Residential properties are rejected.
Description eligibilitydescriptionThe description must not indicate disallowed residential content. If analysis cannot rule out residential risk, the property is blocked conservatively.
ModalitymodalityMust resolve to rent, sale, or both. Send rent, sale, or rent_and_sale.
Price presentprice.rent_price, price.sale_priceAt least one price must be greater than 0.
Basic locationlocation.city, location.stateCity and state must be present.
Resolvable postal codelocation.postal_codeMust exist and resolve during enrichment.
Required coordinateslocation.latitude, location.longitudeBoth must be present and different from 0.
Required streetlocation.streetMust be present together with coordinates.
Required contactcontact.name, contact.email, contact.phoneAll three fields must be present.
Exterior numberlocation.ext_numberIf sent, must be at most 6 characters.
Interior numberlocation.int_numberIf sent, must be at most 6 characters.
Blocked contactcontact.email, contact.phoneThe agent or contact must not be blocked by quality or security policies.
Maximum bedroomsbedroomsIf sent, must be less than or equal to 20.
Industrial divisible areaindustrial.min_area_divisible_m2, industrial.max_area_divisible_m2If both exist, max must be greater than or equal to min.
Industrial heightindustrial.min_height_m, industrial.max_height_mIf maximum height is sent, minimum height must not exceed it.
Industrial luminariesindustrial.luminaries, industrial.luminary_specsIf luminaries > 0, luminary_specs must be present.
Office flooroffice.floor_level, office.floor_level_numberIf floor_level = 6, floor_level_number must be present.
Retail price per m² rangeretail.price_per_sqm_min, retail.price_per_sqm_maxIf both exist, max must be greater than or equal to min.
Land useterrain.land_useFor land, always sending it is recommended. If the field reaches the mapped payload empty, it blocks.

DRAFT Rules

These rules do not block processing, but degrade visibility or leave the property in draft.

RuleField(s)Condition that must pass
Minimum photosphotosAt least 1 photo is required to avoid draft.
Photo qualityphotosWe recommend at least 3 photos. With 1 or 2 photos, the property may remain in draft or reduced visibility.
Coordinates inside Mexicolocation.latitude, location.longitudeCoordinates must be confidently inside Mexico. Invalid or outside-country cases degrade to draft.
Minimum priceprice.rent_price, price.sale_pricePrice must be above the canonical validation minimum.
Price per m²price, surface_m2 / land_m2Price per m² must be within the canonical range by property type and modality.
Minimum surfacesurface_m2 / land_m2Surface must be above the canonical minimum for the property type.
Statistical surfacesurface_m2 / land_m2Surface must be within the canonical range by property type.

WARN Rules

These rules do not affect public publication, but are recorded for quality control.

RuleField(s)Recommended condition
AmenitiesamenitiesSend at least one recognizable amenity.

Thresholds

Price per m² and surface ranges come from Spot2 canonical validation rules. They are evaluated by property type, modality, and available surface scope.

Most relevant public thresholds:

ThresholdValue
Minimum photos to avoid draft1
Recommended photos to avoid draft3
Recommended minimum description length20 characters
Maximum bedrooms20
Maximum description length1000 characters
Maximum exterior number length6 characters
Maximum interior number length6 characters

Permanent Rejection

If a property fails BLOCK rules for 5 consecutive cycles without data changes, it is marked as permanently failed to avoid unnecessary full retries.

The property is still revalidated in later cycles. If you fix the data in your CRM and it passes QA with PUBLISH or DRAFT, it leaves permanent failure and re-enters the normal flow.


Webhook Messages

The standard webhook only sends REJECTED when there is a blocking rejection. In that case, messages contains readable messages for the integrator and only includes BLOCK rules.

DRAFT rules and the amenities WARN rule may be logged internally or reported to Spot2 quality systems, but they do not appear as rejection messages in the standard webhook.