Skip to content

fix(data): merge 153 confirmed website near-duplicate records - #341

Open
Seungpyo1007 wants to merge 2 commits into
developfrom
Seungpyo1007/website-dedup-scan
Open

Seungpyo1007 wants to merge 2 commits into
developfrom
Seungpyo1007/website-dedup-scan

Conversation

@Seungpyo1007

@Seungpyo1007 Seungpyo1007 commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Scanned all ~40k data/website/ records for near-duplicates (one of the last untouched categories flagged in #296's accuracy tracker). Candidates were grouped by normalized homepage_url and display name; the strong signal was records sharing the exact same normalized URL. After per-group review, 153 groups were confirmed as the same real website imported more than once and merged into a single record; 154 redundant files were deleted (one group was 3-way).

Duplicate patterns merged

  • QID-suffixed clones — a clean slug plus a -q copy of the same site (e.g. �rto / �rto-q126912904, subito / subito-q86452434).
  • Bare-domain stubs vs the proper record (e.g. 3dmgame-com -> 3dm, �mazon-com -> �mazon).
  • Protocol / www / trailing-slash / punctuation variants (e.g. �d-gest / �dgest, liputan-6 / liputan6).
  • Same-entity name variants, including acronym/expansion and translated open-data-portal names (e.g. ANNO / \AustriaN Newspapers Online, Gosuslugi / \State Services, English/German titles of one museum exhibition).

Merge rule

For each group I kept the fuller / verified / better-sourced side, unioned source_urls, OR'd the �erified flag, and filled only missing optional fields (never overwriting an existing value). No field values were invented.

Kept as distinct (not merged)

Records that merely share an index/landing URL but denote different real entities were left alone: museum exhibition pages under one archive host, imageboard boards, government registration services differing only by URL fragment (#ul/#ip), and borderline company-vs-website / subsite / regional-version pairs (e.g. itv.com vs ITVX, Daily Mail vs MailOnline, two different municipalities sharing one open-data portal URL).

Verification

  • python -m app.validate -> passed.
  • TechEngine integrity_check.py --strict against this worktree -> no hard anomalies (no duplicate slugs, no slug/filename mismatch, no verified-without-source).
  • Static dump refreshed via TechEngine \�pp.dump\ as the final commit; the \websites\ collection count drops 40,084 -> 39,930, matching the 154 removed files.

Closes #296

Scanned all ~40k data/website records for near-duplicates keyed on normalized homepage_url and display name. Merged 153 groups that denote the same real website imported more than once - QID-suffixed clones, bare-domain stubs vs proper records, protocol/www/trailing-slash/punctuation variants, and same-entity name variants (e.g. Amazon.com/Amazon, ANNO/AustriaN Newspapers Online, translated open-data portal names).

Each merge keeps the fuller/verified/better-sourced side, unions source_urls, ORs the verified flag, and fills only missing optional fields. Redundant files deleted (154 files; one 3-way group). Websites have no inbound cross-category references, so deletions are safe.

Kept as distinct: different exhibitions/services sharing a museum or portal landing URL, board pages, registration services differing by URL fragment, and borderline company-vs-website / subsite / regional-version pairs. validate.py passes; integrity_check.py --strict reports no hard anomalies.

Refs #296
Regenerated the full site/public dump fresh via TechEngine app.dump (engine pinned at 147d27d, scratch DATABASE_URL, TECHAPI_DATA_DIR) against the branch rebased onto develop. Websites collection is 39,930 after removing 154 duplicate files; the remaining non-website deltas are updated_at values that develop's own dump refresh left stale relative to the current data git history.

Refs #296
@Seungpyo1007
Seungpyo1007 force-pushed the Seungpyo1007/website-dedup-scan branch from 5e1a416 to b638563 Compare September 29, 2026 17:40
@Seungpyo1007

Copy link
Copy Markdown
Member Author

12/12 categories ? 190,314 records ? diff base develop@37d2f91

🔎 Data verification — Tiers 0–3 (on demand)

153 changed data record(s) (showing first 40 for network tiers). Tier 3 is dry-run — no verified flags are written.

Tier 0 — offline score (changed)

Slug Category Band Score Flags
3dm website 🟡 72.5 —
abs-cbn-news website 🟡 72.5 —
actu-mag website 🟡 72.5 —
aftermath-q130051799 website 🟡 72.5 —
agi-repository website 🟡 66.2 —
ai-prompt-architect website 🟡 66.2 —
akita-prefectural-university-institutional-repository website 🟡 66.2 —
akita-university-institutional-repository website 🟡 66.2 —
amazon website 🟢 78.8 —
ameba website 🟢 85.0 —
american-national-biography-online website 🟢 78.8 —
android-wedakarayo website 🟡 72.5 —
antenati website 🟡 72.5 —
apewineboxes website 🟡 72.5 —
archivio-ricerca-ca-foscari website 🟡 72.5 —
arto website 🟡 72.5 —
austrian-newspapers-online website 🟢 78.8 —
autoza website 🟢 78.8 —
bandlab website 🟡 66.2 —
bd-gest website 🟡 72.5 —
be-frsh website 🟡 72.5 —
behindwoods website 🟢 85.0 —
beyond-paradise-adventures website 🟢 85.0 —
born-in-slavery-slave-narratives-from-the-federal-writers-project-1936-to-1938 website 🟡 66.2 —
bracero-history-archive website 🟡 66.2 —
bruha website 🟡 72.5 —
bulgarian-open-data-portal website 🟡 72.5 —
businessdesk website 🟡 72.5 —
businesswanted-com website 🟡 72.5 —
canada-times-news website 🟢 78.8 —
caught-between-the-pages-treasures-from-the-franclemont-collection website 🟡 66.2 —
cihang-app website 🟢 78.8 —
cnn-com website 🟢 85.0 —
comparasemplice-it website 🟡 72.5 —
covid-19-tracker website 🟢 78.8 —
crowdfunder website 🟡 72.5 —
daido-university-repository website 🟡 66.2 —
darwin-correspondence-project website 🟡 60.8 launch_date_plausible
data-gov-ua website 🟡 72.5 —
dcinematoday-q106686529 website 🟢 78.8 —

Tier 1 — source-URL liveness (changed)

Checked 81 unique URL(s): 80 alive, 1 dead, 0 automation-challenged.

Dead reason Count
http-404 1

Tier 2 — external cross-reference (changed)

Decision Count
ambiguous 40

Tier 3 — promotion (dry-run)

12 record(s) would promote to verified:true, 28 held.

Slug Reason
amazon green-live-source
ameba green-live-source
american-national-biography-online green-live-source
austrian-newspapers-online green-live-source
autoza green-live-source
behindwoods green-live-source
beyond-paradise-adventures green-live-source
canada-times-news green-live-source
cihang-app green-live-source
cnn-com green-live-source
covid-19-tracker green-live-source
dcinematoday-q106686529 green-live-source

Full-dataset Tier 0 baseline

190314 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" : 33076
    "Yellow" : 156185
    "Red" : 1053
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 207 122 85 0 58.9%
soc 🟩🟩🟨🟨🟨🟨🟨🟥🟥🟥🟥🟥 2117 284 837 996 13.4%
smartphone 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 92824 18172 74599 53 19.6%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3305 289 3015 1 8.7%
watch 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟥 418 93 323 2 22.2%
pda 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 112 80 32 0 71.4%
gpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 2083 1536 547 0 73.7%
cpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟥 4628 4337 290 1 93.7%
laptop 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 1966 126 1840 0 6.4%
monitor 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 231 3 228 0 1.3%
software 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 42493 366 42127 0 0.9%
website 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 39930 7668 32262 0 19.2%
All 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 190314 33076 156185 1053 17.4%

Hard violations (forced red):

Count Check
1 !boost_ge_base

Requested by @Seungpyo1007 via /verify · scored by app.verify, posted by TechEngineBot. Informational only — the structural gate (app.validate) is separate; Tier 3 here is dry-run.

This branch has not been deployed

No deployments
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 enhancement New feature or request

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

Data accuracy: corrections, duplicates and dates (workstream)

1 participant