# Soniteq Schema Coverage — Live Scan Report

**Scanned:** 2026-08-13 · **Site:** `https://www.soniteq.co`
**Method:** fetched `sitemap.xml`, then fetched all 181 listed URLs and extracted every `<script type="application/ld+json">` block. Each block parsed as JSON and walked recursively for every `@type`, including inside `@graph` and nested objects.
**Independent verification:** two pages spot-checked in Google Rich Results Test (screenshots attached).

> **This file is the artifact backing the published claim on [/case-study](../../app/case-study/page.tsx).** If the figures on that page and the figures here ever disagree, this file wins and the page is stale.

> **The two quantities are counted separately.** `instances` = total occurrences sitewide. `pages with type` = distinct pages containing at least one. `coverage = pages with type ÷ pages scanned`. Conflating these is the bug in EntityMesh's current diagnostic — it counts crawl *entries* against *distinct pathnames*, which is why it can print 116%. Nothing here can exceed 100%.

---

## Totals

| | |
|---|---|
| URLs in sitemap | 181 |
| **Pages scanned (the denominator)** | **181** |
| Pages failed | **0** |
| JSON-LD blocks found | 1,023 |
| **Blocks that failed to parse** | **0** |
| **Total schema instances** | **2,987** |
| Distinct `@type` values | 28 |

**Zero parse errors across 1,023 blocks.** The structured data on this site is well-formed.

---

## The five types the case study previously published

| @type | Instances | Pages with type | Coverage | Published Feb 2026 |
|---|---|---|---|---|
| **BreadcrumbList** | 181 | 181/181 | **100%** | 240 inst · 134/153 · 88% |
| **Article** | 118 | 118/181 | **65.2%** | 128 inst · 118/153 · 77% |
| **DefinedTermSet** | **0** | **0/181** | **0%** | 116 inst · 85/153 · 56% |
| **FAQPage** | 116 | 116/181 | **64.1%** | 113 inst · 105/153 · 69% |
| **HowTo** | **0** | **0/181** | **0%** | 70 inst · 63/153 · 41% |

### What changed

**🔴 `DefinedTermSet` and `HowTo` no longer exist on the site.** The old case study published them at 56% and 41% coverage. Both are at zero today. `DefinedTerm` (singular, a different type) exists at 14 instances across 7.7% of pages — so the glossary markup was likely restructured rather than deleted. **These are different types and must never be substituted for each other.**

**🟢 `BreadcrumbList` improved to 100%.** Every page now carries exactly one. The published figure was 88%. This is genuinely better than what was claimed.

**🟡 `Article` and `FAQPage` coverage fell** — 77%→65.2% and 69%→64.1%. Instance counts barely moved (128→118, 113→116); the denominator grew from 153 to 181 pages. **Coverage dropped because pages were added faster than markup, not because markup was removed.**

**One number worth noting:** `Article` today is **118 instances**, which is exactly the published *pages-with-Article* figure (118/153). Given Article runs 1.0 per page, that may be coincidence — or the published 118 was an instance count.

---

## Full type inventory — all 28

| @type | Instances | Pages | Coverage | Per covered page |
|---|---|---|---|---|
| ListItem | 714 | 181 | 100% | 3.94 |
| Question | 272 | 116 | 64.1% | 2.34 |
| Answer | 272 | 116 | 64.1% | 2.34 |
| Organization | 190 | 181 | 100% | 1.05 |
| WebSite | 188 | 181 | 100% | 1.04 |
| ImageObject | 182 | 181 | 100% | 1.01 |
| **BreadcrumbList** | 181 | 181 | 100% | 1.00 |
| ContactPoint | 181 | 181 | 100% | 1.00 |
| SearchAction | 181 | 181 | 100% | 1.00 |
| WebPage | 181 | 181 | 100% | 1.00 |
| **Article** | 118 | 118 | 65.2% | 1.00 |
| **FAQPage** | 116 | 116 | 64.1% | 1.00 |
| SpeakableSpecification | 70 | 70 | 38.7% | 1.00 |
| SoftwareApplication | 31 | 20 | 11.0% | 1.55 |
| Offer | 18 | 6 | 3.3% | 3.00 |
| Course | 16 | 16 | 8.8% | 1.00 |
| DefinedTerm | 14 | 14 | 7.7% | 1.00 |
| BlogPosting | 12 | 12 | 6.6% | 1.00 |
| ItemList | 9 | 9 | 5.0% | 1.00 |
| CourseInstance | 8 | 8 | 4.4% | 1.00 |
| CollectionPage | 7 | 7 | 3.9% | 1.00 |
| Dataset | 7 | 1 | 0.6% | 7.00 |
| DataDownload | 7 | 1 | 0.6% | 7.00 |
| Thing | 4 | 1 | 0.6% | 4.00 |
| Person | 3 | 3 | 1.7% | 1.00 |
| Audience | 3 | 2 | 1.1% | 1.50 |
| AggregateOffer | 1 | 1 | 0.6% | 1.00 |
| DataCatalog | 1 | 1 | 0.6% | 1.00 |

**Note on the type count.** 28 is a count of distinct `@type` values, not of 28 independent implementations. Several are nested children of others: `ListItem` exists because `BreadcrumbList` does; `Question` and `Answer` exist because `FAQPage` does; `CourseInstance` because `Course` does. Presenting 28 as 28 separate achievements would inflate the claim.

---

## The headline the old case study was missing

The previously published claim counted **five types summing to 667 instances across 153 pages.**

Those same five types today total **415 instances**. But the site's *actual* structured-data footprint is **2,987 instances across 28 types on 181 pages** — roughly **4.5× the published figure.**

**The old claim undersold the current site by counting only five types.** Every page carries Organization, WebSite, WebPage, ImageObject, ContactPoint, SearchAction and BreadcrumbList at 100%. That is a stronger story than the one being told, and it has the advantage of being currently true.

---

## Independent verification — Google Rich Results Test

Run 2026-08-13. Both pages returned **zero errors**.

**`/answers/what-is-soniteq`** — *4 valid items detected*, crawled successfully Aug 13 2026 6:00:50 PM
Articles ✅ · Breadcrumbs ✅ · Organization ✅ · Paywalled Content ✅
*(Articles flagged "non-critical issues" — optional recommended properties, not errors.)*
Screenshot: [`rrt-answers-what-is-soniteq-2026-08-13.jpg`](rrt-answers-what-is-soniteq-2026-08-13.jpg)

**`/kora`** — *3 valid items detected*, crawled successfully Aug 13 2026 6:02:14 PM
Breadcrumbs ✅ · Organization ✅ · Software Apps ✅
*(**Software Apps** also flagged "non-critical issues" — optional recommended properties, not errors.)*
Screenshot: [`rrt-kora-2026-08-13.jpg`](rrt-kora-2026-08-13.jpg)

> ⚠️ **Correction to the original scan report (applied 2026-08-13 from the screenshots).** The report stated that only Articles carried non-critical issues and described `/kora` as clean. The `/kora` screenshot shows **Software Apps carries a non-critical-issues flag too.** Both pages still returned **zero errors** — non-critical issues are optional recommended properties, not errors — so the substance of the verification is unaffected. Recorded here because the screenshots are the primary evidence and the prose summary was incomplete.

**Both agree with this scan.** Google independently detected exactly the types found here — including `SoftwareApplication` on `/kora`, which this scan records at 31 instances across 20 pages. That cross-check is what validates the counting method, and it is the property the February source line had and the current one lost.

---

## Published source line

> Source: schema.org coverage scan of soniteq.co, 2026-08-13 — 181 pages scanned from sitemap.xml, 1,023 JSON-LD blocks parsed with zero errors, 2,987 total schema instances across 28 distinct types. Coverage = distinct pages containing a type ÷ pages scanned. Spot-verified in Google Rich Results Test (2 pages, 0 errors). Raw results archived.

---

## What this settles

**The site was genuinely measured, and it is genuinely well-structured.** Zero parse errors, 100% coverage on seven types, and clean Rich Results Test passes are real results.

**But the previously published figures did not describe the site as it exists today**, and two of the five published types are at zero. That is a staleness problem, not an invention problem — and the honest fix is republishing current numbers, not defending old ones.

**The methodology gap was the real issue.** These numbers are reproducible: the method is stated, the denominator is explicit, and anyone can re-run it. That is what the February rewrite removed when it replaced *"verified via Google Rich Results Test"* with *"Full-site Diagnostic analysis."*

---

## Provenance of the figures this replaces

The superseded figures (153 pages / 667 instances / the five-type table) were introduced by commit **`89ee344`, 2026-02-21, author `Manus AI <manus@blueninjasystems.com>`**, with the message *"update schema coverage stats to full-site 153-page scan."*

That commit **replaced a smaller, better-sourced claim**: 22 pages, scoped to `soniteq.ai/answers`, sourced as *"Organization, Carousel, and FAQPage schema verified via Google Rich Results Test."* The instance-count decomposition (240/128/116/113/70) appeared for the first time in that commit. **No raw export, scan output, or artifact was ever committed** — which is why this file exists.

---

## Reproducing this scan

1. Fetch `https://www.soniteq.co/sitemap.xml` and collect every `<loc>`.
2. Fetch each URL. Record failures; the denominator is pages *successfully scanned*.
3. Extract every `<script type="application/ld+json">` block. Parse each as JSON; record parse failures.
4. Walk each parsed block recursively for `@type`, descending into `@graph`, arrays, and nested objects. An `@type` holding an array counts once per value.
5. Maintain two separate tallies per type: total occurrences (`instances`) and the set of distinct URLs on which it occurred (`pages with type`).
6. `coverage = |pages with type| ÷ pages scanned`. This cannot exceed 100%; if it does, the two tallies have been conflated.
7. Spot-verify at least two pages in Google Rich Results Test and confirm the detected types match.

---

*Scan performed via same-origin fetch from a browser session on 2026-08-13. All 181 URLs returned HTTP 200. Rich Results Test screenshots referenced as independent verification.*
