1<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->2# 🗺️ The Economic Geography of Digital Production34**UQO Working Paper No. 38** — *Product Diversity, Regional Specialization, and the Hidden Structure of Quebec's Online Economy*56[](paper/main.pdf)7[](pyproject.toml)8[](data/raw/README.md)9[](Makefile)10[](research/preregistration.md)11[](https://uqo.ca)1213> **TL;DR** — A read-only snapshot (1 Nov 2026) of Fabri-Ka, an aggregator of Quebec online stores, gives 370 054 cleaned listings from 1 557 merchants in 17 administrative regions. Regional specialization is real at the level of *which merchants* sell online (merchant-equal Cramér's V 0.107 vs a store-reshuffle null of 0.075, p < 0.001) but vanishes once listing volumes are counted (trimmed-listing p = 0.46): a region's catalogue is mostly its largest merchants. Catalogue sizes are extremely skewed (Gini 0.85; top 10 % of stores hold 79 % of listings). Rarefied diversity is unrelated to regional population (ρ = −0.20, CI [−0.62; 0.34], n = 16). Matched products (precision 0.90–0.92) differ across merchants by a median 4.7 log points; region effects are jointly significant (wild-cluster-bootstrap p = 0.005) and resellers post lower prices than producers (p = 0.001). The ECI-type complexity indicator fails bootstrap validation at 17 × 20 and is withheld; the QDACI is published as components only. H6 (local-origin premium) is untestable at product level. Results are reported under the platform's rule-based category labels (46 % audited precision) and under a validated classifier (Amendment A-002).1415---1617## 📌 Status1819| Item | Value |20|---|---|21| Version | 1.0 (November 2026) |22| Snapshot | `fabrika.db` backup 2026-11-01T17:38:30Z, sha256 `8d963ba9…98fb`, commit `689c7bb` |23| Preregistration | `research/preregistration.md` (sha256 `b7cd3f17…`), amendments A-001, A-002 in `research/decisions.md` |24| SSRN / journal | not yet submitted |2526## 🗂 Repository layout27```28CLAUDE.md mandate (verbatim)29config/settings.yaml paths, seed 20261101, snapshot identity, regions30research/ preregistration (frozen), decision log + amendments31reports/ 00_source_audit, phase2_data_audit, sample_flow, data_dictionary, model_inventory,32 hypothesis_registry_{rule,model}, limitations, referee_1/2/3, referee_responses, reproducibility33literature/ seed references, Crossref-verified metadata (142/143), evidence matrix, review notes, references.bib34data/raw/ snapshot (not committed; provenance in README.md) · data/external/ public covariates + manifest35data/interim/, data/processed{,_model}/ parquet/csv intermediates per category labelling (not committed)36src/ingest src/clean src/features src/models src/validation src/reports src/literature src/audit37experiments{,_model}/ JSON summary of every step; hypothesis registry38paper/ main.tex, sections/, tables{,_model}/, figures{,_model}/, references.bib, main.pdf39tests/ pytest invariants of the cleaned panel40logs/ run ledger (jsonl, every API call with usage), output manifest (sha256), pipeline log41```4243## ▶️ Reproduce44```45make env # uv venv (Python 3.12) + pinned deps46make ingest clean match validate # snapshot → parquet → samples → matching → audits (LLM labels are cached CSVs)47make features models robust tables figures paper # rule labelling (preregistered)48WP38_LABEL=model make features models robust tables figures # classifier labelling (A-002)49make test50```51Access requirements: the authorised snapshot in `data/raw/fabrika-snapshot-20261101/` (owner export; not redistributed) and, only to regenerate annotations, `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` in `.env`. External covariates re-download with `make external` from the URLs in `data/external/manifest.json`.5253## ✅ Hypotheses — final status54See `reports/hypothesis_registry_rule.md` and `reports/hypothesis_registry_model.md` (generated).5556## ⚠️ What this is not57Listings are posted offers of merchants located in a region; they are not sales, employment, output or product origin. The indicators describe observed online catalogues.58