Problem
Official data, difficult lookup
The official dataset contains the identifiers and dates needed to verify a recall, but its source shape is not designed for quick consumer search or combined filters.
Case study
A public search interface over French RappelConso notices. It imports official records into PostgreSQL and preserves a direct link to each source notice.
Problem
The official dataset contains the identifiers and dates needed to verify a recall, but its source shape is not designed for quick consumer search or combined filters.
My work
I implemented the data fetch and validation pipeline, PostgreSQL persistence, repeatable upserts, search and filter queries, read-only API routes, server-rendered pages, deployment configuration and tests.
Implementation
The importer downloads the official dataset, normalises flexible source fields and validates publication dates. Records are upserted by official ID. The API and interface query the local copy and always link back to the source notice.
Local query model
PostgreSQL supports fast combined search, exact filters and pagination without depending on the upstream service for every page view. The trade-off is clear: AlerteConso becomes responsible for import repeatability and for communicating source freshness.
Idempotent imports
Imports use ON CONFLICT (id) DO UPDATE. Re-running an import refreshes an existing notice instead of creating duplicates. Source URLs and publication dates remain first-class fields rather than reconstructed metadata.
Failure handling
A record with an invalid publication date is skipped and counted as an error while valid records continue. If the upstream request fails, the import stops before any writes. The service does not yet show a last-sync timestamp, so an empty result is never proof that a product is safe.
Verification