SPB Git

spb/wp38_uqo

Public
5.2 KB

# Phase 2 — Research database construction and data-quality audit (WP38)

Generated by src/reports/phase2_audit.py from the pipeline outputs; snapshot 2026-11-01T17:38:30Z.

# 2.1 Sample flow

step listings
DB product rows (all statuses all stores) 465 388
active = 1 and listing_status = 'published' 390 108
… of an enabled store with >= 1 published listing 390 108
… excluding store_kind = hors_mission 390 074
… keeping one representative per (store normalised title) and non-empty title 370 828
… excluding mirror domains of the same business (sibling stores non-representative) [ASSORTMENT SAMPLE] 370 054
… and CAD-priced store/listing 369 325
… and a positive listed price <= 50 000 CAD not on request [PRICE SAMPLE] 359 612

# 2.2 Within-store duplicates, mirror domains, exclusions

# 2.3 Merchant geography

  • Live stores 1569; region source: {"db": 852 "city": 390 "unknown": 229 "pip": 82 "pip_transfer2021": 16}; unknown-region listings 71 692.
  • Agreement of Fabri-Ka labels with the FSA-centroid point-in-polygon (official MERN layer V2026-10): 0.8906; municipality lookup vs point-in-polygon: 0.9593; conflicts flagged: None (69 % rural FSAs near borders). Rule and amendment A-001 in research/decisions.md.
  • Phone numbers are shared by ≥ 3 stores for 250 stores (directory contact copied by the discovery pipeline: e.g. 212 stores carry the Les Produits du Québec switchboard) — phones are never used for geography.
  • Stores per region (final): {"Montréal": 238, "Inconnue": 229, "Montérégie": 179, "Estrie": 167, "Capitale-Nationale": 126, "Chaudière-Appalaches": 105, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 37, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}.

# 2.4 Category labels (rule-based) — audit

  • 500-listing stratified sample (25 per category), two LLM annotators: agreement rule–A 0.452, rule–B 0.446, A–B 0.948; consensus on 95%; precision of the rule label against consensus 0.4599; 282 listings with any disagreement listed in data/processed/category_audit_disagreements.csv.
  • Per-category precision (consensus n): erable 0.5 (24), epicerie 0.417 (24), cafe_the 0.348 (23), chocolat 0.625 (24), boulangerie 0.4 (25), viande_poisson 0.318 (22), fromage_laitier 0.583 (24), boissons 0.167 (24), alcool 0.28 (25), sante_beaute 0.625 (24), maison 0.364 (22), mode 0.72 (25), bijoux 0.8 (25), art 0.52 (25), enfants 0.619 (21), animaux 0.292 (24), plein_air 0.316 (19), jardin 0.84 (25), industriel 0.417 (24), autre 0.0 (25).

# 2.5 Cross-merchant matching

  • Universe 359 612 price-sample listings in 1487 stores; SKU present for 260 406 brand for 274 901.

  • Candidate pairs by tier {"D": 2713, "A": 1837, "B": 457, "C": 446}; comparable-variant pairs {"D": 1804, "A": 1683, "B": 381, "C": 324}; median |log gap| by tier {"A": 0.0007, "B": 0.0011, "C": 0.0077, "D": 0.2585}; share of zero gaps {"A": 0.4306, "B": 0.4398, "C": 0.4193, "D": 0.0844}.

  • Groups over tiers A–C: 2247 (4832 listings, 209 stores).

  • Validation sample (60 pairs per tier): annotator agreement 0.875, consensus 88%; share 'same product' by tier: A 0.982 (n=56), B 1.0 (n=54), C 0.885 (n=52), D 0.208 (n=48); comparable-only: {"A": 0.979, "B": 1.0, "C": 0.85, "D": 0.226}.

# 2.6 Temporal coverage

  • Listings observed 2026-08-12 → 2026-11-01; store onboarding ended 2026-08-24 (ISO weeks 32–33); sync cadence median 6.3 h; inactive after two misses. No price history exists in the source (see reports/00_source_audit.md).

# 2.7 Known limitations carried to the paper

  • Region unknown for 229 live stores (71 692 listings), concentrated in search-sweep and gift-directory discoveries and including the largest catalogues; reported separately, excluded from regional inference.
  • Category labels are rule-based; precision estimates from §2.4 propagate to a reassignment robustness run.
  • Origin class is a store-level prior; no product-level provenance (H6 untestable).
  • Posted prices, minimum variant price per listing; no shipping, taxes or transactions.
Files · main
Menu

Theme