A single Multiple Listing Service (MLS) record rarely stays in one place. The same listing feeds the search index, the map, the detail page, analytics, and the public API, so one incorrect value can propagate to multiple downstream surfaces that consume the same source data.
A correction made in one system does not necessarily propagate to every downstream surface that consumed the original value. That fan-out makes listing data quality an architecture concern as a platform takes on more feeds, markets, and consumers.
This article covers ten MLS data problems that tend to surface as a platform grows, the product effects each one can have, and the engineering controls that keep them contained. It focuses on property listing data and the systems that consume it, though MLS feeds also carry property, member, office, media, and other record types.
At ORIL, we approach MLS integrations as part of a broader data architecture that includes validation, normalization, reconciliation, and monitoring.
Why MLS Integration Does Not Guarantee Data Quality
MLS integration addresses data access: authentication, retrieval, and delivery of records into the platform. A successful integration demonstrates that the platform can authenticate with the source and retrieve data, and, where supported and implemented, process updates.
Data quality is a separate concern: whether the records the product receives are usable by the systems that read them. It spans several dimensions:
- Completeness: the required fields are present.
- Validity: values match expected types, formats, and ranges.
- Consistency: the same thing is represented the same way across sources.
- Freshness: records reflect the current state of the listing.
- Uniqueness: each property or listing is represented once.
- Accuracy: values reflect the available source-of-truth data and defined business expectations.
Closing that gap is part of what dependable real estate software development has to account for beyond raw connectivity.
Standards help without closing the gap on their own. The RESO Data Dictionary provides a common vocabulary that can improve interoperability across MLS implementations. It still allows local fields and lookups, so adopting the standard does not eliminate implementation-level differences such as duplicate records, missing values, stale listings, conflicting attributes, or failed updates.
The 10 MLS Data Quality Problems
The table summarizes the typical symptom and primary control for each problem.
| Problem | Typical symptom | Primary control |
| Duplicate listings | Repeated search results | Entity resolution and duplicate handling |
| Missing or incomplete fields | Incomplete listing data | Completeness validation |
| Inconsistent property types and values | Split search filters | Canonical mappings |
| Stale listings | Outdated price or status | Freshness monitoring |
| Status mismatches | Incorrect listing state | Status mapping and validation |
| Address inconsistencies | Failed matching or geocoding | Address normalization |
| Incorrect geocoding | Wrong map location | Coordinate validation |
| Conflicting values across sources | Different values by source | Reconciliation |
| Broken or inaccessible media | Empty or broken galleries | Media validation and association checks |
| Failed, partial, or missed updates | Stale downstream records | Retry and reconciliation |

1.Duplicate Listings
MLS records describe a property, a listing, or a specific listing event, and these are distinct. One physical property can have many listing events over time, and a single listing can arrive through more than one feed as a separate source record. A relisting is a legitimate new event rather than a duplicate, which is what makes naive matching risky. Without entity resolution, separate source records for the same property or the same listing event can move through the ingestion pipeline as distinct entities.
The result can include:
- Inflated inventory counts.
- Repeated search results.
- Duplicate analytics records.
- Incorrect downstream calculations where duplicate records are treated as separate listings.
Entity resolution identifies records that refer to the same property or listing event. Duplicate handling is then applied where appropriate, using confidence thresholds and rules that keep genuine relistings separate from repeated records.
2.Missing or Incomplete Fields
Price, status, address components, attributes, or media can arrive absent or partially populated, and completeness varies by source and by how each listing was entered. A valid API response can still carry null or empty fields, so retrieval does not imply completeness.
Downstream, missing values can:
- Prevent some filters from working as expected.
- Reduce the information shown on listing pages.
- Create gaps in analytics or API responses.
Because missing is not the same as invalid, blunt rejection can over-filter usable records. A completeness-validation step catches these gaps through required-field checks and defined handling for partial records, such as quarantine, review, or flagging, depending on the field and its downstream use.
3.Inconsistent Property Types and Values
Different MLSs can represent the same property concept with different labels, enumerations, or value formats. One source may use “SFR,” another “Single Family,” while another separates “Detached” into a different field.
For example, a platform might map source-specific values to a canonical property model as follows:
| Source values | Canonical property type |
| “SFR”, “Single Family”, “Detached” | Single-family home |
| “Condo”, “Condominium”, “CND” | Condominium |
| “MF”, “Multi-Family”, “2-4 Units” | Multi-family |
If those values are passed through without mapping, search filters can split equivalent properties into different categories and cross-market reporting can become inconsistent. The platform therefore needs a canonical property model and controlled mappings before those values reach search, analytics, or other consuming systems.
4.Stale Listings
Prices, availability, and attributes can become stale when synchronization is delayed or incremental updates are missed. A connected feed can run behind the source, and connectivity says nothing about latency.
Users may then see outdated prices, availability, or attributes, while time-sensitive analytics can become stale. Freshness should be measured explicitly, using source timestamps and observed synchronization latency, so it can be tracked as a quality dimension rather than assumed.
5.Status Mismatches
Lifecycle states such as active, pending, sold, and withdrawn use different vocabularies across sources, and transitions can be missed or mapped incorrectly. Status is a mapping, timing, and business-semantics problem, so a working feed can still deliver a wrong or late state.
This can:
- Leave a sold or withdrawn property visible as active.
- Trigger incorrect alerts.
- Skew active-inventory reporting.
Reliable lifecycle state depends on explicit status mapping, status validation, and monitoring for missed or delayed transitions.
6.Address Inconsistencies
The same address can arrive with different abbreviations, capitalization, unit formats, or component structures. Retrieval carries each source string as written.
Left unstructured, these variants can cause:
- Failed matching between records.
- Accidental duplicates.
- Geocoding errors.
- Weaker search results.
Address normalization and validation against available reference or geocoding data standardize these variants and feed entity resolution.
7.Incorrect Geocoding
Geocoding is a separate derivation step, so a clean feed can still produce bad coordinates.
Incorrect or low-confidence coordinates can place a property away from its actual location, which can affect:
- Map display.
- Radius searches.
- Market-level analysis.

To catch these errors, teams rely on geocoding validation, confidence scoring, and anomaly detection, for example flagging coordinates that fall outside an expected geographic boundary, such as a ZIP code, county, municipality, or configured market polygon.
8.Conflicting Values Across Sources
When feeds overlap, the same property can carry different prices, statuses, attributes, or media across sources, and no single source is authoritative for every field. Without explicit reconciliation and precedence rules, the value that reaches the product may depend on ingestion order or other implementation details rather than a defined source-of-truth policy.
A simple “latest value wins” rule can work for some fields, but it is not sufficient as a universal strategy, since different fields may need different source precedence, timestamps, business rules, or conflict handling.
9.Broken or Inaccessible Media
Image URLs can expire or return errors, media can be missing, and association errors can attach media to the wrong listing. A listing record can be valid even when an associated image or media resource is unavailable.
For a listing product, that can leave:
- Empty galleries.
- Broken thumbnails.
- The wrong photos on a property page.
Media validation checks reachability, and association checks confirm each media resource is linked to the correct listing, with defined fallback handling when a resource is unavailable.
10.Failed, Partial, or Missed Updates
API calls can fail, batches can ingest only partway, and upstream deletions or edits do not always propagate downstream. An integration can report as connected while individual updates fail.
These failures may leave records that appear valid while remaining stale or incomplete, particularly when the pipeline does not expose per-update failures. Retries with failure detection help surface these silent failures, and where source capabilities allow, reconciliation jobs can compare downstream state against the source’s current or expected state to recover them.
Why MLS Data Quality Problems Get Worse at Scale
With one source and a small number of downstream systems, teams can sometimes handle these issues within individual services or ingestion jobs. As the platform grows, that approach becomes harder to maintain, for a few reasons:
- More MLS feeds bring more formats and more local rules.
- More records and updates raise the odds of a silent failure.
- More consuming applications, such as search, maps, analytics, and public APIs, each inherit the same source data and can end up solving the same problems separately.
A shared set of data-quality controls moves these checks upstream, so search, maps, APIs, and analytics consume the same validated records instead of implementing separate cleanup logic.
How to Build a Data-Quality Layer Around MLS Integrations
A data-quality layer is the set of controls and processing stages applied between source ingestion and downstream consumption. In some architectures, those controls are distributed across ingestion, transformation, storage, and serving layers rather than implemented as one isolated component.
These controls solve different problems:
- Validation checks whether a record or field meets defined rules.
- Normalization makes different source representations consistent.
- Entity resolution decides when records describe the same property, and duplicate handling is applied where appropriate.
- Reconciliation handles disagreement between sources.
- Monitoring measures whether those controls keep performing as expected over time.
Each addresses a distinct failure mode, so they are complementary rather than interchangeable.
One way to picture the layer, with monitoring running across all of it:

The exact stages and their order depend on the architecture, but the goal is consistent: validate and resolve data issues before downstream systems rely on the records. Enrichment can sit alongside this layer when additional property, location, or reference data is added, though it is not itself a quality control.
| Layer | What it checks | Example |
| Validation | Schema and field validity | Malformed or out-of-range field values |
| Normalization | Consistent representation | “SFR” mapped to a canonical property type |
| Entity resolution | Same entity across records | Two records for one property |
| Reconciliation | Conflicting source values | Different status values |
| Monitoring | Quality over time | Update latency |
Ingestion and Validation
Validation is typically one of the first control points after data arrives. Typical checks include:
- Schema validation, so each record has the expected structure.
- Required-field checks for the fields the product depends on.
- Data-type and format validation.
- Range or plausibility checks that separate invalid values, such as a negative price, from unusual but potentially valid ones, such as a very large lot size, which are flagged for review rather than rejected.
Based on severity, failed records can be quarantined, flagged for review, or routed through a reprocessing workflow rather than passed downstream unchecked.
Normalization and Standardization
Normalization converts heterogeneous source data into consistent internal values. The goal is to give downstream systems one internal representation even when individual MLS sources use different names, formats, or enumerations. Property types, status vocabularies, units, and addresses map to a canonical model through controlled mappings. Where a value needs to be traced back to its origin, the original source value can be kept alongside the normalized one.
Deduplication and Entity Resolution
This stage decides when two records represent the same property or listing. It combines source identifiers with property and address attributes, applies matching rules, and uses confidence thresholds so that strong matches can be linked to a canonical entity automatically, while ambiguous cases are routed for review. Legitimate relistings should be distinguished from duplicate records according to the platform’s listing and property data model.
Reconciliation and Source Precedence
Reconciliation determines how the system handles conflicting values, often field by field. According to the field and source policy, that can involve:
- Selecting a preferred value based on source precedence.
- Retaining multiple values with their provenance.
- Flagging the conflict for review.
These decisions draw on data provenance, field-level precedence rules, business logic, and timestamp or change history.

Monitoring and Data-Quality Metrics
Data quality needs operational monitoring rather than a one-time validation pass. Useful metrics include:
- Completeness and validation failure rates
- Duplicate and conflict rates
- Freshness and update latency
- Geocoding and media failure rates
- Update success rate
- Mapping and coverage rates, such as the share of records and fields mapped to the canonical model and the share left unresolved
A monitoring view built through analytics and data platform development lets teams measure, alert on, and set operational thresholds for data quality.
What to Include in an MLS Data-Quality Pipeline
Based on the platform’s requirements, the data-quality layer may include:
- Automated schema and field validation on ingestion, with handling for failures
- Normalization rules for property types, statuses, units, and addresses
- Entity resolution and duplicate handling with confidence thresholds
- Reconciliation with source provenance and field-level precedence
- Operational monitoring with alerts on defined thresholds
- Retry and recovery mechanisms for failed or partial updates
- Documented data contracts for critical downstream consumers and interfaces
The checklist distinguishes data transport from the controls needed to make downstream data more predictable and usable.
How ORIL Engineers the MLS Data-Quality Layer
We start from the product’s data model, its sources, and how each downstream system uses the data, rather than a fixed template. In practice, we map the failure modes that occur in a client’s feeds, define canonical models and precedence rules for the fields that matter, and set quality metrics tied to each use case. The layer is built incrementally, so each control is validated against real data before the next is added.
This produces concrete outcomes for the engineering team:
- Search, maps, listing pages, analytics, and APIs can consume the same validated canonical records, reducing the need for each surface to implement its own cleanup logic.
- Reconciliation and precedence rules are explicit and auditable, so conflicting values resolve the same way each time.
- Monitoring with defined thresholds flags data-quality regressions early, often before users report them.
- New markets and sources can often be added by extending source-specific integrations and mappings rather than rebuilding the core pipeline, which can shorten expansion timelines.
- Manual cleanup tends to drop, which frees engineering time for product work.

We also scope depth to the platform: a two-source product and a multi-market aggregator warrant different levels of reconciliation, monitoring, and recovery, and we build for the one in front of us rather than the largest case.
A Data-Quality Layer for MLS-Driven Products
The right MLS data-quality architecture depends on the number of sources, the platform’s data model, the downstream systems consuming the data, and the quality requirements for each use case.
For some platforms, a small set of validation and monitoring controls may be enough. Multi-source products may also need entity resolution, field-level reconciliation, provenance, and recovery workflows.