Cite Unseen

Chris Brock LLC · Implementation audit

AI Discoverability Implementation Audit: chrisbrock.io

An evidence-backed assessment of the conditions this site controls that help AI answer engines understand, trust, cite, and recommend the organization. This report does not guarantee placement, ranking, citation, traffic, or revenue in any search or AI answer product.

58.1%44.75 of 77 resolvable pointsGrade CMaterial discoverability frictionConfidence: moderate
Audited domain
chrisbrock.io
Audit date (UTC)
2026-09-01
Pages sampled
25 of a 25 page limit, depth 2
Rubric version
0.8
Reviewer
Chris Brock (signed 2026-08-30); assisted review by Claude Code

Email this to someone

Executive summary and fit classification

Fit classification: Foundation fit. Retrieval, identity, or trust foundations need work before any measurement or monitoring spend is justified.

chrisbrock.io scored 58.1% (44.75 of 77 resolvable points) adjusted rubric points at moderate confidence. Of 33 checks in rubric version 0.8: 12 substantial, 9 inconclusive, 8 partial, 3 minimal, 1 missing. 33 open item(s) were ranked into an implementation backlog.

The three highest-value actions

  1. #1 CI-02 Claim support. For each material claim, put its provenance next to it. An external source is strongest. Where none exists -- which is the normal case for a private operating figure -- a first-person attestation is still a source: name who is asserting it, the period it covers, the scope it covers, and the basis ("our internal figures", "verifiable on reference check"). Removing a true claim is the last resort, not the first.
  2. #2 CR-06 Body text is machine-readable prose. Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  3. #3 CI-01 Direct answer passages. Give each priority question its own heading and a self-contained two-to-four sentence answer directly beneath it.

What this report is. A measurement of conditions this site controls, each supported by a captured, timestamped observation you can reproduce. What it is not. A prediction of whether any AI answer product will cite this site, and not a promise of ranking, traffic, leads, or revenue.

Overall score, adjusted denominator, and confidence

58.1
44.75 points awarded of 77 adjusted (raw rubric 100)
Grade C
Material discoverability friction
Confidence: moderate

Execute a structured 30-day remediation backlog

Confidence basis. 77 of 100 rubric points were resolvable (77% coverage); 9 check(s) worth 23 points are inconclusive; 0 scored check(s) carry low confidence.

Why the denominator is not 100

The raw rubric is 100 points. 23 point(s) were removed because those checks could not be scored either way.

Not applicable (the check does not apply to this site): none.
Inconclusive (collection or scope prevented a decision, so the check is unresolved rather than failed): CR-01, CR-02, CR-05, CR-06, EN-04, SD-01, SD-03, SD-04, MR-02.

Neither group was scored as zero. A zero is reserved for a check rated Missing, which requires evidence.

Weighted for Professional services

Against the weights for this market the score is 59.5, 1.4 points above the baseline. The baseline above stays the headline number and is what a re-audit compares, so changing market profile can never look like progress.

Dimension scores. The bar repeats the percentage column; no meaning is carried by colour alone.
DimensionRubric weightAdjusted weightAwardedPercentageGradeVisual
CR Crawl and retrieval accessibility
If a retrieval system cannot fetch your pages reliably, nothing else on this list matters. Everything downstream depends on this working.
1542.562.5%C
EN Entity clarity
An engine has to decide which organization a page is about before it can recommend that organization. Conflicting names and missing contact facts force it to guess, and it may guess wrong.
1512866.7%C
CI Citation readiness
This is the largest single block of points because it is the mechanism. Answer engines reuse passages that stand on their own; copy that needs the surrounding page to make sense is rarely quoted.
20209.7548.8%F
TA Topical coverage and authority
Coverage decides whether you are a candidate answer at all. A question with no owned page cannot be answered from your site by anything.
15159.2561.7%C
TE Trust and evidence
Assurance is a precondition for being recommended. An engine asked to suggest a provider has little reason to name one whose operator, credentials, and outcomes cannot be checked.
15159.2561.7%C
SD Structured data
Structured data is the one place you state your identity in a form nothing has to infer from prose. It is also the cheapest of these to fix.
1032.2575%B
AC AI and agent controls
Crawler treatment should be a decision you made rather than a default nobody chose. It is worth few points because it is usually already fine, and catastrophic on the rare occasion it is not.
553.2565%C
MR Measurement readiness
Without a baseline fixed before results are known, any later movement can be explained after the fact. This is what makes a re-audit mean something.
530.516.7%F

What to do

24 finding(s) are open, in the order we would take them. The order weighs how much each one matters, how many rubric points it holds, and roughly how much work it is, so stopping halfway still leaves the work that mattered most done. We do not estimate hours. We can see what your site is missing; we cannot see your codebase or your release process. Doing all of it is not a guarantee of placement, ranking, citation, recommendation, traffic, or revenue.

How to read this. The measurements are the tool's; the judgements are a person's; the score is arithmetic over both. No part of this report was written or rated by a language model.

automated means the tool observed it and the observation is reproducible from the evidence record. operator means a named reviewer read that evidence and made a judgement, with the reason recorded beside it. Weigh them differently. You should.

  1. CI-02 Claim support Critical
  2. CI-01 Direct answer passages Major
  3. CI-04 Source attribution Major
  4. MR-01 Baseline question set Major
  5. TA-01 Priority-question coverage Major
  6. CR-04 Canonical and duplicate control Minor
  7. EN-02 Product and service identity Minor
  8. TA-03 Comparative and decision content Minor
  9. TE-03 Customer and outcome evidence Minor
  10. MR-03 Recheck discipline Major
  11. AC-01 Intentional crawler treatment Minor
  12. TA-02 First-hand experience Minor
  13. TE-02 Expertise and credential support Minor
  14. CI-03 Stable passage structure Minor
  15. EN-01 Organization identity consistency Minor
  16. TE-01 Ownership and accountability Minor
  17. CI-05 Content freshness signals Minor
  18. SD-02 Entity relationships Minor
  19. TE-04 Policy and limitation clarity Minor
  20. CR-03 Sitemap quality Minor
  21. TA-04 Internal topic relationships Minor
  22. EN-03 People and authorship identity Minor
  23. AC-02 Machine-readable guidance quality Minor
  24. AC-03 Agent-facing transaction boundaries Minor

One prompt that fixes what this report found

Everything below is self-contained: the findings, the instructions, the evidence ids, and a standing rule against inventing anything to satisfy them. Paste it into the tool working on your site.

You are fixing a website against an AI discoverability audit. If you are running in a terminal or an editor with access to the site's repository, read the files yourself and make the edits directly. Work the findings in the order given.

You are applying an evidence-backed AI discoverability audit to a website.

Target:        https://chrisbrock.io
Audit:         aud_20260901T114635Z_7f382c48
Rubric:        v0.8 (scored by adia/0.1.0)
Score:         44.75 of 77 resolvable rubric points (58.1%), moderate confidence
Fit:           Material discoverability friction

Every item below came from a captured, timestamped observation of the live
site, not from a model's impression of it. The evidence ids in brackets refer
to records in the audit's JSON appendix.

## Rules

1. Work in order. The list is ranked by impact, effort, confidence, and
   dependency; an item that depends on another is listed after it.
2. Keep changes minimal and local. Do not redesign anything the audit did not
   flag, and preserve the site's existing voice, structure, and build setup.
3. NEVER INVENT A FACT. Several fixes below could be "completed" by making
   something up. Where an item says so, leave a clearly marked TODO for the
   site owner rather than filling in a plausible value. A fabricated
   testimonial, credential, statistic, or citation is worse than the gap it
   replaces, and this audit exists to remove unsupported claims, not add them.
4. Do not add any claim about ranking, citation, traffic, or revenue.
5. If a fix is ambiguous, say so and stop rather than guessing.

Every count below describes the **25 page(s) this run read**, which stopped at a configured bound (max_pages=25) with URLs still queued. A later run that reads a different number of pages will report different counts for the same site, so compare these against a run of the same size, not against a bigger one, where finding more of a defect is what a bigger sample does.


## Fixes, in order

### 1. [CRITICAL] CI-02 Claim support

**Observed.** 41 distinct material claim candidate(s) were detected across 17 page(s) in 72 occurrence(s): compliance (16), superlative (9), money (7), percentage (7), count (2). Of those, 1 sit on a page carrying an external link that could serve as a source, 0 carry a first-person attestation in their own context (a stated basis plus at least two of asserting party, period and scope), and 40 carry neither. Links to the organization's own social or code profiles are excluded from the source count: they identify the publisher, not the origin of a number.

**Why it matters.** An unsupported number is a liability in an AI answer: it can be repeated without its caveats, and it cannot be defended when a buyer asks where it came from. What closes that gap is stated provenance, which a hyperlink is only one form of.

**Do this.** For each material claim, put its provenance next to it. An external source is strongest. Where none exists -- which is the normal case for a private operating figure -- a first-person attestation is still a source: name who is asserting it, the period it covers, the scope it covers, and the basis ("our internal figures", "verifiable on reference check"). Removing a true claim is the last resort, not the first.

*Evidence: ev_02acb40138951a1a, ev_37df1c06d90f71ac, ev_5cfea00370e86080, ev_26dae81084395fbd. 3.75 rubric points at stake.*

> **Do not fabricate.** Do not invent a source, statistic, or methodology. A claim may be supported by a first-person attestation instead of an external source, but the attestation is itself a factual assertion: writing "our internal figures, verifiable on reference check" next to a number you were not told the provenance of is fabrication, not formatting. Leave a marked TODO naming the four things the owner must supply -- who is asserting it, the period, the scope, and the basis -- and remove the claim only if the owner says it cannot be stood behind.

> Depends on: CI-04


### 2. [UNRESOLVED] CR-06 Body text is machine-readable prose

**Observed.** No template syntax was found in the visible text of 25 sampled page(s). Rated inconclusive rather than complete: that would say that no page on the site prints template syntax as body text, and this run collection stopped at a configured bound (max_pages=25) with URLs still queued, so it can only speak for the 25 page(s) it read. This is a limit of the collection, not a finding about the site.

**Why it matters.** A passage made of markup cannot be quoted, summarised, or cited. The page looks populated to the CMS and to a word count, and carries nothing an engine can use.

**Do this.** Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1 rubric points at stake.*


### 3. [MAJOR] CI-01 Direct answer passages

**Observed.** 1 heading(s) across the sample are phrased as questions. 3 of 25 pages open with a definitional sentence in the first 400 characters. Of 8 operator-supplied priority questions, 6 have a page matching 60% or more of their key terms. Weakly covered questions: 'What does a fractional CIO actually do for a small company?' (best match 0% at https://chrisbrock.io/); 'How much does a fractional or interim CIO cost?' (best match 33% at https://chrisbrock.io/).

**Why it matters.** An answer engine reuses passages that stand on their own. Copy that requires the surrounding page to make sense is rarely quotable.

**Do this.** Give each priority question its own heading and a self-contained two-to-four sentence answer directly beneath it.

*Evidence: ev_5cfea00370e86080, ev_37df1c06d90f71ac, ev_26dae81084395fbd, ev_181923593d69d1ad. 2.5 rubric points at stake.*

> Depends on: CI-03


### 4. [MAJOR] CI-04 Source attribution

**Observed.** 2 of 25 sampled pages link to an external destination that could serve as a source (8.0%). 53 external link(s) were found in total, but own social and code profiles are excluded from the source count. 0 link(s) point at a standards body, government, academic, or research host. 9 page(s) exceed 600 words while citing no external source.

**Why it matters.** Attribution is how a claim survives being repeated. A page that cites its sources gives an engine a reason to trust the passage it is about to reuse.

**Do this.** Cite the standard, study, or filing next to the claim it supports, with the source name and date visible in the text rather than only in a link.

*Evidence: ev_02acb40138951a1a, ev_37df1c06d90f71ac, ev_26dae81084395fbd, ev_181923593d69d1ad. 2.25 rubric points at stake.*

> **Do not fabricate.** Do not invent citations. Link only sources you can verify exist and actually support the nearby claim.


### 5. [MAJOR] MR-01 Baseline question set

**Observed.** 8 priority question(s) were recorded at intake.

**Why it matters.** Without a question set fixed before results are known, any later movement can be explained after the fact.

**Do this.** Agree and version a question set covering buying questions, brand variations, comparison questions, and geography, dated before the first measurement.

*Evidence: ev_1a94ac29449f2fa0. 1.5 rubric points at stake.*


### 6. [MAJOR] TA-01 Priority-question coverage

**Observed.** Of 8 priority questions, 6 have at least one page covering half or more of their key terms, and 6 have a substantive page of 400 words or more. Questions with no matching page: 'What does a fractional CIO actually do for a small company?'; 'How much does a fractional or interim CIO cost?'. 4 question(s) have three or more substantive pages competing to answer them.

**Why it matters.** Coverage decides whether the site is a candidate answer at all. A question with no owned page cannot be answered from this site by any engine.

**Do this.** Write one substantive owning page for each uncovered priority question, and consolidate pages that compete for the same question.

*Evidence: ev_1a94ac29449f2fa0, ev_2414ab046b888d58, ev_26dae81084395fbd, ev_181923593d69d1ad. 2 rubric points at stake.*

> Depends on: CI-01


### 7. [MINOR] CR-04 Canonical and duplicate control

**Observed.** 25 of 25 sampled indexable pages declare a canonical URL. Host and protocol variants: http://chrisbrock.io/ -> HTTP 200 at http://chrisbrock.io/; https://www.chrisbrock.io/ -> HTTP 200 at https://www.chrisbrock.io/. 2 variant origin(s) served a 2xx response without redirecting to the canonical origin, so the same content is reachable at more than one address: http://chrisbrock.io/, https://www.chrisbrock.io/.

**Why it matters.** When one page answers at several addresses, retrieval systems must guess which address to hold and cite. Consolidating on one origin removes that guess.

**Do this.** Redirect every non-canonical host and protocol variant to the canonical origin with a 301, and declare a self-referencing canonical on every page.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1 rubric points at stake.*

> Depends on: CR-01


### 8. [MINOR] EN-02 Product and service identity

**Observed.** Of 5 operator-supplied offerings, 2 are named in the title or a heading of at least one sampled page, and 0 have exactly one such owning page. 1 offering(s) have a page whose URL names them but whose title and headings do not: 'Fractional and interim CIO leadership' at https://chrisbrock.io/situations/fractional-cio. Offerings with no matching sampled page: 'AI adoption with measured return on investment'; 'Ecommerce platform consolidation'. No Product, Service, or SoftwareApplication entity is declared in structured data on any sampled page.

**Why it matters.** An engine can only recommend an offering it can name, locate at a stable URL, and define. Offerings that live only in prose are hard to recommend specifically.

**Do this.** Give each offering one page with a stable URL, a one-sentence definition, a named audience, and structured data that ties it to the organization.

*Evidence: ev_5cfea00370e86080, ev_2414ab046b888d58, ev_26dae81084395fbd, ev_181923593d69d1ad. 2 rubric points at stake.*

> Depends on: EN-01


### 9. [UNRESOLVED] CR-02 Robots and crawler directives

**Observed.** robots.txt was retrieved and parsed: 1 group(s) covering user-agents *, 1 declared sitemap(s). The group matching this crawler allows 1 and disallows 0 path pattern(s). No sampled page declared a noindex directive in markup or headers. Rated inconclusive rather than complete: that would say that no page on the site is blocked or carries a conflicting noindex, and this run collection stopped at a configured bound (max_pages=25) with URLs still queued, so it can only speak for the 25 page(s) it read. This is a limit of the collection, not a finding about the site.

**Why it matters.** Crawl directives decide what any retrieval system is permitted to hold. A directive that blocks content the owner wants cited removes that content from every engine at once.

**Do this.** Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

*Evidence: ev_631ef8e431bf6b57. 1.5 rubric points at stake.*


### 10. [MINOR] TA-03 Comparative and decision content

**Observed.** 11 of 25 sampled pages contain comparison language, 6 state a limitation or fit boundary, and 0 use a table. No competitors were supplied at intake.

**Why it matters.** Buyers ask comparison questions, and so do the people prompting answer engines. A site that never states who it is not for cannot be matched to who it is for.

**Do this.** Publish one honest comparison or decision page with a criteria table, and state explicitly where the offering is not the right fit.

*Evidence: ev_2414ab046b888d58, ev_37df1c06d90f71ac, ev_26dae81084395fbd, ev_181923593d69d1ad. 2 rubric points at stake.*


### 11. [MINOR] TE-03 Customer and outcome evidence

**Observed.** 10 of 25 sampled pages reference customers, clients, or engagements in their own text rather than in a block repeated across the sample; 10 state an outcome-shaped result; 8 long quotation(s) that could be testimonials were found; and 3 page(s) mention a baseline or measurement period.

**Why it matters.** Outcome claims without a baseline and a scope cannot be checked, and an engine that repeats them exposes the business to a claim it cannot defend.

**Do this.** Publish at least one case example with the situation, the intervention, the measurement window, the baseline, and the result, with the customer's permission recorded.

*Evidence: ev_2414ab046b888d58, ev_37df1c06d90f71ac, ev_26dae81084395fbd, ev_181923593d69d1ad. 2 rubric points at stake.*

> **Do not fabricate.** Do not invent customers, testimonials, names, logos, or outcomes. Leave a marked TODO for the site owner. A fabricated testimonial is fraud, not a fix.

> Depends on: TE-01


### 12. [MAJOR] MR-03 Recheck discipline

**Observed.** No recheck schedule for the rubric, crawl sample, question set, competitors, and evidence was recorded at intake.

**Why it matters.** Changing method between reports without disclosure makes movement uninterpretable.

**Do this.** Fix a recheck cadence and record the rubric version, crawl sample, and question set used for each run so score movement can be attributed to the site rather than the method.

*Evidence: ev_1a94ac29449f2fa0. 1 rubric points at stake.*

> Depends on: MR-01


### 13. [MINOR] AC-01 Intentional crawler treatment

**Observed.** No named AI crawler has an explicit robots.txt group; all are covered by the wildcard group. The wildcard group allows 1 and disallows 0 path pattern(s). Stated owner intent at intake: 'Chris wants the site retrievable and citable by mainstream search and AI answer engines. No crawler exclusion is intended for public content.'.

**Why it matters.** Crawler treatment should be a decision, not an accident. Defaults that nobody chose are the common case, and they are the easiest thing to get wrong in either direction.

**Do this.** Decide explicitly which AI crawlers may retrieve the site, record the decision, and express it in robots.txt so a future deploy cannot silently change it.

*Evidence: ev_fac7362013e17212, ev_631ef8e431bf6b57. 0.5 rubric points at stake.*


### 14. [MINOR] TA-02 First-hand experience

**Observed.** 10 of 25 sampled pages carry 600 or more words. First-hand markers were detected on 4 page(s): first person operator on 1, measurement on 3, artifact on 0. 1 link(s) to public code or dataset repositories were found.

**Why it matters.** First-hand detail is the part of a page a competitor cannot copy and a summariser cannot generate. It is the strongest reason for an engine to prefer this source.

**Do this.** Publish the method, the numbers, and the artifact behind at least one claim per topic: a repository, a dataset, a template, or a documented before-and-after measurement.

*Evidence: ev_5cfea00370e86080, ev_37df1c06d90f71ac, ev_26dae81084395fbd, ev_181923593d69d1ad. 1 rubric points at stake.*

> **Do not fabricate.** Do not invent research, case evidence, or first-hand experience. Only restructure experience the site already describes.

> Depends on: TA-01


### 15. [MINOR] TE-02 Expertise and credential support

**Observed.** 16 distinct credential-shaped claim(s) were detected across 7 page(s) in 37 occurrence(s); 2 appear within 120 characters of a date. No unexplained logo-wall pattern was detected.

**Why it matters.** A credential without a scope, a date, and a responsible entity cannot be verified, and an unverifiable claim is a risk rather than an asset when repeated by a machine.

**Do this.** State the issuing body, the scope, the date, and the entity the credential belongs to next to every credential claim.

*Evidence: ev_37df1c06d90f71ac, ev_02acb40138951a1a, ev_26dae81084395fbd, ev_181923593d69d1ad. 2 rubric points at stake.*

> **Do not fabricate.** Do not invent or upgrade a credential, certification, audit, or partnership. These are verifiable facts about a real organization and getting one wrong is a legal problem.


### 16. [UNRESOLVED] CR-01 Stable successful retrieval

**Observed.** 25 of 25 sampled URLs returned a successful response (100.0%). Median response time was 1106 ms. Rated inconclusive rather than complete: that would say that no page on the site returns an error or comes back empty, and this run collection stopped at a configured bound (max_pages=25) with URLs still queued, so it can only speak for the 25 page(s) it read. This is a limit of the collection, not a finding about the site.

**Why it matters.** Answer engines can only use content they can retrieve reliably. Intermittent errors and empty successful responses both reduce the amount of a site that any retrieval system will hold.

**Do this.** Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1.5 rubric points at stake.*


### 17. [UNRESOLVED] SD-01 Valid core entities

**Observed.** 25 of 25 sampled pages carry JSON-LD (100.0%), producing 67 entit(ies). Declared types: Person (25), WebSite (25), Article (6), Review (6), BreadcrumbList (5). Core identity types present: Person, WebSite. Rated inconclusive rather than complete: that would say that every page on the site carries valid structured data, and this run collection stopped at a configured bound (max_pages=25) with URLs still queued, so it can only speak for the 25 page(s) it read. This is a limit of the collection, not a finding about the site.

**Why it matters.** Structured data is the one place a site states its identity in a form a machine does not have to infer from prose.

**Do this.** Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1.5 rubric points at stake.*


### 18. [MINOR] CI-03 Stable passage structure

**Observed.** Across 25 sampled pages the median page carries 2 heading(s). 25 declare exactly one H1, 5 give at least one heading an id that can be linked directly, and 8 use a table or list. 2 page(s) exceed 400 words with fewer than three headings: https://chrisbrock.io/about, https://chrisbrock.io/blog/shadow-it-and-your-data. 3 page(s) skip a heading level: https://chrisbrock.io/blog: h1 followed by h3; https://chrisbrock.io/reading: h1 followed by h3; https://chrisbrock.io/blog/fostering-innovation-within-it-teams: h1 followed by h3.

**Why it matters.** Headings and anchors are the unit an engine extracts. A page with no internal structure can only be cited whole, which usually means it is not cited at all.

**Do this.** Give every page one H1, a descriptive H2 for each distinct answer, and a stable id on each H2 so a passage can be linked directly.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1 rubric points at stake.*


### 19. [MINOR] EN-01 Organization identity consistency

**Observed.** Structured-data identity names: 'Chris Brock' on 25 page(s). Declared og:site_name values: 'Chris Brock'. 2 contact value(s) appear in structured data: email=mailto:cb@chrisbrock.io, address(structured). 25 distinct meta description(s) were served across 25 pages.

**Why it matters.** An engine has to decide which entity a page is about before it can recommend that entity. Conflicting names and missing contact facts force it to guess.

**Do this.** State one organization or person name, one description, and one contact path consistently in visible content and in structured data on every page.

*Evidence: ev_02acb40138951a1a, ev_37df1c06d90f71ac, ev_26dae81084395fbd, ev_181923593d69d1ad. 1 rubric points at stake.*

> **Do not fabricate.** Do not invent a legal entity name, address, or contact detail.


### 20. [UNRESOLVED] SD-03 Page-specific markup

**Observed.** 6 of 6 sampled article-style pages declare an Article type in structured data (100.0%). 5 of 25 sampled pages declare BreadcrumbList markup. Rated inconclusive rather than complete: that would say that every article on the site carries article markup, and this run collection stopped at a configured bound (max_pages=25) with URLs still queued, so it can only speak for the 25 page(s) it read. This is a limit of the collection, not a finding about the site.

**Why it matters.** Page-type markup tells a retrieval system what a page is, which is what lets an article be treated as dated, authored evidence rather than undated site copy.

**Do this.** Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1 rubric points at stake.*

> Depends on: SD-01


### 21. [UNRESOLVED] SD-04 Metadata consistency

**Observed.** Across 25 sampled pages: 25 declare a title, 25 a meta description, 25 an html lang attribute, and 25 Open Graph titles. No metadata inconsistency was found in the sample. Rated inconclusive rather than complete: that would say that no page on the site has inconsistent metadata, and this run collection stopped at a configured bound (max_pages=25) with URLs still queued, so it can only speak for the 25 page(s) it read. This is a limit of the collection, not a finding about the site.

**Why it matters.** When a page describes itself differently in its title, its social metadata, and its structured data, an engine has to choose one description and may choose the wrong one.

**Do this.** Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1 rubric points at stake.*

> Depends on: SD-01


### 22. [MINOR] TE-01 Ownership and accountability

**Observed.** About-style page(s) found: 1. Contact path(s) found: 1. 1 distinct mailto destination(s) and 1 form(s) appear in the sample. 25 organization or person entit(ies) are declared in structured data.

**Why it matters.** Accountability is a precondition for being recommended. An engine asked to suggest a provider has little reason to name one whose operator and contact path are unclear.

**Do this.** Name the operating entity, the responsible people, and a working contact path on a linked page, and mirror those facts in structured data.

*Evidence: ev_37df1c06d90f71ac, ev_d76db615ec2be435, ev_05b6bc243d937501, ev_26dae81084395fbd. 1 rubric points at stake.*


### 23. [MINOR] CI-05 Content freshness signals

**Observed.** 15 of 25 sampled pages expose a date in visible text, structured data, or a time element (60.0%). 6 of 6 article-style pages carry a date. No contradiction was found between visible and structured dates in the sample.

**Why it matters.** A dated page can be judged current. An undated page has to be treated as possibly stale, which is a reason not to cite it.

**Do this.** Show a visible published and updated date on every article, and emit the same values as datePublished and dateModified in structured data.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 0.75 rubric points at stake.*


### 24. [MINOR] SD-02 Entity relationships

**Observed.** 50 of 67 entit(ies) declare an @id (74.6%), producing 2 distinct identifier(s). 43 relationship reference(s) were found across 3 relationship type(s). 25 entit(ies) declare sameAs links to external profiles.

**Why it matters.** Stable identifiers let an engine merge the same organization or person across pages instead of treating each mention as a new entity.

**Do this.** Give every entity a stable @id, reference the same identifiers across pages, and add sameAs links to owned external profiles.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 0.75 rubric points at stake.*

> Depends on: SD-01


### 25. [MINOR] TE-04 Policy and limitation clarity

**Observed.** Privacy policy reference(s): 2. Terms reference(s): 0. 1 form(s) appear in the sample. 25 page(s) show evidence of third-party analytics being loaded. No terms or service-boundary page was found in the sample.

**Why it matters.** Policies set the boundaries a buyer and an agent both need before acting. Their absence is a friction point at exactly the moment a recommendation would convert.

**Do this.** Publish a dated privacy policy covering analytics and form data, and a terms or engagement-scope page that matches what is actually sold.

*Evidence: ev_05b6bc243d937501, ev_d76db615ec2be435, ev_26dae81084395fbd, ev_181923593d69d1ad. 0.75 rubric points at stake.*


### 26. [MINOR] CR-03 Sitemap quality

**Observed.** 3 sitemap document(s) were retrieved; 3 parsed cleanly and 0 did not. 68 unique URL(s) are listed. 0 of 68 entries carry a lastmod value (0.0%). 25 listed URL(s) were sampled and returned a successful response.

**Why it matters.** A sitemap is the cheapest way to tell every retrieval system which URLs are canonical and when they last changed.

**Do this.** Correct the entries identified in the evidence and ensure lastmod reflects real content changes.

*Evidence: ev_631ef8e431bf6b57, ev_7319da06a1333440, ev_01466bf10e8fce8d, ev_123930a05a4a98e9. 0.5 rubric points at stake.*

> Depends on: CR-02


### 27. [MINOR] TA-04 Internal topic relationships

**Observed.** Across 25 sampled pages the median page links to 8 other sampled page(s). 0 sampled page(s) received no internal link from any other sampled page, and 12 received exactly one.

**Why it matters.** Internal links are how evidence pages get discovered and how a crawler learns which pages a site treats as important. An orphaned page carries its authority nowhere.

**Do this.** Link every evidence and educational page from the commercial page it supports, and from a topic index.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 0.75 rubric points at stake.*

> Depends on: TA-01


### 28. [MINOR] EN-03 People and authorship identity

**Observed.** 25 Person entit(ies) and 12 structured author reference(s) were found. Meta author values: 'Chris Brock'. 6 of 6 article-style pages carry an author attribution. 25 Person entit(ies) link to external profiles via sameAs.

**Why it matters.** Expertise content that no identified person stands behind is difficult to weigh, and difficult to defend when a buyer asks who wrote it.

**Do this.** Attribute every substantive page to a named person with a linked biography, role, and credentials, and connect that person to the organization in structured data.

*Evidence: ev_37df1c06d90f71ac, ev_02acb40138951a1a, ev_26dae81084395fbd, ev_181923593d69d1ad. 1 rubric points at stake.*

> **Do not fabricate.** Do not invent an author, biography, role, or credential.

> Depends on: EN-01


### 29. [UNRESOLVED] EN-04 External identity reconciliation

**Observed.** The site links out to 4 distinct external host(s); 2 sameAs URL(s) are declared in structured data. No owned profiles were declared at intake, so nothing could be reconciled.

**Why it matters.** Owned profiles that the site never links, and profiles carrying an old brand, split one identity into several that an engine must reconcile on its own.

**Do this.** Link every owned profile from the site and declare it in sameAs, and retire or update profiles carrying a former brand.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1.5 rubric points at stake.*

> **Do not fabricate.** Do not invent external profiles or links to them.

> Depends on: EN-01


### 30. [UNRESOLVED] CR-05 Rendered content availability

**Observed.** Raw HTML (no JavaScript execution) already carries a median of 396 words and a median of 3 script element(s) per sampled page. 24 of 25 pages carry 150 or more words before rendering, and 25 expose an H1 in raw HTML. 0 page(s) include noscript content.

**Why it matters.** Content that exists only after client-side execution is unavailable to any retrieval path that does not render, and unreliable for those that do.

**Do this.** Serve primary claims, headings, navigation, and supporting evidence in the initial HTML response.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1.5 rubric points at stake.*

> Depends on: CR-01


### 31. [UNRESOLVED] MR-02 Referral and conversion attribution

**Observed.** Public markup and response headers indicate 2 analytics or measurement provider(s): google-analytics.com, googletagmanager.com. Whether referrals from AI answer surfaces can be isolated and tied to qualified outcomes cannot be determined from public pages.

**Why it matters.** Reporting mentions or impressions without connecting them to qualified behaviour cannot justify continued spend.

**Do this.** Configure a referral segment for AI answer surfaces and connect it to a defined qualified-outcome event, or record the implementation backlog to do so.

*Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0. 1 rubric points at stake.*

> Depends on: MR-01


### 32. [MINOR] AC-02 Machine-readable guidance quality

**Observed.** 2 machine-readable guidance file(s) are served: /llms.txt (1925 bytes, 11 link(s)), /.well-known/security.txt (187 bytes, 2 link(s)). 1 link(s) inside the link-index files point off the audited domain. /.well-known/security.txt is not a link index, so outbound links in it are not counted: prose quotes URLs, and a site publishing work it did for somebody else has to name that site. These conventions are voluntary. Serving them is not a ranking or citation guarantee, and no engine is known to require them.

**Why it matters.** A machine-readable index is cheap to publish and cheap to get wrong: a stale one misleads, and an overstated one invites claims the site cannot support.

**Do this.** Keep the guidance file generated from the same source as the sitemap so it cannot go stale.

*Evidence: ev_cd0267b89a631aa6, ev_de23964c65dfad3f, ev_5a2b08d3801bceba, ev_bbb2e4646545eeb3. 1 rubric points at stake.*


### 33. [MINOR] AC-03 Agent-facing transaction boundaries

**Observed.** 1 page(s) expose a form and 3 mention a purchase surface. The collector never submits a form or performs any state-changing request, so interaction boundaries were not exercised.

**Why it matters.** An agent acting on a customer's behalf needs to know what commits the customer and what does not. Ambiguity here creates unintended commitments.

**Do this.** Document what each form or endpoint commits the visitor to, require authentication for anything that creates an obligation, and state the approval step in public documentation.

*Evidence: ev_d76db615ec2be435, ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666. 0.25 rubric points at stake.*


## Pages that do not exist yet

Each question below had no substantive owning page in the sample. Draft these from the site owner's own knowledge. Do not invent facts, figures, or experience to fill them.

- **What does a fractional CIO actually do for a small company?** No sampled page covers half or more of this question's key terms. Create one owning page. Open with a two-to-four sentence answer under an H2 that repeats the question, then support it with the method, the constraint, and one worked example.
- **How much does a fractional or interim CIO cost?** No sampled page covers half or more of this question's key terms. Create one owning page. Open with a two-to-four sentence answer under an H2 that repeats the question, then support it with the method, the constraint, and one worked example.

## What this audit could not determine

- This audit sampled 25 page(s) against a configured limit of 25 at a maximum depth of 2. Findings describe the sample, not every page on the site.
- Scored against rubric version 0.8 using tool version adia/0.1.0. Score movement between runs can come from a rubric change as easily as a site change.
- Collection used plain HTTP retrieval with no JavaScript execution. Content that appears only after client-side rendering was not observed.
- Off-domain properties were not retrieved. The run was restricted to the authorized registrable domain.
- No form was submitted, no authenticated content was accessed, and no state-changing request was made.
- 9 check(s) are inconclusive and contribute no points in either direction: CR-01, CR-02, CR-05, CR-06, EN-04, SD-01, SD-03, SD-04, MR-02. Their 23 points were removed from the denominator rather than scored as zeroes.
- Collection stopped at a configured bound (max_pages=25). A larger sample may change coverage-dependent findings.
- 6 check(s) reached their top rating only because pages were left unread, and are recorded as inconclusive rather than as passes: CR-01, CR-02, CR-06, SD-01, SD-03, SD-04. Raising the page limit and re-running is what settles them; nothing about the site needs to change first.
- This audit measures conditions a site can control against rubric version 0.8. It does not guarantee placement, ranking, citation, recommendation, traffic, leads, or revenue in any search engine or AI answer product, and a low score does not prove a site is absent from AI-generated answers.
- Unresolved checks: CR-01, CR-02, CR-05, CR-06, EN-04, SD-01, SD-03, SD-04, MR-02. These contributed no points in either direction.

Do not "fix" any of the above. They were not measured, so a change there
cannot be verified by a re-audit.

## When you are done

Tell the site owner the work is done. If their audit came with rechecks, they
reply to the delivery email and ask for one: the site is read again against the
same rubric version, and the reply says what moved and what did not. That is
the proof the work landed, and it is the only thing that settles it. Do not
report a score yourself, because you cannot run the rubric.

1. CI-02 Claim support

MinimalCritical3.75 point(s) at stake

What we found. 41 distinct material claim candidate(s) were detected across 17 page(s) in 72 occurrence(s): compliance (16), superlative (9), money (7), percentage (7), count (2). Of those, 1 sit on a page carrying an external link that could serve as a source, 0 carry a first-person attestation in their own context (a stated basis plus at least two of asserting party, period and scope), and 40 carry neither. Links to the organization's own social or code profiles are excluded from the source count: they identify the publisher, not the origin of a number.

Do CI-04 first.

Do this.

  1. List every number, superlative and outcome claim on the site.
  2. For each, add the support next to the claim: the date, the source, the sample, or the method.
  3. Delete or soften anything you cannot support. An unsupported claim is a liability, not a weak asset.
  4. Where the support is a document, link it.

How to tell it worked. Pick three claims at random and try to check them using only the page they sit on.

Why this rating, and who signed it

Read the detected claims in context on the homepage, /about, and the situation pages. The claims are specific and commercially important: zero major nonconformities across six annual audit cycles, roughly 68 percent of company revenue tied to that capability, productivity gains equivalent to roughly 30 FTE, one integration enabling roughly $2M in annual revenue, roughly $5M in managed technology spend, roughly 15 percent annual vendor savings, and ticket resolution moving from eight business days to under two business hours. Not one of them states a measurement period, a baseline, a scope, or a method on the page where it appears. These are precisely the sentences an answer engine would lift and repeat without their caveats. This is the single highest-value gap in the audit.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 29 record(s) (records the reviewer cited are listed first)ev_02acb40138951a1a
ev_37df1c06d90f71ac
ev_5cfea00370e86080
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
and 21 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Pattern matching finds claim-shaped text. Whether a claim is material and whether nearby content supports it are reviewer judgements.
  • An attestation is detected by its wording, not verified. The check reads that provenance was stated; it cannot read whether the statement is true. That is the point of ranking it below an external source.

3. CI-01 Direct answer passages

PartialMajor2.5 point(s) at stake

What we found. 1 heading(s) across the sample are phrased as questions. 3 of 25 pages open with a definitional sentence in the first 400 characters. Of 8 operator-supplied priority questions, 6 have a page matching 60% or more of their key terms. Weakly covered questions: 'What does a fractional CIO actually do for a small company?' (best match 0% at https://chrisbrock.io/); 'How much does a fractional or interim CIO cost?' (best match 33% at https://chrisbrock.io/).

Do CI-03 first.

Do this.

  1. Write down the questions a buyer actually asks, in their words.
  2. Give each one its own heading, phrased as the question.
  3. Answer it directly beneath in two to four sentences that make sense with no surrounding page.
  4. Put the answer first and the elaboration after it, not the other way round.

How to tell it worked. Read one answer out of context. If it needs the paragraph above it, it is not a passage yet.

Why this rating, and who signed it

Read the top matching page for each priority question. The writing is strong but narrative: answers are embedded in flowing paragraphs rather than in self-contained passages under a heading that names the question. No heading anywhere in the sample is phrased as a question, and two priority questions ('what does a fractional CIO actually do' and 'how much does it cost') have no page that answers them at all.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_5cfea00370e86080
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Term overlap measures topical proximity, not whether a passage actually answers the question. A reviewer must read the candidate passages.

4. CI-04 Source attribution

MinimalMajor2.25 point(s) at stake

What we found. 2 of 25 sampled pages link to an external destination that could serve as a source (8.0%). 53 external link(s) were found in total, but own social and code profiles are excluded from the source count. 0 link(s) point at a standards body, government, academic, or research host. 9 page(s) exceed 600 words while citing no external source.

Do this.

  1. Attribute every external fact to its source in the sentence that uses it.
  2. Link the source. A named source with no link is half an attribution.
  3. Say when the source is from, so a reader can tell how old the fact is.
  4. Distinguish your own findings from other people's, explicitly.

How to tell it worked. Take one external fact and try to reach its source in one click.

Why this rating, and who signed it

Only two of 25 sampled pages link to any external destination that could function as a source, and none points at a standards body, regulator, or research host. Nine pages exceed 600 words while citing nothing external. Pages that discuss ISO 27001, SOC 2, HIPAA, and AI governance frameworks by name never link to the standard or framework they discuss.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_02acb40138951a1a
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Link counting cannot tell whether a cited source actually supports the nearby claim, nor whether the link still resolves. Off-domain links were not followed, by design.

5. MR-01 Baseline question set

MinimalMajor1.5 point(s) at stake

What we found. 8 priority question(s) were recorded at intake.

Do this.

  1. Write down the questions you want to be the answer to, before you change anything.
  2. Record today's answer from each engine you care about, with the date and the exact prompt.
  3. Keep the wording fixed. A question you reword is a baseline you have lost.
  4. Store the results where you can compare against them later.

How to tell it worked. Re-run one question a week later and confirm you can tell whether anything moved.

Why this rating, and who signed it

Eight priority questions were recorded in the intake file, but they were written by the auditor from the site's own content rather than agreed with the owner, and they carry no target-engine list, no rationale, and no dated baseline. A question set authored after reading the site is not a baseline; it is a description of the site.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 1 record(s) (records the reviewer cited are listed first)ev_1a94ac29449f2fa0
Where this is documented
What this check could not see
  • This is a property of the engagement, not of the public website. It cannot be observed by crawling and stays inconclusive until the operator records the agreed baseline.

6. TA-01 Priority-question coverage

PartialMajor2 point(s) at stake

What we found. Of 8 priority questions, 6 have at least one page covering half or more of their key terms, and 6 have a substantive page of 400 words or more. Questions with no matching page: 'What does a fractional CIO actually do for a small company?'; 'How much does a fractional or interim CIO cost?'. 4 question(s) have three or more substantive pages competing to answer them.

Do CI-01 first.

Do this.

  1. Take the priority questions recorded at intake and check each against the site.
  2. For any question with no page that answers it, write one.
  3. Where a page half-answers it, add the missing part rather than starting again.
  4. Link related questions to each other so a reader following one lands on the next.

How to tell it worked. Search your site for each priority question and see whether one page answers it.

Why this rating, and who signed it

Six of eight priority questions have a substantive page. The two with no owning page are the two a buyer asks first: what a fractional CIO does, and what it costs. Four questions are matched by three or more competing pages, which reflects the site's structure: situation pages, book notes, and blog posts all touch the same subjects without one being the designated answer.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_1a94ac29449f2fa0
ev_2414ab046b888d58
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Term overlap identifies topical proximity, not answer quality. The two uncovered questions were confirmed by reading the closest pages; the competition count was not individually verified for every question.

7. CR-04 Canonical and duplicate control

PartialMinor1 point(s) at stake

What we found. 25 of 25 sampled indexable pages declare a canonical URL. Host and protocol variants: http://chrisbrock.io/ -> HTTP 200 at http://chrisbrock.io/; https://www.chrisbrock.io/ -> HTTP 200 at https://www.chrisbrock.io/. 2 variant origin(s) served a 2xx response without redirecting to the canonical origin, so the same content is reachable at more than one address: http://chrisbrock.io/, https://www.chrisbrock.io/.

Do CR-01 first.

Do this.

  1. Give every page a self-referencing absolute rel=canonical.
  2. Pick one form per page and make it the only one: trailing slash or not, www or not, http or https.
  3. Point parameterised, filtered and paginated variants at the canonical page rather than at each other.
  4. Make the canonical agree with the sitemap and with any og:url on the same page.
  5. Point internal links at the address that answers directly, and where a redirect has to stay, make it permanent (301) once the destination is settled: a temporary redirect is not read as a statement about which address is canonical.

How to tell it worked. Load each duplicate variant and confirm the canonical it declares is the same single URL, and request each internal link that redirects and confirm the status is 301 rather than 302, 303 or 307.

Evidence: 27 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 19 more record(s) in the JSON appendix
Where this is documented

8. EN-02 Product and service identity

PartialMinor2 point(s) at stake

What we found. Of 5 operator-supplied offerings, 2 are named in the title or a heading of at least one sampled page, and 0 have exactly one such owning page. 1 offering(s) have a page whose URL names them but whose title and headings do not: 'Fractional and interim CIO leadership' at https://chrisbrock.io/situations/fractional-cio. Offerings with no matching sampled page: 'AI adoption with measured return on investment'; 'Ecommerce platform consolidation'. No Product, Service, or SoftwareApplication entity is declared in structured data on any sampled page.

Do EN-01 first.

Do this.

  1. List what you actually sell, in the words a buyer would use rather than an internal name.
  2. Give each one a page that says what it is, who it is for, what it costs or how pricing works, and what it excludes.
  3. Add Service or Product structured data on those pages, with the same names the page uses.
  4. Remove or rename anything the site still advertises that you no longer sell.

How to tell it worked. Ask an answer engine what your company sells and compare the answer with your own list.

Why this rating, and who signed it

Read /situations and its five child pages. The site organizes itself around customer situations rather than named offerings, which reads well but leaves no stable name for anything purchasable. /situations/fractional-cio is titled 'Technology Strategy for Growth' and the phrase 'fractional CIO' appears nowhere in its title, headings, or body, so the one URL that names the offering is the one place the page does not. No Product, Service, or ProfessionalService entity is declared in structured data on any sampled page.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 27 record(s) (records the reviewer cited are listed first)ev_5cfea00370e86080
ev_2414ab046b888d58
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 19 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • The offering labels in the intake file are the auditor's paraphrase of the site, not the owner's own wording. A mismatch between a paraphrased label and the site's language is not by itself a site defect; the finding rests on the fractional-cio page and the absent structured data, both read directly.

10. TA-03 Comparative and decision content

PartialMinor2 point(s) at stake

What we found. 11 of 25 sampled pages contain comparison language, 6 state a limitation or fit boundary, and 0 use a table. No competitors were supplied at intake.

Do this.

  1. Write the comparison a buyer is already making, including the alternatives you lose to.
  2. State the criteria before the verdict, and use the same criteria for every option.
  3. Say plainly who each option suits and who it does not.
  4. Keep it current and put the date on it; a comparison a reader cannot date is one they cannot trust.

How to tell it worked. Give the page to somebody outside the company and ask them which option it recommends and why.

Why this rating, and who signed it

The site does state fit boundaries in prose, and does so honestly, for example being explicit about where AI will not work in a given business. What it does not have is any comparison or decision page: no criteria table, no fractional-versus-full-time discussion, and no alternatives named. A buyer comparing options has nothing here to compare with.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_2414ab046b888d58
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • No competitors were supplied at intake, so competitor-specific coverage could not be assessed.

11. TE-03 Customer and outcome evidence

PartialMinor2 point(s) at stake

What we found. 10 of 25 sampled pages reference customers, clients, or engagements in their own text rather than in a block repeated across the sample; 10 state an outcome-shaped result; 8 long quotation(s) that could be testimonials were found; and 3 page(s) mention a baseline or measurement period.

Do TE-01 first.

Do this.

  1. Publish outcomes with the specifics: what the situation was, what was done, what changed, over what period.
  2. Attribute each to a named customer where you have permission, and say when you do not.
  3. Include the ones that did not go to plan, and what you learned.
  4. Do not publish a testimonial you cannot trace back to a real person.

How to tell it worked. Take one outcome and check that a reader could tell whether it resembles their own situation.

Why this rating, and who signed it

Outcome claims are abundant and unusually specific, but there is no case study: no named or responsibly anonymized customer, no authorization signal, no engagement scope, and a baseline or measurement period on only three of 25 sampled pages. The quotations detected are the situation-page headlines in the owner's own voice, not customer testimonials.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_2414ab046b888d58
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Whether a testimonial is genuine and authorized cannot be established from the site.

12. MR-03 Recheck discipline

MissingMajor1 point(s) at stake

What we found. No recheck schedule for the rubric, crawl sample, question set, competitors, and evidence was recorded at intake.

Do MR-01 first.

Do this.

  1. Put a recheck in the calendar rather than leaving it to memory.
  2. Re-run the same baseline questions, unchanged, on a fixed interval.
  3. Record what changed on the site between rechecks so a movement has a candidate cause.
  4. Keep the history. A single reading is not a trend.

How to tell it worked. Look at two consecutive rechecks and confirm you can say what changed and why.

Why this rating, and who signed it

No recheck schedule for the rubric, crawl sample, question set, competitors, or evidence exists. The intake file records none and no such schedule has been agreed. This is a documented absence rather than a collection failure, so it is rated Missing rather than left inconclusive.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 1 record(s) (records the reviewer cited are listed first)ev_1a94ac29449f2fa0
Where this is documented
What this check could not see
  • This is a property of the engagement, not of the public website. It cannot be observed by crawling and stays inconclusive until the operator records the agreed baseline.

13. AC-01 Intentional crawler treatment

SubstantialMinor0.5 point(s) at stake

What we found. No named AI crawler has an explicit robots.txt group; all are covered by the wildcard group. The wildcard group allows 1 and disallows 0 path pattern(s). Stated owner intent at intake: 'Chris wants the site retrievable and citable by mainstream search and AI answer engines. No crawler exclusion is intended for public content.'.

Do this.

  1. Decide, per crawler, whether you want it: search crawlers, AI training crawlers, AI answer fetchers.
  2. Write that decision into robots.txt as named groups rather than leaving it to a wildcard.
  3. Match your CDN, WAF and bot-management rules to that decision. A rule at the edge overrides robots.txt in practice.
  4. Re-check after any CDN or hosting change.

How to tell it worked. Request a page with each crawler's user agent and confirm you get what you intended.

Why this rating, and who signed it

robots.txt is a single permissive wildcard group allowing all paths, with a declared sitemap and no exclusion of any AI crawler. That is aligned with the owner's stated intent to be retrievable and citable. Short of Complete because the alignment is a default rather than a recorded decision: no named AI crawler group exists, so nothing in the repository or the file states that permitting them was chosen rather than inherited.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 2 record(s) (records the reviewer cited are listed first)ev_fac7362013e17212
ev_631ef8e431bf6b57 (robots_parse on https://chrisbrock.io/robots.txt at 2026-09-01T11:47:18+00:00)
Where this is documented
What this check could not see
  • Whether the observed directives match the owner's intent requires the owner to state that intent.

14. TA-02 First-hand experience

SubstantialMinor1 point(s) at stake

What we found. 10 of 25 sampled pages carry 600 or more words. First-hand markers were detected on 4 page(s): first person operator on 1, measurement on 3, artifact on 0. 1 link(s) to public code or dataset repositories were found.

Do TA-01 first.

Do this.

  1. Add what you have actually seen: the cases, the numbers, the things that went wrong.
  2. Say who did the work and when.
  3. Show the artefacts where you can: screenshots, extracts, before and after.
  4. Cut the passages that could have been written by somebody who had never done the work.

How to tell it worked. Ask whether a competitor could publish the same page with their name on it. If yes, it carries no experience.

Why this rating, and who signed it

This is the site's genuine strength. The situation pages and the longer blog posts carry operator-level specifics that a summariser could not generate: seven ecommerce platforms consolidated into one, three ERPs merged, roughly 60 client integrations, a compliance program taken from zero to audit-ready in under a year. Short of Complete because none of it is backed by a published artifact: no template, dataset, worked example, or repository a reader could open and use.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_5cfea00370e86080
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Phrase detection finds the shape of first-hand reporting, not its truth. A reviewer must confirm the experience is real and the artifact resolves.

15. TE-02 Expertise and credential support

PartialMinor2 point(s) at stake

What we found. 16 distinct credential-shaped claim(s) were detected across 7 page(s) in 37 occurrence(s); 2 appear within 120 characters of a date. No unexplained logo-wall pattern was detected.

Do this.

  1. State the qualifications, certifications and years that are actually relevant to what you sell.
  2. Link to the issuing body where the credential can be verified.
  3. Drop credentials that sound impressive and mean nothing here.
  4. Attach them to a named person rather than to the company in the abstract.

How to tell it worked. Pick one credential and try to verify it from the page alone.

Why this rating, and who signed it

ISO 27001, SOC 2 Type 2, and HIPAA appear repeatedly and are central to the site's positioning, but they are described as programs built inside an employer rather than as credentials held, and no issuer, audit period, certifying body, or scope statement appears anywhere. Only two of sixteen distinct credential statements sit within 120 characters of a date; the sixteen are repeated 37 times across the sample. A reader cannot tell which certifications belong to which organization, or when.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_37df1c06d90f71ac
ev_02acb40138951a1a
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • No credential was verified against its issuing body. That verification is outside the scope of a public-content audit and would be a Verified Audit tier activity.

18. CI-03 Stable passage structure

SubstantialMinor1 point(s) at stake

What we found. Across 25 sampled pages the median page carries 2 heading(s). 25 declare exactly one H1, 5 give at least one heading an id that can be linked directly, and 8 use a table or list. 2 page(s) exceed 400 words with fewer than three headings: https://chrisbrock.io/about, https://chrisbrock.io/blog/shadow-it-and-your-data. 3 page(s) skip a heading level: https://chrisbrock.io/blog: h1 followed by h3; https://chrisbrock.io/reading: h1 followed by h3; https://chrisbrock.io/blog/fostering-innovation-within-it-teams: h1 followed by h3.

Do this.

  1. Give each page exactly one H1 that says what the page is.
  2. Use H2 and H3 in order, with no skipped levels, and make each heading describe the section beneath it.
  3. Break long sections so no passage runs past a few hundred words without a heading.
  4. Avoid headings that are only labels ('Overview', 'More') where a specific one would do.

How to tell it worked. Read the headings alone, top to bottom. They should read as an outline of the page.

Evidence: 26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more record(s) in the JSON appendix
Where this is documented

19. EN-01 Organization identity consistency

SubstantialMinor1 point(s) at stake

What we found. Structured-data identity names: 'Chris Brock' on 25 page(s). Declared og:site_name values: 'Chris Brock'. 2 contact value(s) appear in structured data: email=mailto:cb@chrisbrock.io, address(structured). 25 distinct meta description(s) were served across 25 pages.

Do this.

  1. Decide which name is the operating entity and which, if any, are brands or products under it.
  2. Use that name identically in the <title> suffix, the og:site_name, the footer and the Organization structured data.
  3. Publish one page that states who operates the site, where, and how to reach a human, and link it from the footer.
  4. Add Organization structured data with name, url, logo, and sameAs pointing at the profiles you actually control.

How to tell it worked. Search your own brand name and confirm the entity a result describes is the one you meant.

Why this rating, and who signed it

One identity name, 'Chris Brock', is declared on all 25 sampled pages in JSON-LD and in og:site_name, with a consistent email and a structured postal address, and 25 distinct meta descriptions with no duplication. The gap that keeps this short of Complete: the site markets professional work but never names the operating legal entity behind it, so a reader cannot tell whether they would be contracting with an individual or with a company.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 27 record(s) (records the reviewer cited are listed first)ev_02acb40138951a1a
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 19 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Whether 'Chris Brock' and the operating entity should be presented as one identity or two is a business decision, not an observation.

22. TE-01 Ownership and accountability

SubstantialMinor1 point(s) at stake

What we found. About-style page(s) found: 1. Contact path(s) found: 1. 1 distinct mailto destination(s) and 1 form(s) appear in the sample. 25 organization or person entit(ies) are declared in structured data.

Do this.

  1. Name the legal entity, its jurisdiction and its location somewhere permanent and linked from every page.
  2. Give a real contact route that reaches a person, not only a form.
  3. Name who is accountable for the work, with a role.
  4. Keep it consistent with your Organization structured data.

How to tell it worked. Try to find out who runs the site using only the site, in under a minute.

Why this rating, and who signed it

Read /about, /contact, and /privacy. A named individual, a stated role, a city, a working email address, a contact form that states plainly what it does with a submission, and detailed privacy pages. Accountability is well above what most sites in this category offer. Short of Complete only because the operating legal entity is never named.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 29 record(s) (records the reviewer cited are listed first)ev_37df1c06d90f71ac
ev_d76db615ec2be435
ev_05b6bc243d937501
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
and 21 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • The contact path was not exercised: no form was submitted and no mail was sent, by policy.

23. CI-05 Content freshness signals

SubstantialMinor0.75 point(s) at stake

What we found. 15 of 25 sampled pages expose a date in visible text, structured data, or a time element (60.0%). 6 of 6 article-style pages carry a date. No contradiction was found between visible and structured dates in the sample.

Do this.

  1. Publish a real date on content where recency matters, and update it only when the content changes.
  2. Mark it up with <time datetime> and with datePublished and dateModified in structured data.
  3. Say what changed, where a substantive revision is worth a note.
  4. Remove auto-updating dates that move without the content moving. They are noise and readers learn to ignore them.

How to tell it worked. Compare the displayed date, the <time> attribute and the structured data on one page.

Evidence: 26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more record(s) in the JSON appendix
Where this is documented

24. SD-02 Entity relationships

SubstantialMinor0.75 point(s) at stake

What we found. 50 of 67 entit(ies) declare an @id (74.6%), producing 2 distinct identifier(s). 43 relationship reference(s) were found across 3 relationship type(s). 25 entit(ies) declare sameAs links to external profiles.

Do SD-01 first.

Do this.

  1. Connect the entities: an Article to its author and publisher, a Product to its brand and offers, a Person to their organisation.
  2. Use @id so the same entity referenced from two pages is one entity, not two.
  3. Keep the graph honest. Do not assert a relationship that is not real.
  4. Remove orphan nodes that nothing points at.

How to tell it worked. Validate a page and check the graph it produces has the links you intended.

Evidence: 25 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 17 more record(s) in the JSON appendix
Where this is documented

25. TE-04 Policy and limitation clarity

SubstantialMinor0.75 point(s) at stake

What we found. Privacy policy reference(s): 2. Terms reference(s): 0. 1 form(s) appear in the sample. 25 page(s) show evidence of third-party analytics being loaded. No terms or service-boundary page was found in the sample.

Do this.

  1. Write down what you do not do, and who you are a bad fit for.
  2. State the terms that actually bite: what is included, what is billed separately, what the refund position is.
  3. Give the limits of any claim you make, in the same place as the claim.
  4. Put these where a buyer will read them before they buy, not only in the terms page.

How to tell it worked. Ask somebody to find, from the site alone, one thing you will not do.

Why this rating, and who signed it

Read /privacy and /privacy/maildash. Both are substantive, current, and specific, including a separate children's privacy policy for a named product and an explicit data-minimization statement in the footer of every page. No terms-of-service page exists, but the site sells nothing on-site and takes no payment, so a terms page is not applicable to the current offer. Short of Complete because the contact form collects a message and a company website without the privacy policy being linked from the form itself.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 28 record(s) (records the reviewer cited are listed first)ev_05b6bc243d937501
ev_d76db615ec2be435
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Policy pages linked but not sampled were not read; whether a policy's content matches actual practice is outside the scope of a public-content audit.

26. CR-03 Sitemap quality

SubstantialMinor0.5 point(s) at stake

What we found. 3 sitemap document(s) were retrieved; 3 parsed cleanly and 0 did not. 68 unique URL(s) are listed. 0 of 68 entries carry a lastmod value (0.0%). 25 listed URL(s) were sampled and returned a successful response.

Do CR-02 first.

Do this.

  1. Generate the sitemap from the same source that generates your routes so it cannot drift.
  2. Include only canonical, indexable, 200-returning URLs. Drop redirects, 404s and noindex pages.
  3. Set lastmod from the content's real modification date, not the build time.
  4. Reference the sitemap from robots.txt and submit it in Search Console.

How to tell it worked. Fetch each URL in the sitemap and confirm every one returns 200 and is self-canonical.

Evidence: 6 record(s)ev_631ef8e431bf6b57 (robots_parse on https://chrisbrock.io/robots.txt at 2026-09-01T11:47:18+00:00)
ev_7319da06a1333440 (sitemap_parse on https://chrisbrock.io/sitemap-index.xml at 2026-09-01T11:47:18+00:00)
ev_01466bf10e8fce8d (sitemap_parse on https://chrisbrock.io/sitemap-index.xml at 2026-09-01T11:47:18+00:00)
ev_123930a05a4a98e9 (sitemap_parse on https://chrisbrock.io/sitemap_index.xml at 2026-09-01T11:47:18+00:00)
ev_dd50e9e4dd2ac140 (sitemap_parse on https://chrisbrock.io/sitemap-0.xml at 2026-09-01T11:47:18+00:00)
ev_c0e6b54fd0fbfc3c (derived_analysis on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
Where this is documented
What this check could not see
  • Only 25 of 68 listed URLs were sampled within the configured page limit.

27. TA-04 Internal topic relationships

SubstantialMinor0.75 point(s) at stake

What we found. Across 25 sampled pages the median page links to 8 other sampled page(s). 0 sampled page(s) received no internal link from any other sampled page, and 12 received exactly one.

Do TA-01 first.

Do this.

  1. Link related pages to each other with anchor text that says what the target is about.
  2. Make sure no substantive page is reachable only from the sitemap.
  3. Group pages that belong together under a hub page that links to all of them.
  4. Remove links that exist only for volume; they dilute the ones that mean something.
  5. If a URL you expected in this finding is missing, it declares a canonical naming another page you were shown: it is counted as that page and needs no links of its own.

How to tell it worked. Start at the home page and try to reach each important page in three clicks. Query-string variants of a page you can already reach do not need their own route.

Evidence: 26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Only the 25 sampled pages were analysed; a page may receive links from pages outside the sample.

28. EN-03 People and authorship identity

SubstantialMinor1 point(s) at stake

What we found. 25 Person entit(ies) and 12 structured author reference(s) were found. Meta author values: 'Chris Brock'. 6 of 6 article-style pages carry an author attribution. 25 Person entit(ies) link to external profiles via sameAs.

Do EN-01 first.

Do this.

  1. Give every piece of authored content a named author, not a company byline or 'admin'.
  2. Give each author a page with their role, their relevant background, and how to verify it.
  3. Link author to organisation both ways, in the prose and in Person or Article structured data.
  4. Keep the same spelling of a name everywhere it appears.

How to tell it worked. Open an article and confirm you can get from the byline to a page that says who wrote it.

Why this rating, and who signed it

A Person entity with jobTitle, address, knowsAbout, and sameAs links to LinkedIn and GitHub is declared on all 25 sampled pages, all six sampled articles carry an author attribution, and /about carries a substantive first-person biography with specific roles and scope. Short of Complete because no credential is tied to an issuer or a date, so the expertise is described rather than evidenced.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 27 record(s) (records the reviewer cited are listed first)ev_37df1c06d90f71ac
ev_02acb40138951a1a
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 19 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • Whether a stated credential is real, current, and in scope cannot be established from the site alone.

32. AC-02 Machine-readable guidance quality

PartialMinor1 point(s) at stake

What we found. 2 machine-readable guidance file(s) are served: /llms.txt (1925 bytes, 11 link(s)), /.well-known/security.txt (187 bytes, 2 link(s)). 1 link(s) inside the link-index files point off the audited domain. /.well-known/security.txt is not a link index, so outbound links in it are not counted: prose quotes URLs, and a site publishing work it did for somebody else has to name that site. These conventions are voluntary. Serving them is not a ranking or citation guarantee, and no engine is known to require them.

Do this.

  1. Publish an llms.txt that points at the pages you most want quoted.
  2. Keep it to real, current, canonical URLs with a line each on what they cover.
  3. Generate it from the same source as your sitemap so the two cannot disagree.
  4. Serve it as text/plain at the root with a 200.

How to tell it worked. Fetch /llms.txt and check every URL in it returns 200 and is canonical.

Evidence: 4 record(s)ev_cd0267b89a631aa6 (http_get on https://chrisbrock.io/llms.txt at 2026-09-01T11:47:18+00:00)
ev_de23964c65dfad3f (http_get on https://chrisbrock.io/llms-full.txt at 2026-09-01T11:47:18+00:00)
ev_5a2b08d3801bceba (http_get on https://chrisbrock.io/ai.txt at 2026-09-01T11:47:18+00:00)
ev_bbb2e4646545eeb3 (http_get on https://chrisbrock.io/.well-known/security.txt at 2026-09-01T11:47:18+00:00)
Where this is documented
What this check could not see
  • Whether the content of a guidance file is accurate and current is a reviewer judgement.

33. AC-03 Agent-facing transaction boundaries

SubstantialMinor0.25 point(s) at stake

What we found. 1 page(s) expose a form and 3 mention a purchase surface. The collector never submits a form or performs any state-changing request, so interaction boundaries were not exercised.

Do this.

  1. Decide what an automated agent is permitted to do on your site: read, enquire, book, buy.
  2. Say so in writing, somewhere an agent's operator can find it, and in your terms.
  3. Make the technical controls match the stated policy.
  4. Give a contact route for agent operators who need an exception.

How to tell it worked. Read your own policy and check that the site enforces it.

Why this rating, and who signed it

The site exposes exactly one interactive surface, the contact form, and the page states its boundary in plain language directly beside it: the form sends a single email and adds the sender to no list. There is no checkout, no account, no public API, and nothing that could commit a visitor to anything. Short of Complete because that boundary is stated only in prose, with no machine-readable equivalent.

Signed by Chris Brock (signed 2026-08-30); assisted review by Claude Code.

Evidence: 27 record(s) (records the reviewer cited are listed first)ev_d76db615ec2be435
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
and 19 more record(s) in the JSON appendix
Where this is documented
What this check could not see
  • No form was submitted and no state-changing request was made, by policy. The boundary was read from the page, not exercised.

What we could not settle

9 check(s) came back inconclusive. The audit established nothing about them, which is not the same as finding a fault, and they took no points away from your score in either direction. Each line says what stopped us.

What is working

12 of 33 checks reached Substantial or Complete. These are the foundations the remediation work builds on, and they are worth protecting when the site changes.

  • CI-03 Stable passage structure (Substantial): Across 25 sampled pages the median page carries 2 heading(s). 25 declare exactly one H1, 5 give at least one heading an id that can be linked directly, and 8 use a table or list. 2 page(s) exceed 400 words with fewer than three headings: https://chrisbrock.io/about, https://chrisbrock.io/blog/shadow-it-and-your-data. 3 page(s) skip a heading level: https://chrisbrock.io/blog: h1 followed by h3; https://chrisbrock.io/reading: h1 followed by h3; https://chrisbrock.io/blog/fostering-innovation-within-it-teams: h1 followed by h3.
  • EN-01 Organization identity consistency (Substantial): Structured-data identity names: 'Chris Brock' on 25 page(s). Declared og:site_name values: 'Chris Brock'. 2 contact value(s) appear in structured data: email=mailto:cb@chrisbrock.io, address(structured). 25 distinct meta description(s) were served across 25 pages.
  • EN-03 People and authorship identity (Substantial): 25 Person entit(ies) and 12 structured author reference(s) were found. Meta author values: 'Chris Brock'. 6 of 6 article-style pages carry an author attribution. 25 Person entit(ies) link to external profiles via sameAs.
  • TA-02 First-hand experience (Substantial): 10 of 25 sampled pages carry 600 or more words. First-hand markers were detected on 4 page(s): first person operator on 1, measurement on 3, artifact on 0. 1 link(s) to public code or dataset repositories were found.
  • TE-01 Ownership and accountability (Substantial): About-style page(s) found: 1. Contact path(s) found: 1. 1 distinct mailto destination(s) and 1 form(s) appear in the sample. 25 organization or person entit(ies) are declared in structured data.
  • CI-05 Content freshness signals (Substantial): 15 of 25 sampled pages expose a date in visible text, structured data, or a time element (60.0%). 6 of 6 article-style pages carry a date. No contradiction was found between visible and structured dates in the sample.
  • SD-02 Entity relationships (Substantial): 50 of 67 entit(ies) declare an @id (74.6%), producing 2 distinct identifier(s). 43 relationship reference(s) were found across 3 relationship type(s). 25 entit(ies) declare sameAs links to external profiles.
  • TA-04 Internal topic relationships (Substantial): Across 25 sampled pages the median page links to 8 other sampled page(s). 0 sampled page(s) received no internal link from any other sampled page, and 12 received exactly one.

and 4 further check(s) rated Substantial or better.

Highest-value actions

The same actions as the section above, as a table to sort and hand around. Impact and confidence are scored 1 to 5, higher being better. Points at stake is the rubric points this item can still recover.

Prioritized implementation backlog. Priority = impact1.5 × (1 + points at stake ÷ 5) × confidence factor ÷ an implementation-cost factor. That last factor is a rough 1 to 5 judgement of how much work a fix is, used to order the list and never published as a duration: we can see what the site is missing and not what it takes to change it. Each item's recommendation is the row beneath its numbers.
#ActionSeverityImpactConfidencePointsPriorityDepends on
1CI-02 Claim supportCritical453.758.24CI-04
Recommendation for CI-02 Claim support: For each material claim, put its provenance next to it. An external source is strongest. Where none exists -- which is the normal case for a private operating figure -- a first-person attestation is still a source: name who is asserting it, the period it covers, the scope it covers, and the basis ("our internal figures", "verifiable on reference check"). Removing a true claim is the last resort, not the first.
2CR-06 Body text is machine-readable proseUnresolved4517.11None
Recommendation for CR-06 Body text is machine-readable prose: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
3CI-01 Direct answer passagesMajor452.57.06CI-03
Recommendation for CI-01 Direct answer passages: Give each priority question its own heading and a self-contained two-to-four sentence answer directly beneath it.
4CI-04 Source attributionMajor352.255.58None
Recommendation for CI-04 Source attribution: Cite the standard, study, or filing next to the claim it supports, with the source name and date visible in the text rather than only in a link.
5MR-01 Baseline question setMajor351.55None
Recommendation for MR-01 Baseline question set: Agree and version a question set covering buying questions, brand variations, comparison questions, and geography, dated before the first measurement.
6TA-01 Priority-question coverageMajor4324.64CI-01
Recommendation for TA-01 Priority-question coverage: Write one substantive owning page for each uncovered priority question, and consolidate pages that compete for the same question.
7CR-04 Canonical and duplicate controlMinor3514.62CR-01
Recommendation for CR-04 Canonical and duplicate control: Redirect every non-canonical host and protocol variant to the canonical origin with a 301, and declare a self-referencing canonical on every page.
8EN-02 Product and service identityMinor3524.28EN-01
Recommendation for EN-02 Product and service identity: Give each offering one page with a stable URL, a one-sentence definition, a named audience, and structured data that ties it to the organization.
9CR-02 Robots and crawler directivesUnresolved251.53.68None
Recommendation for CR-02 Robots and crawler directives: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
10TA-03 Comparative and decision contentMinor3323.64None
Recommendation for TA-03 Comparative and decision content: Publish one honest comparison or decision page with a criteria table, and state explicitly where the offering is not the right fit.
11TE-03 Customer and outcome evidenceMinor3523.55TE-01
Recommendation for TE-03 Customer and outcome evidence: Publish at least one case example with the situation, the intervention, the measurement window, the baseline, and the result, with the customer's permission recorded.
12MR-03 Recheck disciplineMajor2513.39MR-01
Recommendation for MR-03 Recheck discipline: Fix a recheck cadence and record the rubric version, crawl sample, and question set used for each run so score movement can be attributed to the site rather than the method.
13AC-01 Intentional crawler treatmentMinor250.53.11None
Recommendation for AC-01 Intentional crawler treatment: Decide explicitly which AI crawlers may retrieve the site, record the decision, and express it in robots.txt so a future deploy cannot silently change it.
14TA-02 First-hand experienceMinor3513.04TA-01
Recommendation for TA-02 First-hand experience: Publish the method, the numbers, and the artifact behind at least one claim per topic: a repository, a dataset, a template, or a documented before-and-after measurement.
15TE-02 Expertise and credential supportMinor2522.93None
Recommendation for TE-02 Expertise and credential support: State the issuing body, the scope, the date, and the entity the credential belongs to next to every credential claim.
16CR-01 Stable successful retrievalUnresolved251.52.72None
Recommendation for CR-01 Stable successful retrieval: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
17SD-01 Valid core entitiesUnresolved251.52.72None
Recommendation for SD-01 Valid core entities: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
18CI-03 Stable passage structureMinor2512.51None
Recommendation for CI-03 Stable passage structure: Give every page one H1, a descriptive H2 for each distinct answer, and a stable id on each H2 so a passage can be linked directly.
19EN-01 Organization identity consistencyMinor2512.51None
Recommendation for EN-01 Organization identity consistency: State one organization or person name, one description, and one contact path consistently in visible content and in structured data on every page.
20SD-03 Page-specific markupUnresolved2512.51SD-01
Recommendation for SD-03 Page-specific markup: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
21SD-04 Metadata consistencyUnresolved2512.51SD-01
Recommendation for SD-04 Metadata consistency: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
22TE-01 Ownership and accountabilityMinor2512.51None
Recommendation for TE-01 Ownership and accountability: Name the operating entity, the responsible people, and a working contact path on a linked page, and mirror those facts in structured data.
23CI-05 Content freshness signalsMinor250.752.41None
Recommendation for CI-05 Content freshness signals: Show a visible published and updated date on every article, and emit the same values as datePublished and dateModified in structured data.
24SD-02 Entity relationshipsMinor250.752.41SD-01
Recommendation for SD-02 Entity relationships: Give every entity a stable @id, reference the same identifiers across pages, and add sameAs links to owned external profiles.
25TE-04 Policy and limitation clarityMinor250.752.41None
Recommendation for TE-04 Policy and limitation clarity: Publish a dated privacy policy covering analytics and form data, and a terms or engagement-scope page that matches what is actually sold.
26CR-03 Sitemap qualityMinor250.52.3CR-02
Recommendation for CR-03 Sitemap quality: Correct the entries identified in the evidence and ensure lastmod reflects real content changes.
27TA-04 Internal topic relationshipsMinor230.752.05TA-01
Recommendation for TA-04 Internal topic relationships: Link every evidence and educational page from the commercial page it supports, and from a topic index.
28EN-03 People and authorship identityMinor2512EN-01
Recommendation for EN-03 People and authorship identity: Attribute every substantive page to a named person with a linked biography, role, and credentials, and connect that person to the organization in structured data.
29EN-04 External identity reconciliationUnresolved211.51.91EN-01
Recommendation for EN-04 External identity reconciliation: Link every owned profile from the site and declare it in sameAs, and retire or update profiles carrying a former brand.
30CR-05 Rendered content availabilityUnresolved211.51.51CR-01
Recommendation for CR-05 Rendered content availability: Serve primary claims, headings, navigation, and supporting evidence in the initial HTML response.
31MR-02 Referral and conversion attributionUnresolved2111.4MR-01
Recommendation for MR-02 Referral and conversion attribution: Configure a referral segment for AI answer surfaces and connect it to a defined qualified-outcome event, or record the implementation backlog to do so.
32AC-02 Machine-readable guidance qualityMinor1511.2None
Recommendation for AC-02 Machine-readable guidance quality: Keep the guidance file generated from the same source as the sitemap so it cannot go stale.
33AC-03 Agent-facing transaction boundariesMinor150.250.78None
Recommendation for AC-03 Agent-facing transaction boundaries: Document what each form or endpoint commits the visitor to, require authentication for anything that creates an obligation, and state the approval step in public documentation.

Page-structure checklist

6 good, 6 weak, 1 missing across 13 structural elements. This table scores nothing. It presents observations the checks already made, so the last column names where each row came from.

Structural elements an answer engine looks for.
ElementThe question it answersStateWhat was observedFrom
Answer passagesDoes any heading pose the question a buyer asks?Weak1 question-phrased heading(s) across 25 sampled page(s).CI-01
Linkable passagesCan a single passage be cited by URL?Weak5 of 25 page(s) give a heading an id.CI-03
Claim supportDoes a material claim have something behind it?Weak41 distinct material claim candidate(s); 40 state no provenance at all.CI-02, CI-04
Source attributionDoes the site cite anything outside itself?Weak2 of 25 page(s) link a destination that could serve as a source.CI-04
FreshnessCan a reader tell when this was last true?Weak15 of 25 page(s) expose a date.CI-05
Organization identityIs it unambiguous who publishes this?Good1 declared identity name(s); 2 structured contact value(s).EN-01, SD-01
People and authorshipDoes a named person stand behind the expertise?Good25 Person entit(ies); 0 article-style page(s) unattributed.EN-03
Offering definitionCan an engine name what is actually sold?Missing0 Product/Service entit(ies); 1 offering(s) named only in a URL.EN-02, SD-01
Comparison and fitDoes the site say who it is not for?Good11 page(s) with comparison language, 6 stating a limitation or fit boundary.TA-03
Structured dataIs the machine-readable description connected?Good67 entit(ies), 50 carrying a stable @id.SD-01, SD-02
Contact pathCan a convinced reader reach a human?Good1 contact destination(s), 1 about page(s).TE-01
PoliciesAre the data and service boundaries stated?Weak2 privacy reference(s), 0 terms reference(s).TE-04
Machine-readable guidanceIs there an index written for machines?Good/.well-known/security.txt, /llms.txtAC-02

Delivery context

Context for reading the findings. None of this is scored, and no request was made to collect it. It is read from response headers and page text already captured.

Observed delivery characteristics.
SignalObserved
Transport35 of 36 retained response(s) were served over HTTPS.
HSTSpresent, max-age 31,536,000s (includeSubDomains, preload)
Serving infrastructureCloudflare (36 response(s))
Reading ease (median)45.2, Difficult, across 25 page(s). Hardest: 19.7 at https://chrisbrock.io/blog.

Read from response headers already captured during collection. No additional request was made, and none of this is scored. Reading ease is a readability proxy, not a rubric check. It carries no points. A low score is not automatically a defect: a technical audience may want dense prose.

Every check, and what it rested on

How to read this. The measurements are the tool's; the judgements are a person's; the score is arithmetic over both. No part of this report was written or rated by a language model.

automated means the tool observed it and the observation is reproducible from the evidence record. operator means a named reviewer read that evidence and made a judgement, with the reason recorded beside it. Weigh them differently. You should.

All 33 checks, including the ones that found nothing to do. A check name links to the work it generated, where the finding, the fix and the reviewer’s reasoning are written out once.

CR · Crawl and retrieval accessibility (15 points)

Every crawl and retrieval accessibility check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
CR-04 Canonical and duplicate controlPartialMinor1 of 2high
27 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 19 more in the JSON appendix
CR-01 Stable successful retrievalInconclusiveUnresolvedunscoredhigh
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix
CR-02 Robots and crawler directivesInconclusiveUnresolvedunscoredhigh
1 record(s)ev_631ef8e431bf6b57 (robots_parse on https://chrisbrock.io/robots.txt at 2026-09-01T11:47:18+00:00)
CR-05 Rendered content availabilityInconclusiveUnresolvedunscoredlow
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix
CR-06 Body text is machine-readable proseInconclusiveUnresolvedunscoredhigh
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix
CR-03 Sitemap qualitySubstantialMinor1.5 of 2high
6 record(s)ev_631ef8e431bf6b57 (robots_parse on https://chrisbrock.io/robots.txt at 2026-09-01T11:47:18+00:00)
ev_7319da06a1333440 (sitemap_parse on https://chrisbrock.io/sitemap-index.xml at 2026-09-01T11:47:18+00:00)
ev_01466bf10e8fce8d (sitemap_parse on https://chrisbrock.io/sitemap-index.xml at 2026-09-01T11:47:18+00:00)
ev_123930a05a4a98e9 (sitemap_parse on https://chrisbrock.io/sitemap_index.xml at 2026-09-01T11:47:18+00:00)
ev_dd50e9e4dd2ac140 (sitemap_parse on https://chrisbrock.io/sitemap-0.xml at 2026-09-01T11:47:18+00:00)
ev_c0e6b54fd0fbfc3c (derived_analysis on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)

EN · Entity clarity (15 points)

Every entity clarity check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
EN-02 Product and service identityPartialMinor2 of 4high
27 record(s)ev_5cfea00370e86080
ev_2414ab046b888d58
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 19 more in the JSON appendix
EN-04 External identity reconciliationInconclusiveUnresolvedunscoredlow
25 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 17 more in the JSON appendix
EN-01 Organization identity consistencySubstantialMinor3 of 4high
27 record(s)ev_02acb40138951a1a
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 19 more in the JSON appendix
EN-03 People and authorship identitySubstantialMinor3 of 4high
27 record(s)ev_37df1c06d90f71ac
ev_02acb40138951a1a
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 19 more in the JSON appendix

CI · Citation readiness (20 points)

Every citation readiness check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
CI-02 Claim supportMinimalCritical1.25 of 5high
29 record(s)ev_02acb40138951a1a
ev_37df1c06d90f71ac
ev_5cfea00370e86080
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
and 21 more in the JSON appendix
CI-04 Source attributionMinimalMajor0.75 of 3high
28 record(s)ev_02acb40138951a1a
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
CI-01 Direct answer passagesPartialMajor2.5 of 5high
28 record(s)ev_5cfea00370e86080
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
CI-03 Stable passage structureSubstantialMinor3 of 4high
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix
CI-05 Content freshness signalsSubstantialMinor2.25 of 3high
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix

TA · Topical coverage and authority (15 points)

Every topical coverage and authority check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
TA-01 Priority-question coveragePartialMajor2 of 4moderate
28 record(s)ev_1a94ac29449f2fa0
ev_2414ab046b888d58
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
TA-03 Comparative and decision contentPartialMinor2 of 4moderate
28 record(s)ev_2414ab046b888d58
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
TA-02 First-hand experienceSubstantialMinor3 of 4high
28 record(s)ev_5cfea00370e86080
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
TA-04 Internal topic relationshipsSubstantialMinor2.25 of 3moderate
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix

TE · Trust and evidence (15 points)

Every trust and evidence check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
TE-02 Expertise and credential supportPartialMinor2 of 4high
28 record(s)ev_37df1c06d90f71ac
ev_02acb40138951a1a
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
TE-03 Customer and outcome evidencePartialMinor2 of 4high
28 record(s)ev_2414ab046b888d58
ev_37df1c06d90f71ac
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix
TE-01 Ownership and accountabilitySubstantialMinor3 of 4high
29 record(s)ev_37df1c06d90f71ac
ev_d76db615ec2be435
ev_05b6bc243d937501
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
and 21 more in the JSON appendix
TE-04 Policy and limitation claritySubstantialMinor2.25 of 3high
28 record(s)ev_05b6bc243d937501
ev_d76db615ec2be435
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
and 20 more in the JSON appendix

SD · Structured data (10 points)

Every structured data check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
SD-01 Valid core entitiesInconclusiveUnresolvedunscoredhigh
25 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 17 more in the JSON appendix
SD-03 Page-specific markupInconclusiveUnresolvedunscoredhigh
25 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 17 more in the JSON appendix
SD-04 Metadata consistencyInconclusiveUnresolvedunscoredhigh
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix
SD-02 Entity relationshipsSubstantialMinor2.25 of 3high
25 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 17 more in the JSON appendix

AC · AI and agent controls (5 points)

Every ai and agent controls check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
AC-02 Machine-readable guidance qualityPartialMinor1 of 2high
4 record(s)ev_cd0267b89a631aa6 (http_get on https://chrisbrock.io/llms.txt at 2026-09-01T11:47:18+00:00)
ev_de23964c65dfad3f (http_get on https://chrisbrock.io/llms-full.txt at 2026-09-01T11:47:18+00:00)
ev_5a2b08d3801bceba (http_get on https://chrisbrock.io/ai.txt at 2026-09-01T11:47:18+00:00)
ev_bbb2e4646545eeb3 (http_get on https://chrisbrock.io/.well-known/security.txt at 2026-09-01T11:47:18+00:00)
AC-01 Intentional crawler treatmentSubstantialMinor1.5 of 2high
2 record(s)ev_fac7362013e17212
ev_631ef8e431bf6b57 (robots_parse on https://chrisbrock.io/robots.txt at 2026-09-01T11:47:18+00:00)
AC-03 Agent-facing transaction boundariesSubstantialMinor0.75 of 1high
27 record(s)ev_d76db615ec2be435
ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
and 19 more in the JSON appendix

MR · Measurement readiness (5 points)

Every measurement readiness check, its rating and the evidence it rests on.
CheckRatingSeverityPointsConfidenceEvidence
MR-03 Recheck disciplineMissingMajor0 of 1high
1 record(s)ev_1a94ac29449f2fa0
MR-01 Baseline question setMinimalMajor0.5 of 2high
1 record(s)ev_1a94ac29449f2fa0
MR-02 Referral and conversion attributionInconclusiveUnresolvedunscoredlow
26 record(s)ev_26dae81084395fbd (html_parse on https://chrisbrock.io/ at 2026-09-01T11:47:18+00:00)
ev_181923593d69d1ad (html_parse on https://chrisbrock.io/about at 2026-09-01T11:47:18+00:00)
ev_b43822a0840b8666 (html_parse on https://chrisbrock.io/blog at 2026-09-01T11:47:18+00:00)
ev_184a171e0dda1ab0 (html_parse on https://chrisbrock.io/contact at 2026-09-01T11:47:18+00:00)
ev_541bd768a7b66d4b (html_parse on https://chrisbrock.io/privacy at 2026-09-01T11:47:18+00:00)
ev_6a89d676c8230970 (html_parse on https://chrisbrock.io/reading at 2026-09-01T11:47:18+00:00)
ev_5072982e68a4e927 (html_parse on https://chrisbrock.io/situations at 2026-09-01T11:47:18+00:00)
ev_9e45852684409986 (html_parse on https://chrisbrock.io/blog/shadow-it-and-your-data at 2026-09-01T11:47:18+00:00)
and 18 more in the JSON appendix

Page-by-page collection results

25 page(s) collected in 42.49 seconds across 36 request(s), 287,465 bytes.

Every URL the collector attempted, with the evidence record produced for it.
URLStatusOutcomeTitleWordsDepthEvidence
https://chrisbrock.io/200successChris Brock | Chief Information Officer | Security, Compliance & AI3950ev_26dae81084395fbd
https://chrisbrock.io/about200successAbout | Chris Brock4570ev_181923593d69d1ad
https://chrisbrock.io/blog200successBlog | Chris Brock13740ev_b43822a0840b8666
https://chrisbrock.io/contact200successContact | Chris Brock1111ev_184a171e0dda1ab0
https://chrisbrock.io/privacy200successPrivacy Policy | Chris Brock11971ev_541bd768a7b66d4b
https://chrisbrock.io/reading200successRecommended Reading | Chris Brock8621ev_6a89d676c8230970
https://chrisbrock.io/situations200successExperience | Chris Brock3071ev_5072982e68a4e927
https://chrisbrock.io/blog/shadow-it-and-your-data200successShadow IT and Your Data | Chris Brock8691ev_9e45852684409986
https://chrisbrock.io/privacy/maildash200successMailDash Children's Privacy Notice | Chris Brock LLC9051ev_2fb18f0bbccc0198
https://chrisbrock.io/reading/traction200successTraction | Recommended Reading | Chris Brock3981ev_42ad79c3cdd902f7
https://chrisbrock.io/situations/ai-roi200successAI with Measured ROI | Chris Brock1641ev_cfcdec573a69b770
https://chrisbrock.io/blog/agentic-ai-pilot-to-production200successA CIO's Practical Guide to Agentic AI: From Pilot to Production | Chris Brock10661ev_22aab64d65addb94
https://chrisbrock.io/reading/sideline-ceo200successSideline C.E.O. | Recommended Reading | Chris Brock3741ev_f81e14d21134620e
https://chrisbrock.io/situations/fractional-cio200successTechnology Strategy for Growth | Chris Brock1811ev_493432e0431471c5
https://chrisbrock.io/blog/shadow-ai-is-the-new-shadow-it200successShadow AI Is the New Shadow IT — And It's Already in Your Organization | Chris Brock10461ev_b3216608f547331c
https://chrisbrock.io/reading/the-quotient200successQTNT | Recommended Reading | Chris Brock3961ev_92e04db85e08c72c
https://chrisbrock.io/situations/it-turnaround-msp200successIT Turnarounds & MSP Right-Sizing | Chris Brock1711ev_124bb3356f581f83
https://chrisbrock.io/blog/measuring-ai-roi-beyond-time-saved200successMeasuring AI ROI: Moving Beyond 'Time Saved' to Real Business Value | Chris Brock12671ev_3c94dde2e19fce80
https://chrisbrock.io/reading/atomic-habits200successAtomic Habits | Recommended Reading | Chris Brock3801ev_07419163d05b612e
https://chrisbrock.io/situations/ma-technology-diligence200successM&A Technology Diligence & Integration | Chris Brock1731ev_2e5a7605661d081b
https://chrisbrock.io/blog/fostering-innovation-within-it-teams200successFostering Innovation within IT Teams | Chris Brock7761ev_6ce9d82c3f1f3a9b
https://chrisbrock.io/reading/eat-that-frog200successEat That Frog! | Recommended Reading | Chris Brock3691ev_963d1c070ef816bc
https://chrisbrock.io/situations/soc2-iso27001-hipaa-readiness200successSOC 2, ISO 27001 & HIPAA from Zero | Chris Brock1951ev_ad623e7987b1aaa7
https://chrisbrock.io/blog/cio-role-ai-governance-building-trust200successThe CIO's Role in AI Governance: Building Trust Without Killing Innovation | Chris Brock12591ev_8c273ccb899617be
https://chrisbrock.io/reading/good-to-great200successGood to Great | Recommended Reading | Chris Brock3841ev_d574e33342883c63

Entity and source-consistency map

How this site names itself, who it attributes work to, and which external properties it connects to.

Declared identity values across the sample.
SourceValueSeen on
Structured data nameChris Brock25 page(s)
og:site_nameChris Brock25 page(s)

People and authorship

External properties linked from the site

Structured-data identifiers

50 of 67 entities declare a stable @id. Unresolvable references:

Answer-ready content briefs

Each brief exists because a specific priority question had no substantive owning page in the sample.

What does a fractional CIO actually do for a small company?

Gap. No sampled page covers half or more of this question's key terms.

Brief. Create one owning page. Open with a two-to-four sentence answer under an H2 that repeats the question, then support it with the method, the constraint, and one worked example.

Raised by check TA-01

How much does a fractional or interim CIO cost?

Gap. No sampled page covers half or more of this question's key terms.

Brief. Create one owning page. Open with a two-to-four sentence answer under an H2 that repeats the question, then support it with the method, the constraint, and one worked example.

Raised by check TA-01

Structured-data backlog

Outstanding structured-data work, with the parser output that raised it.

SD-01, currently inconclusive

Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

Parser output behind SD-01.
declared types{"Person": 25, "WebSite": 25, "Article": 6, "Review": 6, "BreadcrumbList": 5}
core types present["Person", "WebSite"]

Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0, ev_541bd768a7b66d4b

SD-02, currently substantial

Give every entity a stable @id, reference the same identifiers across pages, and add sameAs links to owned external profiles.

Parser output behind SD-02.
with id50
entities67
sameas entities25

Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0, ev_541bd768a7b66d4b

SD-03, currently inconclusive

Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

Parser output behind SD-03.
breadcrumb pages["https://chrisbrock.io/situations/ai-roi", "https://chrisbrock.io/situations/fractional-cio", "https://chrisbrock.io/situations/it-turnaround-msp", "https://chrisbrock.io/situations/ma-technology-diligence", "https://chrisbrock.io/situations/soc2-iso27001-hipaa-readiness"]

Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0, ev_541bd768a7b66d4b

SD-04, currently inconclusive

Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.

Evidence: ev_26dae81084395fbd, ev_181923593d69d1ad, ev_b43822a0840b8666, ev_184a171e0dda1ab0, ev_541bd768a7b66d4b

Thirty-day implementation sequence

Ordered so that no item is scheduled before the work it depends on.

Days 1-7: retrieval, identity, and directives

  • #2 CR-06 Body text is machine-readable prose: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  • #9 CR-02 Robots and crawler directives: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  • #13 AC-01 Intentional crawler treatment: Decide explicitly which AI crawlers may retrieve the site, record the decision, and express it in robots.txt so a future deploy cannot silently change it.
  • #16 CR-01 Stable successful retrieval: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  • #19 EN-01 Organization identity consistency: State one organization or person name, one description, and one contact path consistently in visible content and in structured data on every page.
  • #32 AC-02 Machine-readable guidance quality: Keep the guidance file generated from the same source as the sitemap so it cannot go stale.
  • #33 AC-03 Agent-facing transaction boundaries: Document what each form or endpoint commits the visitor to, require authentication for anything that creates an obligation, and state the approval step in public documentation.

Days 8-16: structure, evidence, and structured data

  • #4 CI-04 Source attribution: Cite the standard, study, or filing next to the claim it supports, with the source name and date visible in the text rather than only in a link.
  • #7 CR-04 Canonical and duplicate control: Redirect every non-canonical host and protocol variant to the canonical origin with a 301, and declare a self-referencing canonical on every page.
  • #8 EN-02 Product and service identity: Give each offering one page with a stable URL, a one-sentence definition, a named audience, and structured data that ties it to the organization.
  • #15 TE-02 Expertise and credential support: State the issuing body, the scope, the date, and the entity the credential belongs to next to every credential claim.
  • #17 SD-01 Valid core entities: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  • #18 CI-03 Stable passage structure: Give every page one H1, a descriptive H2 for each distinct answer, and a stable id on each H2 so a passage can be linked directly.
  • #22 TE-01 Ownership and accountability: Name the operating entity, the responsible people, and a working contact path on a linked page, and mirror those facts in structured data.
  • #23 CI-05 Content freshness signals: Show a visible published and updated date on every article, and emit the same values as datePublished and dateModified in structured data.
  • #25 TE-04 Policy and limitation clarity: Publish a dated privacy policy covering analytics and form data, and a terms or engagement-scope page that matches what is actually sold.
  • #26 CR-03 Sitemap quality: Correct the entries identified in the evidence and ensure lastmod reflects real content changes.
  • #28 EN-03 People and authorship identity: Attribute every substantive page to a named person with a linked biography, role, and credentials, and connect that person to the organization in structured data.
  • #29 EN-04 External identity reconciliation: Link every owned profile from the site and declare it in sameAs, and retire or update profiles carrying a former brand.
  • #30 CR-05 Rendered content availability: Serve primary claims, headings, navigation, and supporting evidence in the initial HTML response.

Days 17-30: coverage, comparison, and measurement

  • #1 CI-02 Claim support: For each material claim, put its provenance next to it. An external source is strongest. Where none exists -- which is the normal case for a private operating figure -- a first-person attestation is still a source: name who is asserting it, the period it covers, the scope it covers, and the basis ("our internal figures", "verifiable on reference check"). Removing a true claim is the last resort, not the first.
  • #3 CI-01 Direct answer passages: Give each priority question its own heading and a self-contained two-to-four sentence answer directly beneath it.
  • #5 MR-01 Baseline question set: Agree and version a question set covering buying questions, brand variations, comparison questions, and geography, dated before the first measurement.
  • #6 TA-01 Priority-question coverage: Write one substantive owning page for each uncovered priority question, and consolidate pages that compete for the same question.
  • #10 TA-03 Comparative and decision content: Publish one honest comparison or decision page with a criteria table, and state explicitly where the offering is not the right fit.
  • #11 TE-03 Customer and outcome evidence: Publish at least one case example with the situation, the intervention, the measurement window, the baseline, and the result, with the customer's permission recorded.
  • #12 MR-03 Recheck discipline: Fix a recheck cadence and record the rubric version, crawl sample, and question set used for each run so score movement can be attributed to the site rather than the method.
  • #14 TA-02 First-hand experience: Publish the method, the numbers, and the artifact behind at least one claim per topic: a repository, a dataset, a template, or a documented before-and-after measurement.
  • #20 SD-03 Page-specific markup: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  • #21 SD-04 Metadata consistency: Nothing to act on from this result. Re-run against a sample that covers the site before treating this check as settled.
  • #24 SD-02 Entity relationships: Give every entity a stable @id, reference the same identifiers across pages, and add sameAs links to owned external profiles.
  • #27 TA-04 Internal topic relationships: Link every evidence and educational page from the commercial page it supports, and from a topic index.
  • #31 MR-02 Referral and conversion attribution: Configure a referral segment for AI answer surfaces and connect it to a defined qualified-outcome event, or record the implementation backlog to do so.

Measurement plan and limitations

Baseline question set

Analytics providers visible in public markup: google-analytics.com, googletagmanager.com.

Next steps

What this measurement cannot tell you

Limitations of this audit

  • This audit sampled 25 page(s) against a configured limit of 25 at a maximum depth of 2. Findings describe the sample, not every page on the site.
  • Scored against rubric version 0.8 using tool version adia/0.1.0. Score movement between runs can come from a rubric change as easily as a site change.
  • Collection used plain HTTP retrieval with no JavaScript execution. Content that appears only after client-side rendering was not observed.
  • Off-domain properties were not retrieved. The run was restricted to the authorized registrable domain.
  • No form was submitted, no authenticated content was accessed, and no state-changing request was made.
  • 9 check(s) are inconclusive and contribute no points in either direction: CR-01, CR-02, CR-05, CR-06, EN-04, SD-01, SD-03, SD-04, MR-02. Their 23 points were removed from the denominator rather than scored as zeroes.
  • Collection stopped at a configured bound (max_pages=25). A larger sample may change coverage-dependent findings.
  • 6 check(s) reached their top rating only because pages were left unread, and are recorded as inconclusive rather than as passes: CR-01, CR-02, CR-06, SD-01, SD-03, SD-04. Raising the page limit and re-running is what settles them; nothing about the site needs to change first.
  • This audit measures conditions a site can control against rubric version 0.8. It does not guarantee placement, ranking, citation, recommendation, traffic, leads, or revenue in any search engine or AI answer product, and a low score does not prove a site is absent from AI-generated answers.

Agent tooling, observed and not scored

An engine that cites you is reading. An agent that books your appointment is acting. This audit measures the first. WebMCP, the proposal for the second, lets a page register JavaScript functions an agent can call, through document.modelContext.registerTool().

None of the 25 sampled pages declares agent tooling. That is the ordinary state of the web today and it costs this audit nothing: no check gains or loses a point either way.

Where the standard stands

A Draft Community Group Report at the W3C Web Machine Learning Community Group, dated 15 September 2026, which states on its face that it is not a W3C Standard and is not on the W3C Standards Track.

WebMCP implementation state, read from the specification’s own implementation table on 17 September 2026
ImplementationState
Chromeorigin trial live in Chrome 149, running to 156
Edgeorigin trial live in Edge 150
ChatGPT Desktopsupported
Braveexperimental, in Leo
Firefoxunder standards review, no support
Safariunder standards review, no support

Read from the specification and its own implementation table on 17 September 2026. Two things are worth knowing before anybody acts on a blog post about this. Much of the secondary coverage says the API is navigator.modelContext; the specification and Chrome’s documentation both say document.modelContext. And the declarative HTML form syntax that several demos show is section 4.3 of the specification, which currently reads, in full, that it is a TODO.

What we are not telling you

We are not telling you to adopt this, and we are not telling you it would bring you agent traffic. Nobody has published usage data that would support the second claim, and the adoption figures in circulation carry no methodology anywhere they appear. Exposing callable tools also widens what an agent can do on your site while prompt injection is unsettled, and we cannot see your authorisation model from the outside. When this is worth acting on, it will be worth acting on with your engineers rather than on our say-so.

Machine-readable JSON appendix

The complete audit result, including every evidence record, is published alongside this report as audit-result.json. That file is the source of truth; this page is rendered from it and adds no facts.

Evidence index (37 records)
Every observation captured during this run.
Evidence IDMethodURLStatusOutcomeObserved (UTC)Content hashChecks
ev_631ef8e431bf6b57robots_parsehttps://chrisbrock.io/robots.txt200success2026-09-01T11:47:18+00:00sha256:f41f6a3d6865a6bf…CR-02, CR-03, AC-01
ev_7319da06a1333440sitemap_parsehttps://chrisbrock.io/sitemap-index.xml200success2026-09-01T11:47:18+00:00sha256:c06115fa22017971…CR-03
ev_01466bf10e8fce8dsitemap_parsehttps://chrisbrock.io/sitemap-index.xml200success2026-09-01T11:47:18+00:00sha256:c06115fa22017971…CR-03
ev_123930a05a4a98e9sitemap_parsehttps://chrisbrock.io/sitemap_index.xml404failed2026-09-01T11:47:18+00:00sha256:c6b0a1d5eb0e8e13…CR-03
ev_dd50e9e4dd2ac140sitemap_parsehttps://chrisbrock.io/sitemap-0.xml200success2026-09-01T11:47:18+00:00sha256:86557663cae1688f…CR-03
ev_26dae81084395fbdhtml_parsehttps://chrisbrock.io/200success2026-09-01T11:47:18+00:00sha256:dde66b6ddc45cfb9…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_181923593d69d1adhtml_parsehttps://chrisbrock.io/about200success2026-09-01T11:47:18+00:00sha256:8fd60152f45b5e76…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_b43822a0840b8666html_parsehttps://chrisbrock.io/blog200success2026-09-01T11:47:18+00:00sha256:8fd0fb1b82404cf6…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_184a171e0dda1ab0html_parsehttps://chrisbrock.io/contact200success2026-09-01T11:47:18+00:00sha256:84f3c350f5a923d3…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_541bd768a7b66d4bhtml_parsehttps://chrisbrock.io/privacy200success2026-09-01T11:47:18+00:00sha256:8175e82717228c73…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_6a89d676c8230970html_parsehttps://chrisbrock.io/reading200success2026-09-01T11:47:18+00:00sha256:df9fe5e0b17fcf08…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_5072982e68a4e927html_parsehttps://chrisbrock.io/situations200success2026-09-01T11:47:18+00:00sha256:396bea4ab2ecbd38…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_9e45852684409986html_parsehttps://chrisbrock.io/blog/shadow-it-and-your-data200success2026-09-01T11:47:18+00:00sha256:8ae6f2b358b9b0e2…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_2fb18f0bbccc0198html_parsehttps://chrisbrock.io/privacy/maildash200success2026-09-01T11:47:18+00:00sha256:c7cfc80eb11d2588…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_42ad79c3cdd902f7html_parsehttps://chrisbrock.io/reading/traction200success2026-09-01T11:47:18+00:00sha256:cb201c4255c9a705…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_cfcdec573a69b770html_parsehttps://chrisbrock.io/situations/ai-roi200success2026-09-01T11:47:18+00:00sha256:ce39db364d85d73f…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_22aab64d65addb94html_parsehttps://chrisbrock.io/blog/agentic-ai-pilot-to-production200success2026-09-01T11:47:18+00:00sha256:0c79c1c4af34883f…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_f81e14d21134620ehtml_parsehttps://chrisbrock.io/reading/sideline-ceo200success2026-09-01T11:47:18+00:00sha256:a47d33d1d65f2279…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_493432e0431471c5html_parsehttps://chrisbrock.io/situations/fractional-cio200success2026-09-01T11:47:18+00:00sha256:4aa2076e2255aeff…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_b3216608f547331chtml_parsehttps://chrisbrock.io/blog/shadow-ai-is-the-new-shadow-it200success2026-09-01T11:47:18+00:00sha256:fb11dd5d6573b8af…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_92e04db85e08c72chtml_parsehttps://chrisbrock.io/reading/the-quotient200success2026-09-01T11:47:18+00:00sha256:2e598dc2997bc987…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_124bb3356f581f83html_parsehttps://chrisbrock.io/situations/it-turnaround-msp200success2026-09-01T11:47:18+00:00sha256:d384f253d32d29f3…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_3c94dde2e19fce80html_parsehttps://chrisbrock.io/blog/measuring-ai-roi-beyond-time-saved200success2026-09-01T11:47:18+00:00sha256:e1b79695c6df86d8…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_07419163d05b612ehtml_parsehttps://chrisbrock.io/reading/atomic-habits200success2026-09-01T11:47:18+00:00sha256:5c70a6bf8d89b51e…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_2e5a7605661d081bhtml_parsehttps://chrisbrock.io/situations/ma-technology-diligence200success2026-09-01T11:47:18+00:00sha256:77a4dd47e20e0adb…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_6ce9d82c3f1f3a9bhtml_parsehttps://chrisbrock.io/blog/fostering-innovation-within-it-teams200success2026-09-01T11:47:18+00:00sha256:cc0d3b059a160a9a…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_963d1c070ef816bchtml_parsehttps://chrisbrock.io/reading/eat-that-frog200success2026-09-01T11:47:18+00:00sha256:5f322975e46f6201…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_ad623e7987b1aaa7html_parsehttps://chrisbrock.io/situations/soc2-iso27001-hipaa-readiness200success2026-09-01T11:47:18+00:00sha256:f2d4bd26ab43520f…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_8c273ccb899617behtml_parsehttps://chrisbrock.io/blog/cio-role-ai-governance-building-trust200success2026-09-01T11:47:18+00:00sha256:badc3368dd32a33b…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_d574e33342883c63html_parsehttps://chrisbrock.io/reading/good-to-great200success2026-09-01T11:47:18+00:00sha256:85d70e03707a8bc9…CR-01, CR-04, CR-05, CI-01, CI-02, CI-03
ev_cd0267b89a631aa6http_gethttps://chrisbrock.io/llms.txt200success2026-09-01T11:47:18+00:00sha256:35dbc8fbb1cc54d8…AC-02
ev_de23964c65dfad3fhttp_gethttps://chrisbrock.io/llms-full.txt404failed2026-09-01T11:47:18+00:00sha256:c6b0a1d5eb0e8e13…AC-02
ev_5a2b08d3801bcebahttp_gethttps://chrisbrock.io/ai.txt404failed2026-09-01T11:47:18+00:00sha256:c6b0a1d5eb0e8e13…AC-02
ev_bbb2e4646545eeb3http_gethttps://chrisbrock.io/.well-known/security.txt200success2026-09-01T11:47:18+00:00sha256:5335613b9eef310f…AC-02
ev_9b25ae017e84a61fhttp_headhttp://chrisbrock.io/200success2026-09-01T11:47:18+00:00sha256:e3b0c44298fc1c14…CR-04
ev_522c649122f568cchttp_headhttps://www.chrisbrock.io/200success2026-09-01T11:47:18+00:00sha256:e3b0c44298fc1c14…CR-04
ev_c0e6b54fd0fbfc3cderived_analysishttps://chrisbrock.io/—success2026-09-01T11:47:18+00:00sha256:3e5202d9e6da4411…CR-01, CR-03, TA-01, TA-04

Scoring methodology and rating scale

Rubric version 0.8 carries 100 points across 8 dimensions and 33 checks. A check marked not applicable, or left inconclusive, is removed from the denominator rather than scored as zero.

Rating scale.
RatingPoints awardedMeaning
Complete100% of the check's pointsClear, consistent, and evidenced implementation
Substantial75% of the check's pointsStrong implementation with limited gaps
Partial50% of the check's pointsUseful implementation with material gaps
Minimal25% of the check's pointsWeak or inconsistent evidence
Missing0% of the check's pointsNo support found or a reproducible failure exists
InconclusiveUnscored; removed from the denominatorCollection or scope prevents a reliable decision
Not applicableUnscored; removed from the denominatorThe check does not apply to this target; its points leave the denominator

Scoring rules

  1. Every awarded or deducted point requires captured evidence.
  2. Evidence must include the URL, observation time, collection method, and relevant excerpt or machine result.
  3. Deterministic checks run before LLM interpretation.
  4. An LLM may summarize evidence but may not create a fact, credential, relationship, or technical result.
  5. A check marked not applicable removes its points from the denominator. The report must show the adjusted denominator.
  6. A technical failure to retrieve evidence is not automatically a customer failure. Record it as inconclusive until reproduced.
  7. Scores compare a site to this rubric version, not to an absolute guarantee of AI visibility.

The interpretation is advisory. A high score does not guarantee visibility, citation, sentiment, traffic, or revenue. A low score does not prove that a site is absent from AI-generated answers.

Audit record

What this report was produced from. A reader who wants to reproduce or challenge a finding starts here.

Provenance for this run.
FieldValue
Audited domainchrisbrock.io
Audit identifieraud_20260901T114635Z_7f382c48
Audit date (UTC)2026-09-01T11:47:18+00:00
Rubric version0.8
Tool versionadia/0.1.0
OperatorChris Brock LLC
ReviewerChris Brock (signed 2026-08-30); assisted review by Claude Code
Authorized byChris Brock (owner, 2026-08-28)
Pages sampled25 of a 25 page limit, depth 2
Collection methodsbounded HTTP GET/HEAD over the standard library, robots.txt parsing, XML sitemap parsing, HTML parsing, JSON-LD parsing, operator review
Crawler user agentChrisBrockLLC-AIDiscoverabilityAudit/0.1 (+https://chrisbrock.io/crawler; operator-run audit; contact via site)
Excluded pathsNone
Report retention2027-08-28