Detecting new reviews
Written by Elena David, SEO, ORM, and AI Visibility Consultant.
Reputation Monitor defines a new review by identifier membership, not by its date, text, practice, or position in the file.
Comparison rule
The analyzer first creates a set containing every valid review_id in the previous snapshot:
previous_ids = {review.review_id for review in previous}
It then preserves each valid current review whose ID is not in that set:
return [review for review in current if review.review_id not in previous_ids]
This produces new_reviews in the same order as the valid current records.
Example
Previous IDs:
REV-001, REV-002, REV-003
Current IDs:
REV-001, REV-002, REV-003, REV-004, REV-005
Result:
REV-004, REV-005
If REV-001 has revised text or a changed rating in the current file, it is still not new because its ID exists in the previous set. Version 1.0 does not detect changed fields on known IDs.
How duplicate reporting is prevented
Known IDs do not enter new_reviews, so they cannot enter new_low_rating_reviews. This prevents a previously observed 1- or 2-star review from generating the same new-review alert on every run.
The loader also rejects a repeated valid ID within one snapshot. It keeps the first valid occurrence and records the later row as a validation issue.
Identifier requirements
A useful identifier must be:
- present in both exports for the same underlying review;
- unique within a snapshot;
- assigned to only one underlying review;
- preserved exactly, including letter case;
- independent of mutable review text.
The application does not construct or normalize identifiers. The data-preparation process must supply them.
Important limitations
- Deletion detection is not implemented. An ID present previously but absent currently is not reported.
- Change detection is not implemented. Edited text or ratings on known IDs are not reported.
- Case normalization is not implemented.
- Cross-source reconciliation is not implemented. IDs from different systems may collide unless the upstream process namespaces them.
- The application compares only one previous and one current snapshot per run.
Verify the rule
The supplied current data adds REV-016, REV-017, and REV-018 as valid rows. REV-019 is invalid because its rating is 6, and the final row has no ID; neither reaches the analyzer. The terminal therefore reports three new reviews.
Continue with Detecting low-rating alerts to see how the rating rule narrows this list.