Skip to content

fix(data): merge 651 confirmed monitor near-duplicate records - #333

Merged
Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/monitor-dedup-scan
Sep 29, 2026
Merged

Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/monitor-dedup-scan

Conversation

@Seungpyo1007

@Seungpyo1007 Seungpyo1007 commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Continuing the "near-duplicates in other categories not yet scanned" item after the tablet/watch (#324), smartphone (#329) and laptop (#332) passes, I scanned the monitor category. Scope: 882 data/monitor/<brand>/<year>/<base_model_slug>/<slug>.json records, all sourced from one Kaggle Amazon monitor dataset (amazon-monitor-durjoychandrapaul).

Result: 651 confirmed near-duplicate records merged. 882 → 231.

Method

Same approach as the prior passes: normalize slugs/names (punctuation- and brand-prefix-agnostic) and cross-check the specs that must be identical for the same physical panel — release_date, size_inch, resolution, aspect_ratio, refresh_hz, panel_type, ppi, plus the model number embedded in name. The deterministic merge rule: group by base_model_slug + a full spec fingerprint (every field except variant, slug, source_urls); for each cluster keep the lowest source_row as canonical, union source_urls, and delete the rest.

Per-pattern results

  • Pattern 1 (same scrape imported twice under different row-id slugs): 650 files merged across 14 base models. Each cluster is byte-identical except slug and variant.source_row. Kept the lowest source_row, deleted the redundant files; source_urls were identical so the union was a no-op and no values changed. Breakdown:
    • asus-va329he 84→1 (−83)
    • aopen-aopen-by-acer (32SA2QK 4K) 69→1 (−68)
    • acer-cb272 63→1 (−62)
    • acer-sh242y 60→1 (−59)
    • acer-xb273k 60→1 (−59)
    • acer-xz342cu 47→1 (−46)
    • acer-kb252q 45→1 (−44)
    • acer-sb240y (G0bi) 44→1 (−43)
    • acer-sb272 (EBI) 39→1 (−38)
    • acer-xz320qu 31→1 (−30)
    • acer-hdr10 (31.5" Nitro 240Hz, two byte-identical price clusters) 74→2 (−72)
    • acer-sb270 27→1 (−26)
    • acer-kc242y 14→1 (−13)
    • acer-xb273u 7→1 (−6)
  • Pattern 2 (brand-prefix path variance, e.g. dell-u2723qe vs u2723qe): none. Every record already lives under a consistent brand-prefixed base dir.
  • Pattern 3 (cross-source dup under a different title convention): 1 merged. asus-va24ehe rows 60 and 404 are the same ASUS VA24EHE (23.8", 1920×1080, 75 Hz, IPS, $99) imported with two different Amazon title strings. Kept row 60 (cleaner, untruncated title) and adopted the more complete features.adaptive_sync = "FreeSync" from row 404 — a real, documented VA24EHE spec (ASUS product page). No other field differed.

Left unmerged (genuine distinct SKUs / ambiguous — documented, not guessed)

These share a coarse base_model_slug but are different real products, so they were intentionally kept:

  • acer-eda343cur — 100 Hz/$200 vs 180 Hz/$280 (different refresh SKUs)
  • acer-sb240y — G0bi (black, $95) vs G0wi (white, $110)
  • acer-sb242y — EBI (IPS) vs Hbi ($128)
  • acer-sb272 — EBI (new) vs "E … (Renewed)" listing
  • aopen-aopen-by-acer — 32SA2QK (31.5" 4K) vs 27E1 (27" FHD)
  • gigabyte-m27q — M27Q vs M27Q PRO
  • hp-hp-series-monitor — Series 5 24" vs 524sa bundle
  • lenovo-lenovo-thinkvision-full — ThinkVision M15 (15.6") vs T22i-30 (21.5")
  • lg-lg-digital-signage — 49UH5F-H (49") vs 86UH5E-B (86")
  • lg-lg-ultragear-gaming — 27" QHD 240 Hz vs 27" 5120×1440 165 Hz
  • lilliput-fa1014-np — 1280×800 non-touch vs 1920×1080 touch
  • samsung-hdr2000 — Odyssey Neo G7 vs Neo G8
  • acer-hdr10 residual — the hdr10 slug is an importer fallback shared by a few genuinely different Nitros (27" WQHD 170 Hz, 27" FHD 240 Hz, and the 31.5" 240 Hz at two prices); left as-is rather than guess.

Placeholder / fabricated-defaults check: clean (no bug)

No equivalent of the phone-batch battery_mah/weight_g stamping. Spec value distributions across distinct base models are organic (27" popular; 1920×1080 common; 100/165/75 Hz common), each spread over many unrelated models — not one value stamped onto unrelated devices. The one systematic artifact is release_date = "2023-01-01" on all 882 records, but that is a uniform dataset-wide import placeholder that affects every record equally, so it is not a dedup signal and is out of scope for this merge. Noting it here for the "placeholder dates" tracker item.

Verification

  • python -m app.validate → Data validation passed (monitor required-field / slug-convention / filename-match / base-dir checks included).
  • python integrity_check.py <data> --strict → no hard anomalies (structural section clean: no duplicate monitor slugs, no slug/filename mismatches, no verified-without-source); only the pre-existing advisory CPU/GPU ratio outliers print, which the gate treats as review-only.
  • Dump refreshed as the PR's last commit (python -m app.dump), scoped to the monitor collection: the 651 orphaned detail pages were pruned, v1/monitors/index.json rebuilt (231), the asus-va24ehe detail page picked up the merged adaptive_sync, and the v1 manifest monitor count updated 882 → 231. Unrelated pre-existing serialization drift in other collections was deliberately kept out to keep this diff monitor-scoped and reviewable.

Closes #296

Collapse identical re-imports from the amazon-monitor Kaggle dataset where the same physical monitor was ingested many times under different amazonmon-<row> slugs with byte-identical specs. For each (base_model_slug + full spec fingerprint) cluster, keep the lowest source_row as canonical, union source_urls, and delete the redundant files. Also merge one cross-source duplicate (asus-va24ehe rows 60 & 404: same VA24EHE, two title strings) keeping the cleaner title and adopting the more complete adaptive_sync=FreeSync attribute. 882 -> 231 monitor records. Genuine SKU/config variants left unmerged. Refs #296
Regenerate site/public/v1/monitors from the deduplicated data (python -m app.dump): drop the 651 orphaned detail pages for the merged-away records, rebuild the monitors list (882 -> 231), refresh the asus-va24ehe detail page with the merged adaptive_sync attribute, and update the monitor count in the v1 manifest. Scoped to monitor-attributable dump output only. Refs #296
@TechEngineBot

Copy link
Copy Markdown
Member

🔎 Data verification — Tier 0 (offline existence/trust)

Scored by app.verify; posted by TechEngineBot. Informational only — the structural gate (app.validate) is separate and authoritative for merge.

12/12 categories ? 191,168 records ? diff base develop@ea3f31e

Changed records in this PR

1 record(s) assessed.

%%{init: {"theme":"base","themeVariables":{"pie1":"#3fb950","pie2":"#d29922","pie3":"#f85149","pieStrokeWidth":"0px","pieOpacity":"1"}}}%%
pie showData
    title Verification bands — all records
    "Green" : 0
    "Yellow" : 1
    "Red" : 0
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
monitor 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 1 0 1 0 0.0%
All 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 1 0 1 0 0.0%

Full-dataset baseline

191168 record(s) assessed.

%%{init: {"theme":"base","themeVariables":{"pie1":"#3fb950","pie2":"#d29922","pie3":"#f85149","pieStrokeWidth":"0px","pieOpacity":"1"}}}%%
pie showData
    title Verification bands — all records
    "Green" : 32772
    "Yellow" : 157341
    "Red" : 1055
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 207 122 85 0 58.9%
soc 🟩🟩🟨🟨🟨🟨🟨🟥🟥🟥🟥🟥 2117 284 837 996 13.4%
smartphone 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 93407 18003 75350 54 19.3%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3459 292 3166 1 8.4%
watch 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟥 447 94 350 3 21.0%
pda 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 140 83 57 0 59.3%
gpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 2076 1529 547 0 73.7%
cpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟥 4512 4219 292 1 93.5%
laptop 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 1995 107 1888 0 5.4%
monitor 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 231 0 231 0 0.0%
software 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 42493 366 42127 0 0.9%
website 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 40084 7673 32411 0 19.1%
All 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 191168 32772 157341 1055 17.1%

Hard violations (forced red):

Count Check
1 !boost_ge_base

green = authoritative source + complete + consistent · yellow = plausible, needs confirmation · red = sparse/weak source or a hard contradiction. Promotion to verified runs in the scheduled verify-network workflow.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine change review: PASS

12/12 categories ? 191,168 records ? diff base develop@ea3f31e

Check Result
python -m app.validate PASS
Changed dump JSON and manifest/index counts PASS
New hard integrity anomalies vs PR base PASS

Changed data

Category Added Modified Deleted Added verified Added unverified Added Kaggle-sourced
brand 0 0 0 0 0 0
soc 0 0 0 0 0 0
smartphone 0 0 0 0 0 0
tablet 0 0 0 0 0 0
watch 0 0 0 0 0 0
pda 0 0 0 0 0 0
gpu 0 0 0 0 0 0
cpu 0 0 0 0 0 0
laptop 0 0 0 0 0 0
monitor 0 1 651 0 0 0
software 0 0 0 0 0 0
website 0 0 0 0 0 0

Changed record examples

monitor modified

  • monitor/asus/2023/asus-va24ehe/asus-va24ehe-amazonmon-60.json - ASUS VA24EHE 23.8” Monitor 75Hz Full HD (1920x1080) IPS Eye Care HDMI D-Sub DVI-D,Black

monitor deleted

  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-102.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-104.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-153.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-163.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-178.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-191.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-193.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-208.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-223.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-226.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-251.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-260.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-262.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-282.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • monitor/acer/2023/acer-cb272/acer-cb272-amazonmon-298.json - Acer CB272 Ebmiprx 27" FHD 1920 x 1080 Zero Frame Home Office Monitor | AMD FreeSync | 1ms VRB | 100Hz | 99% sRGB | Heig
  • ... 636 more

Heuristic review

  • Heuristic warnings: none found.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine validation stats: PASS

12/12 categories ? 191,168 records ? diff base develop@ea3f31e

Data summary

Category Total Verified Unverified Missing verified Tracked Verified % of tracked
brand 207 123 84 0 207 59.4%
soc 2117 284 1833 0 2117 13.4%
smartphone 93407 17581 75826 0 93407 18.8%
tablet 3459 288 3171 0 3459 8.3%
watch 447 94 353 0 447 21.0%
pda 140 74 66 0 140 52.9%
gpu 2076 1496 580 0 2076 72.1%
cpu 4512 4219 293 0 4512 93.5%
laptop 1995 105 1890 0 1995 5.3%
monitor 231 0 231 0 231 0.0%
software 42493 358 42135 0 42493 0.8%
website 40084 7635 32449 0 40084 19.0%
all 191168 32257 158911 0 191168 16.9%

Warning

Tracked verified coverage is below 50% for monitor 0.0% (0/231), software 0.8% (358/42493), laptop 5.3% (105/1995), tablet 8.3% (288/3459), soc 13.4% (284/2117), all 16.9% (32257/191168), smartphone 18.8% (17581/93407), website 19.0% (7635/40084), and 1 more.
Tracked coverage excludes records missing the verified field; see the Missing verified column for those records.
This does not fail validation. Keep imported records verified: false until manual audit, but treat this as follow-up verification work before relying on the affected categories as curated data.

Validation notes

  • The integrity gate blocks only hard anomalies introduced by this PR relative to its merge base.
  • Full advisory outlier listings are suppressed on successful runs because they are dataset-wide and mostly stable between PRs.
  • Failure runs still include a detailed log excerpt for debugging.

Key output:

## app.validate
## integrity_check.py (PR head compared with PR base)
loaded CPU=4512 GPU=2076
Integrity section Flagged lines
structural 0
CPU name/tier consistency (desktop mainstream only) 0
CPU single>multi (cinebench/geekbench — should be multi>=single) 0
CPU era-vs-score outliers 0
CPU cross-source ratio outliers (possible wrong-variant) 132
GPU cross-source ratio outliers + sanity 51

@Seungpyo1007
Seungpyo1007 merged commit cddc52e into develop Sep 29, 2026
5 checks passed
@Seungpyo1007
Seungpyo1007 deleted the Seungpyo1007/monitor-dedup-scan branch September 29, 2026 12:47
@Seungpyo1007 Seungpyo1007 removed the enhancement New feature or request label Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working data Dataset changes

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Data accuracy: corrections, duplicates and dates (workstream)

2 participants