Documentation navigation

Preparing reputation data

Application version: 1.0.0Documentation version: 1.0.4Last technical review: 2026-10-17View Source Code on GitHub →

Written by Elena David, SEO, ORM, and AI Visibility Consultant.

Purpose

Prepare a current CSV and, when new-review detection is required, a previous CSV that the loader can validate and compare. Use synthetic data for evaluation and only authorized, minimized data in operations.

Required header

Every snapshot must include these exact column names:

review_id,practice_id,practice_name,review_date,rating,review_text,source_label

Column order is not enforced because the loader reads values by header name. Extra columns are ignored. Missing required columns stop the complete load; invalid values within individual records cause only those records to be rejected.

Create a valid snapshot

  1. Save the file as UTF-8. UTF-8 with a byte-order mark is also accepted.
  2. Include all seven required headers.
  3. Assign a non-empty review_id that remains unchanged for the same review across snapshots.
  4. Use a non-empty internal practice_id and practice name.
  5. Write dates in the documented YYYY-MM-DD form.
  6. Use a whole-number rating from 1 through 5.
  7. Include non-empty review text and a source label.
  8. Quote a CSV value when it contains a comma, quote, or line break.

Valid fictional record:

REV-021,PR-006,Cabinet Médical Exemple,2026-10-12,2,The fictional booking instructions were unclear,Demo Reviews

Valid fictional record containing a comma:

REV-022,PR-006,Cabinet Médical Exemple,2026-10-13,4,"Clear, concise follow-up instructions",Demo Reviews

Examples of invalid records

Missing stable identifier:

,PR-006,Cabinet Médical Exemple,2026-10-12,2,Fictional review,Demo Reviews

Out-of-range rating:

REV-023,PR-006,Cabinet Médical Exemple,2026-10-12,6,Fictional review,Demo Reviews

Unsupported date text:

REV-024,PR-006,Cabinet Médical Exemple,12/10/2026,2,Fictional review,Demo Reviews

The loader strips leading and trailing whitespace from every required value before validation and storage.

Maintain stable identifiers

New-review detection compares review_id strings exactly and case-sensitively. REV-021 and rev-021 are different identifiers. Changing an ID between exports makes an existing review appear new. Reusing an ID for a different review hides that new review.

Each snapshot must contain at most one valid row per review_id. If the same ID appears again, the first valid occurrence remains available and the later occurrence is rejected.

Protect medical and personal information

The bundled data is fictional. For an authorized adaptation, do not place patient names, health conditions, medical records, appointment details, or other unnecessary sensitive information in the snapshots. Define the lawful source, collection process, access controls, retention period, and deletion process before processing operational data.

A source label is descriptive text, not proof that collection from that source is authorized.

Verify the files

Run with explicit paths:

reputation-monitor \
  --previous data/reviews_previous.csv \
  --current data/reviews_current.csv \
  --output-dir reports/validation-run

In the dashboard, confirm that the current-file message reports the number of reviews ready for analysis and that the previous-file message reports the number available for comparison. A complete import uses imported successfully; a partial import reports both imported and rejected counts. Record-level reasons remain in application logs. In the CLI, read the diagnostic warnings by row number. For formal constraints, see the input and output data reference.