Skip to content

data: add laptop category — 970 laptops (first non-mobile class)#102

Merged
Seungpyo1007 merged 5 commits into
mainfrom
data/import-staging
Jul 8, 2026
Merged

data: add laptop category — 970 laptops (first non-mobile class)#102
Seungpyo1007 merged 5 commits into
mainfrom
data/import-staging

Conversation

@Seungpyo1007

Copy link
Copy Markdown
Member

What & why

Adds a new laptop category to the dataset — the first non-mobile device class — with 970 laptops. This is the TechAPI half; the engine half (model/schema/router/seed/dump/validate) merged in TechEngine PR #39 and the submodule pin was bumped to d1c3b0b on main, so laptops now validate, serve and dump like any other category.

  • Added: 970 laptop records (Lenovo 233, HP 218, Asus 179, Acer 102, MSI 93, Dell 73, Apple 22, Samsung 17, and others)
  • All verified: false. brand is a required FK; cpu/gpu are optional FKs (raw cpu_name/gpu_name always kept). Fields: ram_gb, storage_gb, display, device_category, msrp_usd, os.

Commits (each Refs #1): validator rule, 3 brand-group data commits, and the surgical dump refresh (new laptops collection).

Closes #1

Source

abhinavflac/laptops-specs-dataset (GitHub, MIT). MSRP converted INR→USD (~÷83); release_date year derived from the CPU generation (Intel/AMD/Apple naming), placeholder YYYY-01-01. variant.source_row cites the CSV row.

Dump

Regenerated via TechEngine app.dump at the laptop-supporting submodule pin d1c3b0b. Laptops are unscored (no /score), so the dump adds v1/laptops/** (detail only) + a manifest entry. Only the new collection + manifest are committed — no churn on existing records.

Checklist

  • python -m app.validate — ✅ passed (full dataset incl. 970 laptops)
  • python TechEngine/integrity_check.py data --strict — ✅ no hard anomalies
  • git diff --check — ✅ clean
  • Correct data/laptop/<brand>/<year>/<base>/<slug>.json paths, kebab-case unique slugs, source_urls present

Mirror the TechEngine laptop validator: LAPTOP_REQUIRED fields, ranges
(ram_gb 1-256, storage_gb, weight_g 300-6000, msrp 50-50000), brand
required + optional cpu/gpu FK checks, and the variant path convention.

Refs #1
New `laptop` category seeded from the abhinavflac/laptops-specs-dataset
(GitHub, MIT). Lenovo and HP lines with cpu_name/gpu_name, RAM, storage,
display and INR->USD MSRP. Bulk import, verified:false.

Refs #1
More abhinavflac/laptops-specs-dataset laptops (Asus, Acer, MSI gaming
and mainstream lines). verified:false.

Refs #1
Remaining abhinavflac/laptops-specs-dataset laptops (Dell, Apple,
Samsung, Microsoft, Infinix, Gigabyte, Motorola). verified:false.

Refs #1
Add the 970 laptop records to the static v1 dump (new `laptops`
collection, unscored) and register it in the manifest. Regenerated via
TechEngine app.dump at the laptop-supporting submodule pin d1c3b0b;
only the new laptop collection + manifest are committed.

Refs #1
@Seungpyo1007 Seungpyo1007 added enhancement New feature or request data Dataset changes labels Jul 8, 2026
@Seungpyo1007 Seungpyo1007 self-assigned this Jul 8, 2026
@github-actions github-actions Bot added the app Validator or application code changes label Jul 8, 2026
@Seungpyo1007 Seungpyo1007 moved this from Todo to In Progress in TechAPI-Project Jul 8, 2026
@Seungpyo1007

Copy link
Copy Markdown
Member Author

🤖 Review — PASS

Check Command Result
Schema/self-check python -m app.validate ✅ passed (full dataset incl. 970 laptops)
Integrity gate python TechEngine/integrity_check.py data --strict ✅ no hard anomalies
Whitespace git diff --check origin/main..HEAD ✅ none
Engine dump app.dump @ d1c3b0b ✅ 106,641 records incl. laptops:970

Data-change summary

  • Added: 970 laptops (new category) · Modified/Deleted: 0
  • All verified:false. brand required FK; cpu/gpu optional FKs, raw cpu_name/gpu_name preserved.
  • New category wired end-to-end: engine model/schema/router/seed/dump/validate landed in TechEngine PR data(mobile): import supplemental smartphone and tablet variants #39 (merged); submodule pinned to d1c3b0b on main.

Example records

  • data/laptop/lenovo/2024/lenovo-legion-pro-5/…-abhinavflac-…json (Gaming, Core Ultra 7 255HX, RTX 5060, 32GB)
  • data/laptop/acer/2021/acer-15-aspire-lite-al15-41/…json (Ryzen 5 5625U, 16GB)

Heuristic notes

  • release_date year derived from CPU generation (placeholder YYYY-01-01) since the source lacks dates; MSRP converted INR→USD. A few gpu_name values read "Radeon Radeon" (source series+model duplication) — cosmetic, raw string only.

Site build

  • No site/src changes. Surgical dump refresh — only the new v1/laptops/** collection + manifest committed (laptops are unscored).

@Seungpyo1007

Copy link
Copy Markdown
Member Author

📊 Dataset stats (post-merge projection)

Metric Count
Total records 106,641
verified: true 10,028
verified: false 96,607
missing verified 6
Verified ratio 9.40%

New category: laptops (970) — the dataset's first non-mobile device class. Public laptop data is small (~1k rich records), so this is near the ceiling for a single source; more can come from additional laptop datasets later.

@Seungpyo1007 Seungpyo1007 merged commit 4499d3a into main Jul 8, 2026
5 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in TechAPI-Project Jul 8, 2026
@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.

Changed records in this PR

No records scored.

Full-dataset baseline

105671 record(s) scored.

%%{init: {"theme":"base","themeVariables":{"pie1":"#3fb950","pie2":"#d29922","pie3":"#f85149","pieStrokeWidth":"0px","pieOpacity":"1"}}}%%
pie showData
    title Verification bands — all records
    "Green" : 10029
    "Yellow" : 93177
    "Red" : 2465
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 189 10 179 0 5.3%
soc 🟩🟨🟨🟨🟨🟥🟥🟥🟥🟥🟥🟥 2104 123 680 1301 5.8%
smartphone 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 93343 8453 83770 1120 9.1%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3455 174 3253 28 5.0%
watch 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 433 11 412 10 2.5%
pda 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 140 27 107 6 19.3%
gpu 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 2030 245 1785 0 12.1%
cpu 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨 3977 986 2991 0 24.8%
All 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 105671 10029 93177 2465 9.5%

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

Check Result
python -m app.validate PASS
python integrity_check.py TechAPI/data --strict 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

Changed record examples

  • No data file changes detected.

Heuristic review

  • Heuristic warnings: none found.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine validation stats: PASS

Data summary

Category Total Verified Unverified Missing verified Tracked Verified % of tracked
brand 189 10 179 0 189 5.3%
soc 2104 123 1981 0 2104 5.8%
smartphone 93343 8453 84890 0 93343 9.1%
tablet 3455 174 3281 0 3455 5.0%
watch 433 11 422 0 433 2.5%
pda 140 27 113 0 140 19.3%
gpu 2030 244 1786 0 2030 12.0%
cpu 3977 986 2991 0 3977 24.8%
all 105671 10028 95643 0 105671 9.5%

Warning

Tracked verified coverage is below 50% for watch 2.5% (11/433), tablet 5.0% (174/3455), brand 5.3% (10/189), soc 5.8% (123/2104), smartphone 9.1% (8453/93343), all 9.5% (10028/105671), gpu 12.0% (244/2030), pda 19.3% (27/140), 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

  • 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 --strict
loaded CPU=3977 GPU=2030
✅ integrity gate: no hard anomalies.
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 8
CPU cross-source ratio outliers (possible wrong-variant) 152
GPU cross-source ratio outliers + sanity 18

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app Validator or application code changes data Dataset changes enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Massive dataset rebuild: CPU + brand + GPU + smartphone + SoC (1989-2026)

2 participants