README: series banner, metric badges, peer-review scorecard and links to the reviewed branch
Generated header (docs/readme/*.svg are self-contained, no external badge service). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
31 changed files +187 −0
modified
README.md
+157 −0
@@ -1,3 +1,160 @@ | ||
| 1 | +<!-- WP-HEADER:BEGIN — generated block (UQO-WP-REVIEW/publication/readme/build_readmes.py); edit below the END marker --> | |
| 2 | + | |
| 3 | +<p align="center"><a href="https://git.spboucher.ai/wp2_uqo/tree/review-20261103"><img src="docs/readme/banner.svg" alt="UQO Working Paper No. 2 — Decoding Real Estate Descriptions: Semantic Embeddings and Hedonic Pricing of Residential Properties in Quebec" width="100%"></a></p> | |
| 4 | + | |
| 5 | +<p align="center"> | |
| 6 | +<a href="https://git.spboucher.ai/wp2_uqo/tree/review-20261103"><img src="docs/readme/b-reviewed.svg" alt="peer review: completed ✓" height="22"></a> <a href="#-peer-review-at-a-glance"><img src="docs/readme/b-score.svg" alt="review score: 56.4 → 68.9 / 100" height="22"></a> <img src="docs/readme/b-gain.svg" alt="gain: +12.5 pts" height="22"> <img src="docs/readme/b-integrity.svg" alt="integrity: PASS" height="22"> <img src="docs/readme/b-repro.svg" alt="reproducibility: R1 · reproduced from analysis data" height="22"> <img src="docs/readme/b-maturity.svg" alt="maturity: grade B" height="22"> <img src="docs/readme/b-referees.svg" alt="referee reports: 6" height="22"> <img src="docs/readme/b-items.svg" alt="review items addressed: 86" height="22"> | |
| 7 | +</p> | |
| 8 | + | |
| 9 | +<p align="center"> | |
| 10 | +<img src="docs/readme/b-version.svg" alt="version: 2.0 · November 2026" height="22"> <img src="docs/readme/b-pages.svg" alt="pages: 80" height="22"> <img src="docs/readme/b-figures.svg" alt="figures: 16" height="22"> <img src="docs/readme/b-tables.svg" alt="tables: 32" height="22"> <img src="docs/readme/b-equations.svg" alt="numbered equations: 13" height="22"> <img src="docs/readme/b-refs.svg" alt="references: 87" height="22"> <img src="docs/readme/b-words.svg" alt="words: 31 100" height="22"> | |
| 11 | +</p> | |
| 12 | + | |
| 13 | +<p align="center"> | |
| 14 | +<a href="https://git.spboucher.ai/wp2_uqo/tree/review-20261103"><img src="docs/readme/b-branch.svg" alt="revised branch: review-20261103 @ 28f3a23" height="22"></a> <a href="https://git.spboucher.ai/wp2_uqo/commits/review-20261103"><img src="docs/readme/b-ahead.svg" alt="review commits: 12 ahead of main" height="22"></a> <a href="https://git.spboucher.ai/wp2_uqo/commits/main"><img src="docs/readme/b-commits.svg" alt="commits on main: 7" height="22"></a> <img src="docs/readme/b-files.svg" alt="files: 99" height="22"> <img src="docs/readme/b-lang1.svg" alt="LaTeX: 29 files" height="22"> <img src="docs/readme/b-lang2.svg" alt="Python: 15 files" height="22"> <a href="https://ssrn.com/abstract=7626640"><img src="docs/readme/b-ssrn.svg" alt="SSRN: 7626640" height="22"></a> <a href="https://uqo.ca"><img src="docs/readme/b-inst.svg" alt="UQO: Sciences administratives" height="22"></a> | |
| 15 | +</p> | |
| 16 | + | |
| 17 | +<p align="center"> | |
| 18 | +<a href="https://git.spboucher.ai/wp2_uqo/blob/review-20261103/paper/main.pdf"><img src="docs/readme/c-pdf.svg" alt="📄: Revised manuscript (PDF)" height="22"></a> <a href="https://wp.spboucher.ai/papers/wp2/read"><img src="docs/readme/c-read.svg" alt="📖: Interactive reader" height="22"></a> <a href="https://git.spboucher.ai/wp2_uqo/tree/review-20261103"><img src="docs/readme/c-review.svg" alt="🔍: Review branch" height="22"></a> <a href="https://git.spboucher.ai/wp2_uqo/commits/review-20261103"><img src="docs/readme/c-log.svg" alt="🧾: Revision commits" height="22"></a> <a href="https://wp.spboucher.ai/papers/wp2"><img src="docs/readme/c-site.svg" alt="🌐: Paper page" height="22"></a> | |
| 19 | +</p> | |
| 20 | + | |
| 21 | +> **🏘️ In one sentence (revised, peer-reviewed version 2.0)** — Do broker-written listing descriptions carry price information that named semantic features can extract? On 16,553 single-family asking-price listings from Quebec (one Realtor.ca snapshot, 7–11 January 2026), twenty cosine similarities to reference descriptions add 0.030 of R² [0.026, 0.035] net of language, 414 area fixed effects and corrected lot area, and +0.026 to +0.030 out of sample, but −0.041 under distance-blocked folds; only one named coefficient (Luxury) is stable across specifications, and none across random rephrasings of the references. | |
| 22 | + | |
| 23 | +## 🔬 Peer review at a glance | |
| 24 | + | |
| 25 | +This paper went through the full multi-referee review of the UQO working-paper series: **6 independent referee reports**, **86 review items**, an editorial decision (*major revision*), re-execution of the analysis, a complete revision of text, figures and tables, and an independent verification before sign-off. The revised manuscript and every change live on the branch [`review-20261103`](https://git.spboucher.ai/wp2_uqo/tree/review-20261103) of this repository (12 commits ahead of `main`, head `28f3a23`, 2026-11-04). | |
| 26 | + | |
| 27 | +<p align="center"><img src="docs/readme/scores.svg" alt="Review scores before and after revision" width="92%"></p> | |
| 28 | + | |
| 29 | +| Dimension | Submitted | Revised | Δ | | |
| 30 | +|---|---:|---:|---:| | |
| 31 | +| Originality | 55.3 | **58.0** | +2.7 | | |
| 32 | +| Rigor | 56.2 | **72.0** | +15.8 | | |
| 33 | +| Identification | 55.8 | **62.0** | +6.2 | | |
| 34 | +| Data & reproducibility | 54.2 | **74.0** | +19.8 | | |
| 35 | +| Robustness | 55.5 | **75.0** | +19.5 | | |
| 36 | +| Writing | 69.5 | **75.0** | +5.5 | | |
| 37 | +| Figures & tables | 62.2 | **80.0** | +17.8 | | |
| 38 | +| Literature | 52.5 | **72.0** | +19.5 | | |
| 39 | +| **Weighted total** | **56.4** | **68.9** | **+12.5** | | |
| 40 | + | |
| 41 | +Scientific integrity: **PASS** · Reproducibility: **R1 · reproduced from analysis data** · Maturity: **grade B** | |
| 42 | + | |
| 43 | +### What the review changed | |
| 44 | + | |
| 45 | +Peer review turned the paper from a claim about twenty interpretable implicit prices into an audit of the method. The headline is now the block-level gain in a specification with language, area fixed effects and corrected lot area; the English-premium figures were re-estimated per unit of the indicator, and the claim of five robust dimensions was withdrawn. | |
| 46 | + | |
| 47 | +- Headline fit: adjusted R² 0.452 → 0.511 from the semantic block → 0.030 of R² [0.026, 0.035] added in the preferred specification, on a main sample of 16,553 listings instead of 17,087 (534 records without a real description excluded) | |
| 48 | +- English premium: “+19.5%” and “+9.1%” (per standard deviation of a z-scored indicator) → per-unit contrasts of +44.3% and +19.9% with the baseline encoder, and +8.4% [5.8, 11.1] in the preferred specification | |
| 49 | +- Five dimensions robust across all specifications and both encoders → one (Luxury) meets a pre-stated 90% multiplicity-adjusted criterion, and none over both the specification grid and 200 random rephrasings | |
| 50 | +- Out-of-sample evidence: one cross-validation split → four designs with repetitions: +0.030 random, +0.026 held-out areas, +0.015 held-out regions, −0.041 distance-blocked (Clark–West p = 0.308) | |
| 51 | +- Motivated Seller discount of −8.5% → −2.9% [−7.0, +1.3] with language controlled and 0.0% [−2.8, +2.8] in the preferred specification; the data do not establish a discount | |
| 52 | +- Data described as a single-day extraction → a snapshot of active Realtor.ca listings extracted 7–11 January 2026, with prices stated as asking prices in the abstract | |
| 53 | + | |
| 54 | +### Limitations stated in the revised paper | |
| 55 | + | |
| 56 | +- Prices are asking prices from a stock of active listings in one cross-section (January 2026); transaction-based coefficients could differ, and the stock over-represents slow-selling listings. | |
| 57 | +- The coefficients are conditional associations: text and price are jointly determined by the broker, and the design cannot separate information, positioning and omitted-location channels. | |
| 58 | +- The validation labels were coded by a large language model, not by human coders; a human two-coder replication was not carried out. | |
| 59 | +- The out-of-sample gain does not extend to areas with no training listing within 10 km (−0.041), and the persistent deposit of the text-free data and code was still pending. | |
| 60 | + | |
| 61 | +### Where to find the reviewed material | |
| 62 | + | |
| 63 | +| What | Where | | |
| 64 | +|---|---| | |
| 65 | +| Revised manuscript (PDF, 80 pages) | [`paper/main.pdf` on `review-20261103`](https://git.spboucher.ai/wp2_uqo/blob/review-20261103/paper/main.pdf) | | |
| 66 | +| Revised sources, code, figures and tables | [branch `review-20261103`](https://git.spboucher.ai/wp2_uqo/tree/review-20261103) | | |
| 67 | +| Commit-by-commit revision history | [`review-20261103` commits](https://git.spboucher.ai/wp2_uqo/commits/review-20261103) | | |
| 68 | +| All branches (submitted `main` vs revised) | [branches](https://git.spboucher.ai/wp2_uqo/branches) | | |
| 69 | +| Interactive reader (figures, tables, citations) | [wp.spboucher.ai/papers/wp2/read](https://wp.spboucher.ai/papers/wp2/read) | | |
| 70 | +| Paper page, abstract and citation formats | [wp.spboucher.ai/papers/wp2](https://wp.spboucher.ai/papers/wp2) | | |
| 71 | + | |
| 72 | +## 🏆 Headline results (revised version) | |
| 73 | + | |
| 74 | +| Result | What it is | | |
| 75 | +|---|---| | |
| 76 | +| **0.030 [0.026, 0.035]** | R² added by the twenty similarities in the preferred specification (language indicators, 414 FSA fixed effects, corrected lot area, full-text multilingual encoder); area-cluster bootstrap 95% interval, block F(20, 413) = 48.2 | | |
| 77 | +| **+0.030 / +0.026 / +0.015 / −0.041** | out-of-sample R² gain of the block under random folds, held-out forward sortation areas, held-out administrative regions, and distance-blocked folds with a 10 km buffer (Clark–West p = 0.308 for the last, where the fixed-effects models themselves collapse) | | |
| 78 | +| **86%** | share of the variance of the mean similarity explained by the language of the listing alone, with French references and the English-trained baseline encoder | | |
| 79 | +| **+8.4% [5.8, 11.1]** | English-versus-French asking-price contrast in the preferred specification; it is +44.3% conditional on structure, length and the baseline features, and +19.9% within areas with the baseline encoder | | |
| 80 | +| **1 of 20** | named dimensions meeting the pre-stated criterion (baseline sign and Holm significance in at least 90% of grid cells): Luxury, 93% of cells (91% under Romano–Wolf) | | |
| 81 | +| **0 of 20** | dimensions meeting the criterion over both the specification grid and 200 random rephrasings of the references; Luxury survives in 56% of the draws under the preferred specification | | |
| 82 | +| **AUC 0.47–0.65** | discrimination of the raw baseline similarities for their own dimension against a 300-listing sample coded by a large language model (not human-coded); centred multilingual scores reach 0.77–0.86 | | |
| 83 | + | |
| 84 | +<details> | |
| 85 | +<summary><b>📄 Abstract</b></summary> | |
| 86 | + | |
| 87 | +Broker-written listing descriptions record housing quality that structured fields omit. We project sentence embeddings of 16,553 single-family asking-price listings from Quebec (Realtor.ca snapshot, 7–11 January 2026) onto twenty researcher-written reference descriptions and enter the cosine similarities in a semi-logarithmic hedonic model with language indicators, 414 forward-sortation-area fixed effects and unit-corrected lot area. The block adds 0.030 of R² [0.026, 0.035] in sample, +0.026 to +0.030 out of sample with held-out listings or areas, +0.015 with held-out regions, and −0.041 under distance-blocked folds (Clark–West p = 0.308). In a bilingual corpus the features measure language before content: with monolingual references, language explains 86% of their variance, and English listings are priced +8.4% higher within areas (preferred specification). One named coefficient (Luxury) meets a pre-stated stability criterion across specifications and encoders; none meets it over both that grid and 200 random rephrasings of the references. Anchor-based semantic projection yields block-level information, not twenty implicit prices. | |
| 88 | + | |
| 89 | +</details> | |
| 90 | + | |
| 91 | +<details> | |
| 92 | +<summary><b>🧩 Contributions</b></summary> | |
| 93 | + | |
| 94 | +- **An audit of anchor-based semantic projection for hedonic inference** — The construction itself is known (semantic projection, relative representations); the paper quantifies what fixed, named anchors deliver in a housing application: a block of information that survives language controls, area fixed effects, corrected size variables and area-grouped cross-validation, but not twenty stable implicit prices. | |
| 95 | +- **The language confound of monolingual anchors in a bilingual corpus** — 59% of the descriptions are French and 41% English, and the references are French. Language explains 86% of the variance of the mean similarity with the baseline encoder, and the English contrast, re-estimated with the indicator entered unscaled, falls from +44.3% to +8.4% [5.8, 11.1] in the preferred specification. | |
| 96 | +- **Truncation as a second confound in the encoder comparison** — The multilingual encoder cuts 61.0% of French and 60.6% of English descriptions at 128 word-pieces on the first-version sample, symmetrically; full texts are therefore encoded by chunk-and-pool in every preferred specification. | |
| 97 | +- **A pre-specified survival analysis instead of a robustness table** — The twenty coefficients are estimated over eleven specifications and five encoder variants (55 cells) with Holm and Romano–Wolf adjustment, then over 200 random rephrasings of the references; the block's R² gain is stable (standard deviation at most 0.0044 across rephrasings) while the individual coefficients are not. | |
| 98 | +- **Why named coefficients move: span invariance** — Fitted values depend only on the span of the reference embeddings, so any invertible recombination of the references leaves the fit unchanged (verified numerically to 1 × 10⁻¹⁶ in R²) and reparametrises the coefficients; each coefficient prices the part of one reference orthogonal to the other nineteen. | |
| 99 | +- **Out-of-sample designs ranked by distance to the training data** — The gain is +0.030 with random folds, +0.026 with held-out areas, +0.015 with held-out regions and −0.041 with a 10 km distance buffer, so the claim of generalisation holds for held-out areas and regions, not for areas with no nearby training listing. | |
| 100 | + | |
| 101 | +</details> | |
| 102 | + | |
| 103 | +<details> | |
| 104 | +<summary><b>🗄️ Data</b></summary> | |
| 105 | + | |
| 106 | +- **Quebec single-family asking-price listings** — 16,553 listings with usable descriptions (9,817 French, 6,733 English, 3 mixed) in 414 forward sortation areas, 1,061 municipalities and 17 administrative regions, extracted from the public pages of Realtor.ca between 7 and 11 January 2026. It is a snapshot of active listings: prices are asking prices, with no sale price or listing date. | |
| 107 | +- **Sample audit** — The first-version sample of 17,087 listings is kept for reproduction; the main sample excludes 534 records with no real description (placeholders or fewer than 100 characters). 363 listings share coordinates and price with another listing; a de-duplicated sample of 16,375 listings and a floor-area subsample of 6,069 listings are used as checks. | |
| 108 | +- **Reference descriptions and encoders** — Twenty French reference texts, one per qualitative dimension, embedded with all-MiniLM-L6-v2 (256 word-piece limit) and paraphrase-multilingual-MiniLM-L12-v2 (128 word-piece limit), the latter applied to full texts by chunk-and-pool; model revisions are pinned. | |
| 109 | +- **Validation samples coded by a language model** — A 300-listing language sample and a 300-listing dimension sample were coded by two independent passes of a large language model; they are labelled as LLM-coded throughout and a human two-coder replication was not carried out. | |
| 110 | + | |
| 111 | +</details> | |
| 112 | + | |
| 113 | +<details> | |
| 114 | +<summary><b>⚙️ Methodology</b></summary> | |
| 115 | + | |
| 116 | +- **Reference-based cosine projection** — Each listing embedding is compared by cosine similarity with the embeddings of twenty reference descriptions; the twenty similarities enter a semi-logarithmic hedonic model of asking price as named regressors, with coefficients read per 0.10 of cosine. | |
| 117 | +- **Preferred specification** — Language indicators entered unscaled, 414 forward-sortation-area fixed effects, unit-corrected lot area, missing-value indicators, full-text multilingual embeddings, and standard errors clustered by area; block tests use F(q, G−1) and an area-cluster bootstrap interval for the R² gain. | |
| 118 | +- **Multiplicity-adjusted survival over specifications, encoders and phrasings** — A criterion written before the run (baseline sign and Holm significance in at least 90% of cells) is applied over the specification-by-encoder grid and over 200 random rephrasings of the references, with Romano–Wolf adjustment as a second standard. | |
| 119 | +- **Four cross-validation designs** — Random five-fold and area-grouped folds (twenty repetitions each), leave-one-region-out and distance-blocked folds with a 10 km buffer, with fixed effects estimated on training folds and Clark–West tests of the block's increment. | |
| 120 | +- **Language decomposition and remaining checks** — Per-unit English contrasts across specifications and encoders, an order-free decomposition of R² (language 9.6% and the similarities 12.3% in the first-version specification), spatial diagnostics of the residuals (Moran's I, Conley standard errors), reparametrisations of the references and a principal-components benchmark. | |
| 121 | + | |
| 122 | +</details> | |
| 123 | + | |
| 124 | +<details> | |
| 125 | +<summary><b>♻️ Reproducibility</b></summary> | |
| 126 | + | |
| 127 | +- The replication package contains the code under an MIT licence, the pinned encoder revisions and the checksums of every input; every number in the paper is produced by the scripts from the raw database. | |
| 128 | +- The first-version baseline (Models A–E) is reproduced in an appendix so that every number of the first version can be regenerated and compared with the revised design. | |
| 129 | +- A data availability statement lists the text-free analysis data (identifiers, prices, structural fields, geography, description length, language labels, the similarities under every encoder variant, the reference embeddings) from which every table can be regenerated; these files (about 42 MB) are generated by the scripts and are not in the committed repository. | |
| 130 | +- The listing texts, their embeddings and the raw database are not redistributed, under the terms of use of the platform. | |
| 131 | +- A persistent deposit of the text-free data and code with a DOI was pending at the time of writing; until then a third party needs the author's copy of the analysis files to reproduce the paper. | |
| 132 | + | |
| 133 | +</details> | |
| 134 | + | |
| 135 | +**Keywords** `hedonic pricing` · `asking prices` · `text as data` · `sentence embeddings` · `semantic projection` · `listing descriptions` · `language confound` · `Quebec` | |
| 136 | +**JEL** R31, C45, C21, R21 | |
| 137 | + | |
| 138 | +## 📚 How to cite | |
| 139 | + | |
| 140 | +```bibtex | |
| 141 | +@techreport{boucher2026wp2, | |
| 142 | + author = {Simon-Pierre Boucher}, | |
| 143 | + title = {Decoding Real Estate Descriptions: Semantic Embeddings and Hedonic Pricing of Residential Properties in Quebec}, | |
| 144 | + institution = {Université du Québec en Outaouais}, | |
| 145 | + type = {UQO Working Paper No. 2}, | |
| 146 | + year = {2026}, | |
| 147 | + note = {Version 2.0, November 2026, revised after peer review}, | |
| 148 | + url = {https://wp.spboucher.ai/papers/wp2} | |
| 149 | +} | |
| 150 | +``` | |
| 151 | + | |
| 152 | +<!-- WP-HEADER:END --> | |
| 153 | + | |
| 154 | +> ℹ️ **Below: documentation of the `main` branch** (the version submitted to review). Numbers and claims that the review corrected are superseded by the block above and by the branch [`review-20261103`](https://git.spboucher.ai/wp2_uqo/tree/review-20261103). | |
| 155 | + | |
| 156 | +--- | |
| 157 | + | |
| 1 | 158 | <!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca --> |
| 2 | 159 | # 🏠 Decoding Real Estate Descriptions |
| 3 | 160 | |
added
docs/readme/b-ahead.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="236" height="22" role="img" aria-label="review commits: 12 ahead of main"><title>review commits: 12 ahead of main</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="236" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="107" height="22" fill="#3b4252"/><rect x="107" width="129" height="22" fill="#1f6feb"/><rect width="236" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="53.5" y="15">review commits</text><text x="171.5" y="15" font-weight="bold">12 ahead of main</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-branch.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="307" height="22" role="img" aria-label="revised branch: review-20261103 @ 28f3a23"><title>revised branch: review-20261103 @ 28f3a23</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="307" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="98" height="22" fill="#3b4252"/><rect x="98" width="209" height="22" fill="#0969da"/><rect width="307" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="49.0" y="15">revised branch</text><text x="202.5" y="15" font-weight="bold">review-20261103 @ 28f3a23</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-commits.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="140" height="22" role="img" aria-label="commits on main: 7"><title>commits on main: 7</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="140" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="114" height="22" fill="#3b4252"/><rect x="114" width="26" height="22" fill="#57606a"/><rect width="140" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="57.0" y="15">commits on main</text><text x="127.0" y="15" font-weight="bold">7</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-equations.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="163" height="22" role="img" aria-label="numbered equations: 13"><title>numbered equations: 13</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="163" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="129" height="22" fill="#3b4252"/><rect x="129" width="34" height="22" fill="#1b7c83"/><rect width="163" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="64.5" y="15">numbered equations</text><text x="146.0" y="15" font-weight="bold">13</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-figures.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="89" height="22" role="img" aria-label="figures: 16"><title>figures: 16</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="89" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="54" height="22" fill="#3b4252"/><rect x="54" width="35" height="22" fill="#d4a72c"/><rect width="89" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="27.0" y="15">figures</text><text x="71.5" y="15" font-weight="bold">16</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-files.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="76" height="22" role="img" aria-label="files: 99"><title>files: 99</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="76" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="41" height="22" fill="#3b4252"/><rect x="41" width="35" height="22" fill="#57606a"/><rect width="76" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="20.5" y="15">files</text><text x="58.5" y="15" font-weight="bold">99</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-gain.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="118" height="22" role="img" aria-label="gain: +12.5 pts"><title>gain: +12.5 pts</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="118" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="40" height="22" fill="#3b4252"/><rect x="40" width="78" height="22" fill="#0969da"/><rect width="118" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="20.0" y="15">gain</text><text x="79.0" y="15" font-weight="bold">+12.5 pts</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-inst.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="220" height="22" role="img" aria-label="UQO: Sciences administratives"><title>UQO: Sciences administratives</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="220" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="40" height="22" fill="#3b4252"/><rect x="40" width="180" height="22" fill="#16365c"/><rect width="220" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="20.0" y="15">UQO</text><text x="130.0" y="15" font-weight="bold">Sciences administratives</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-integrity.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="117" height="22" role="img" aria-label="integrity: PASS"><title>integrity: PASS</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="117" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="62" height="22" fill="#3b4252"/><rect x="62" width="55" height="22" fill="#15803d"/><rect width="117" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="31.0" y="15">integrity</text><text x="89.5" y="15" font-weight="bold">PASS</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-items.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="186" height="22" role="img" aria-label="review items addressed: 86"><title>review items addressed: 86</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="186" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="151" height="22" fill="#3b4252"/><rect x="151" width="35" height="22" fill="#8250df"/><rect width="186" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="75.5" y="15">review items addressed</text><text x="168.5" y="15" font-weight="bold">86</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-lang1.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="121" height="22" role="img" aria-label="LaTeX: 29 files"><title>LaTeX: 29 files</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="121" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="53" height="22" fill="#3b4252"/><rect x="53" width="68" height="22" fill="#008080"/><rect width="121" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="26.5" y="15">LaTeX</text><text x="87.0" y="15" font-weight="bold">29 files</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-lang2.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="122" height="22" role="img" aria-label="Python: 15 files"><title>Python: 15 files</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="122" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="55" height="22" fill="#3b4252"/><rect x="55" width="67" height="22" fill="#3776ab"/><rect width="122" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="27.5" y="15">Python</text><text x="88.5" y="15" font-weight="bold">15 files</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-maturity.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="128" height="22" role="img" aria-label="maturity: grade B"><title>maturity: grade B</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="128" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="62" height="22" fill="#3b4252"/><rect x="62" width="66" height="22" fill="#2da44e"/><rect width="128" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="31.0" y="15">maturity</text><text x="95.0" y="15" font-weight="bold">grade B</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-pages.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="84" height="22" role="img" aria-label="pages: 80"><title>pages: 80</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="84" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="49" height="22" fill="#3b4252"/><rect x="49" width="35" height="22" fill="#bf3989"/><rect width="84" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="24.5" y="15">pages</text><text x="66.5" y="15" font-weight="bold">80</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-referees.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="123" height="22" role="img" aria-label="referee reports: 6"><title>referee reports: 6</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="123" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="97" height="22" fill="#3b4252"/><rect x="97" width="26" height="22" fill="#8250df"/><rect width="123" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="48.5" y="15">referee reports</text><text x="110.0" y="15" font-weight="bold">6</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-refs.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="109" height="22" role="img" aria-label="references: 87"><title>references: 87</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="109" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="74" height="22" fill="#3b4252"/><rect x="74" width="35" height="22" fill="#0969da"/><rect width="109" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="37.0" y="15">references</text><text x="91.5" y="15" font-weight="bold">87</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-repro.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="338" height="22" role="img" aria-label="reproducibility: R1 · reproduced from analysis data"><title>reproducibility: R1 · reproduced from analysis data</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="338" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="97" height="22" fill="#3b4252"/><rect x="97" width="241" height="22" fill="#2da44e"/><rect width="338" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="48.5" y="15">reproducibility</text><text x="217.5" y="15" font-weight="bold">R1 · reproduced from analysis data</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-reviewed.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="178" height="22" role="img" aria-label="peer review: completed ✓"><title>peer review: completed ✓</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="178" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="82" height="22" fill="#3b4252"/><rect x="82" width="96" height="22" fill="#15803d"/><rect width="178" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="41.0" y="15">peer review</text><text x="130.0" y="15" font-weight="bold">completed ✓</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-score.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="227" height="22" role="img" aria-label="review score: 56.4 → 68.9 / 100"><title>review score: 56.4 → 68.9 / 100</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="227" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="89" height="22" fill="#3b4252"/><rect x="89" width="138" height="22" fill="#2da44e"/><rect width="227" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="44.5" y="15">review score</text><text x="158.0" y="15" font-weight="bold">56.4 → 68.9 / 100</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-ssrn.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="123" height="22" role="img" aria-label="SSRN: 7626640"><title>SSRN: 7626640</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="123" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="48" height="22" fill="#3b4252"/><rect x="48" width="75" height="22" fill="#154881"/><rect width="123" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="24.0" y="15">SSRN</text><text x="85.5" y="15" font-weight="bold">7626640</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-tables.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="85" height="22" role="img" aria-label="tables: 32"><title>tables: 32</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="85" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="51" height="22" fill="#3b4252"/><rect x="51" width="34" height="22" fill="#e16f24"/><rect width="85" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="25.5" y="15">tables</text><text x="68.0" y="15" font-weight="bold">32</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-version.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="210" height="22" role="img" aria-label="version: 2.0 · November 2026"><title>version: 2.0 · November 2026</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="210" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="57" height="22" fill="#3b4252"/><rect x="57" width="153" height="22" fill="#0f766e"/><rect width="210" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="28.5" y="15">version</text><text x="133.5" y="15" font-weight="bold">2.0 · November 2026</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/b-words.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="114" height="22" role="img" aria-label="words: 31 100"><title>words: 31 100</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="114" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="50" height="22" fill="#3b4252"/><rect x="50" width="64" height="22" fill="#6639ba"/><rect width="114" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="25.0" y="15">words</text><text x="82.0" y="15" font-weight="bold">31 100</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/banner.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 330" width="1200" height="330" role="img" aria-label="UQO Working Paper No. 2 — Decoding Real Estate Descriptions: Semantic Embeddings and Hedonic Pricing of Residential Properties in Quebec"><defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#0f766e"/><stop offset="1" stop-color="#34d399"/></linearGradient><radialGradient id="gl" cx="85%" cy="10%" r="70%"><stop offset="0" stop-color="#fff" stop-opacity=".28"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></radialGradient></defs><rect width="1200" height="330" rx="22" fill="url(#bg)"/><rect width="1200" height="330" rx="22" fill="url(#gl)"/><g font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif"><text x="60" y="62" font-size="15" font-weight="700" fill="#fff" fill-opacity=".92" letter-spacing="2.5">UQO WORKING PAPER NO. 2 · REAL ESTATE & HOUSING</text><text x="60" y="118" font-size="28" font-weight="700" fill="#fff">Decoding Real Estate Descriptions: Semantic Embeddings</text><text x="60" y="154" font-size="28" font-weight="700" fill="#fff">and Hedonic Pricing of Residential Properties in</text><text x="60" y="190" font-size="28" font-weight="700" fill="#fff">Quebec</text><text x="60" y="230" font-size="17" fill="#fff" fill-opacity=".88" font-style="italic"></text><text x="60" y="286" font-size="16" fill="#fff" fill-opacity=".95">Simon-Pierre Boucher · Version 2.0 · November 2026 · 80 pages</text><circle cx="1030" cy="165" r="86" fill="#000" fill-opacity=".16" stroke="#fff" stroke-opacity=".25" stroke-width="14"/><circle cx="1030" cy="165" r="86" fill="none" stroke="#fff" stroke-width="14" stroke-linecap="round" stroke-dasharray="372.3 540.4" transform="rotate(-90 1030 165)"/><text x="1030" y="171" font-size="54" font-weight="700" fill="#fff" text-anchor="middle">68.9</text><text x="1030" y="199" font-size="14" fill="#fff" fill-opacity=".9" text-anchor="middle">review score / 100</text><text x="1030" y="125" font-size="13" fill="#fff" fill-opacity=".9" text-anchor="middle">before 56.4</text><rect x="938" y="271" width="184" height="30" rx="15" fill="#fff"/><text x="1030" y="291" font-size="14" font-weight="700" fill="#0f766e" text-anchor="middle">✓ PEER REVIEWED</text></g><circle cx="60" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="86" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="112" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="138" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="164" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="190" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="216" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="242" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="268" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="294" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="320" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="346" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="372" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="398" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="424" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="450" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="476" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="502" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="528" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="554" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="580" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="606" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="632" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="658" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="684" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="710" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="736" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="762" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="788" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="814" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="840" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="866" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="892" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="918" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="944" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="970" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="996" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="1022" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="1048" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="1074" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="1100" cy="308" r="2" fill="#fff" fill-opacity=".35"/><circle cx="1126" cy="308" r="2" fill="#fff" fill-opacity=".35"/></svg> | |
| \ No newline at end of file | ||
added
docs/readme/c-log.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="156" height="22" role="img" aria-label="🧾: Revision commits"><title>🧾: Revision commits</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="156" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="23" height="22" fill="#0b4f54"/><rect x="23" width="133" height="22" fill="#1b7c83"/><rect width="156" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="11.5" y="15">🧾</text><text x="89.5" y="15" font-weight="bold">Revision commits</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/c-pdf.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="208" height="22" role="img" aria-label="📄: Revised manuscript (PDF)"><title>📄: Revised manuscript (PDF)</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="208" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="23" height="22" fill="#7f1d1d"/><rect x="23" width="185" height="22" fill="#b31b1b"/><rect width="208" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="11.5" y="15">📄</text><text x="115.5" y="15" font-weight="bold">Revised manuscript (PDF)</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/c-read.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="152" height="22" role="img" aria-label="📖: Interactive reader"><title>📖: Interactive reader</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="152" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="23" height="22" fill="#4c1d95"/><rect x="23" width="129" height="22" fill="#6d28d9"/><rect width="152" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="11.5" y="15">📖</text><text x="87.5" y="15" font-weight="bold">Interactive reader</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/c-review.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="135" height="22" role="img" aria-label="🔍: Review branch"><title>🔍: Review branch</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="135" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="23" height="22" fill="#0a3069"/><rect x="23" width="112" height="22" fill="#0969da"/><rect width="135" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="11.5" y="15">🔍</text><text x="79.0" y="15" font-weight="bold">Review branch</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/c-site.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" width="111" height="22" role="img" aria-label="🌐: Paper page"><title>🌐: Paper page</title><linearGradient id="g" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-opacity=".12"/></linearGradient><clipPath id="r"><rect width="111" height="22" rx="5"/></clipPath><g clip-path="url(#r)"><rect width="23" height="22" fill="#14532d"/><rect x="23" width="88" height="22" fill="#15803d"/><rect width="111" height="22" fill="url(#g)"/></g><g fill="#fff" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11" text-anchor="middle"><text x="11.5" y="15">🌐</text><text x="67.0" y="15" font-weight="bold">Paper page</text></g></svg> | |
| \ No newline at end of file | ||
added
docs/readme/scores.svg
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 460" width="960" height="460" role="img" aria-label="Review scores before and after revision"><defs><linearGradient id="bar" x1="0" x2="1"><stop offset="0" stop-color="#0f766e"/><stop offset="1" stop-color="#34d399"/></linearGradient></defs><rect width="960" height="460" rx="16" fill="#ffffff" stroke="#d0d7de"/><g font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif"><text x="28" y="34" font-size="17" font-weight="700" fill="#1f2328">Peer-review scores, before → after revision</text><rect x="630" y="22" width="26" height="10" rx="5" fill="#afb8c1"/><text x="662" y="32" font-size="13" fill="#57606a">submitted version</text><rect x="790" y="21" width="26" height="12" rx="6" fill="url(#bar)"/><text x="822" y="32" font-size="13" fill="#57606a">revised version</text><line x1="250" y1="54" x2="250" y2="416" stroke="#d0d7de" stroke-width="1" stroke-dasharray="0"/><text x="250" y="436" font-size="12" fill="#6e7781" text-anchor="middle">0</text><line x1="408" y1="54" x2="408" y2="416" stroke="#d0d7de" stroke-width="1" stroke-dasharray="3 4"/><text x="408" y="436" font-size="12" fill="#6e7781" text-anchor="middle">25</text><line x1="565" y1="54" x2="565" y2="416" stroke="#d0d7de" stroke-width="1" stroke-dasharray="3 4"/><text x="565" y="436" font-size="12" fill="#6e7781" text-anchor="middle">50</text><line x1="722" y1="54" x2="722" y2="416" stroke="#d0d7de" stroke-width="1" stroke-dasharray="3 4"/><text x="722" y="436" font-size="12" fill="#6e7781" text-anchor="middle">75</text><line x1="880" y1="54" x2="880" y2="416" stroke="#d0d7de" stroke-width="1" stroke-dasharray="0"/><text x="880" y="436" font-size="12" fill="#6e7781" text-anchor="middle">100</text><text x="234" y="81" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Originality</text><rect x="250" y="65" width="348.4" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="77" width="365.4" height="12" rx="6" fill="url(#bar)"/><text x="625.4" y="82" font-size="13" fill="#1f2328"><tspan fill="#6e7781">55.3 → </tspan><tspan font-weight="700">58.0</tspan><tspan fill="#15803d" font-weight="700"> +2.7</tspan></text><text x="234" y="119" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Rigor</text><rect x="250" y="103" width="354.1" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="115" width="453.6" height="12" rx="6" fill="url(#bar)"/><text x="713.6" y="120" font-size="13" fill="#1f2328"><tspan fill="#6e7781">56.2 → </tspan><tspan font-weight="700">72.0</tspan><tspan fill="#15803d" font-weight="700"> +15.8</tspan></text><text x="234" y="157" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Identification</text><rect x="250" y="141" width="351.5" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="153" width="390.6" height="12" rx="6" fill="url(#bar)"/><text x="650.6" y="158" font-size="13" fill="#1f2328"><tspan fill="#6e7781">55.8 → </tspan><tspan font-weight="700">62.0</tspan><tspan fill="#15803d" font-weight="700"> +6.2</tspan></text><text x="234" y="195" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Data & reproducibility</text><rect x="250" y="179" width="341.5" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="191" width="466.2" height="12" rx="6" fill="url(#bar)"/><text x="726.2" y="196" font-size="13" fill="#1f2328"><tspan fill="#6e7781">54.2 → </tspan><tspan font-weight="700">74.0</tspan><tspan fill="#15803d" font-weight="700"> +19.8</tspan></text><text x="234" y="233" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Robustness</text><rect x="250" y="217" width="349.6" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="229" width="472.5" height="12" rx="6" fill="url(#bar)"/><text x="732.5" y="234" font-size="13" fill="#1f2328"><tspan fill="#6e7781">55.5 → </tspan><tspan font-weight="700">75.0</tspan><tspan fill="#15803d" font-weight="700"> +19.5</tspan></text><text x="234" y="271" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Writing</text><rect x="250" y="255" width="437.9" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="267" width="472.5" height="12" rx="6" fill="url(#bar)"/><text x="732.5" y="272" font-size="13" fill="#1f2328"><tspan fill="#6e7781">69.5 → </tspan><tspan font-weight="700">75.0</tspan><tspan fill="#15803d" font-weight="700"> +5.5</tspan></text><text x="234" y="309" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Figures & tables</text><rect x="250" y="293" width="391.9" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="305" width="504.0" height="12" rx="6" fill="url(#bar)"/><text x="764.0" y="310" font-size="13" fill="#1f2328"><tspan fill="#6e7781">62.2 → </tspan><tspan font-weight="700">80.0</tspan><tspan fill="#15803d" font-weight="700"> +17.8</tspan></text><text x="234" y="347" font-size="14" fill="#1f2328" text-anchor="end" font-weight="500">Literature</text><rect x="250" y="331" width="330.8" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="343" width="453.6" height="12" rx="6" fill="url(#bar)"/><text x="713.6" y="348" font-size="13" fill="#1f2328"><tspan fill="#6e7781">52.5 → </tspan><tspan font-weight="700">72.0</tspan><tspan fill="#15803d" font-weight="700"> +19.5</tspan></text><rect x="20" y="362" width="920" height="40" rx="8" fill="#0f766e" fill-opacity=".08"/><text x="234" y="385" font-size="14" fill="#1f2328" text-anchor="end" font-weight="700">Weighted total</text><rect x="250" y="369" width="355.3" height="10" rx="5" fill="#afb8c1"/><rect x="250" y="381" width="434.1" height="12" rx="6" fill="url(#bar)"/><text x="694.1" y="386" font-size="13" fill="#1f2328"><tspan fill="#6e7781">56.4 → </tspan><tspan font-weight="700">68.9</tspan><tspan fill="#15803d" font-weight="700"> +12.5</tspan></text></g></svg> | |
| \ No newline at end of file | ||
| 2 | ||