Build logTopical Content7 min read

NCS Checker: a Chrome extension that scores content the way AI search reads it

The build story of the free extension that runs the Non-Commodity Score on any page, and where the model is honestly weak, shown on our own articles.

Answer first

NCS Checker is a free Chrome extension by Laurelin Labs that runs the Non-Commodity Score on the page you are viewing. Two vectors, empirical telemetry and entity connectivity, compute instantly on your device with the same canonical maths as the site tool. Add your own Anthropic, OpenAI or Gemini key and it grades experiential evidence with a judge that quotes its proof; add your own DataForSEO credentials and it measures information gain against the live Google top 10 using in-browser embeddings. Laurelin Labs collects nothing, provider costs sit on your own accounts, and every result is labelled uncalibrated and arrives with its evidence.

Why put a content score in the browser toolbar?

AI answer engines do not rank pages, they extract passages. When ChatGPT, Gemini or an AI Overview answers a question, it lifts the specific, attributable claims and paraphrases everything else into anonymity. The Non-Commodity Score exists to measure which side of that line a page sits on, and until now it lived only on this site, one URL at a time. NCS Checker moves the same measurement to where content decisions actually happen: the browser tab where you are reading your own draft, a client page, or a competitor that keeps getting cited instead of you.

We checked the field before shipping: on 29 August 2026 a Chrome Web Store search for Non-Commodity returned zero content scoring extensions, so as far as we can verify, this is the first Non-Commodity Score in the store. One click grades the page you are on. No account, no crawl, no waiting. The two on-page vectors compute in under a second on your own device, and if you connect your own API keys, the extension measures all four vectors of the score, the same way the site tool does.

What do the four vectors measure?

The composite is a weighted blend of four signals, and the extension shows each with the evidence behind it rather than a bare number.

  • Information gain (weight 0.4): what the page says that the live Google top 10 for its topic does not already say. The extension pulls the ranking pages, splits everything into passages of at most 60 words, and measures novelty as one minus the closest cosine similarity to the competing corpus, counting only passages that clear a relevance floor of 0.35. High means you add substance; low means the corpus already said it.
  • Experiential evidence (0.2): first-hand actions, conditions and measured outcomes, graded by an AI judge that must quote its evidence in verbatim spans of up to 200 characters. Descriptions of facts score low; witnessed experiments score high.
  • Empirical telemetry (0.2): hard numbers, engineering units and data table rows, as a saturating density across the word count.
  • Entity connectivity (0.2): JSON-LD entities that resolve to external authorities via schema.org sameAs, plus outbound links to a fixed list of authoritative domains.
VectorWeightRuns whereCost per score
Information gain0.4Your browser, with your DataForSEO accountAbout $0.002 plus page fetches
Experiential evidence0.2Your AI provider, under your keyUnder $0.01 on a small model
Empirical telemetry0.2Your deviceFree
Entity connectivity0.2Your deviceFree

Vectors the extension cannot measure are shown as not measured and their weight is redistributed, never guessed. The composite maps to four bands: Commodity below 25, Weak to 45, Developing to 65, Strong above. Every output is labelled uncalibrated: the score is directional, built for comparing drafts and competitors, not for absolute judgement.

What does it change for brands?

The practical shift is that content quality stops being an argument and becomes a measurement with evidence attached. An editor scoring a draft sees which passages the ranking corpus already says, quoted back with a redundancy figure, and which single passage is the most novel thing on the page. A brand comparing itself to a competitor sees why the competitor gets cited: more unit-bearing numbers, a first-hand test the judge can quote, an entity graph that resolves. We now run every page on this site through it before publishing, against a written gate, alongside the 330-check audit register: pass or the draft does not ship. The paid version of that discipline is the non-commodity content audit. The extension is the free, instant version of that discipline, and the calibrated server run remains the reference measurement.

The working pattern we have settled into has three moves. Before drafting, score the top three ranking pages for the target query to learn what the commodity layer already says, then plan the piece around what only you can add. After drafting, score your own page and edit against the evidence: cut the passages the redundancy figure attributes to the corpus, expand the one it marks most novel. Before publishing, run the judge and make sure your first-hand material is actually on the page as actions, conditions and measured outcomes, because experience that is not evidenced does not exist to a machine reader. None of this requires the extension, but the extension makes it a 60 second habit instead of an afternoon of tooling.

How do you set up the API keys?

Out of the box the extension needs nothing: install it, click the flask on any article, and the two on-page vectors plus a ranked list of hygiene fixes appear. Everything runs on your device and nothing is sent anywhere. The deeper vectors are opt-in, from the settings cog:

  • Experiential evidence needs an AI key from your own account. An Anthropic API key runs the canonical judge, identical to the site tool, and is tagged as such; OpenAI and Gemini keys run the same rubric on their models and are tagged approximate. A grade costs a fraction of a cent on your provider account. If Anthropic returns an error about a workspace id, either paste your workspace id into the settings field or create a key with the legacy, not-linked type.
  • Information gain needs your DataForSEO API credentials, pasted as the Base64 string their dashboard shows. Each score makes one live SERP request on your DataForSEO balance, about $0.002, then fetches up to 8 ranking pages for comparison. Chrome will ask for permission to read websites when you save: that grant exists solely to fetch those ranking pages during a score you started, and the extension hands it back automatically when you remove your credentials.

The first information gain run also downloads the embedding model once, about 35 MB, which your browser caches. After that a full four-vector score typically completes in under a minute with the popup open.

How was it built, and how do we know it matches?

The non-negotiable requirement was consistency: an NCS is only worth publishing if the same page gets the same score everywhere the score exists. The maths now lives in four mirrored implementations, the site tool, the content platform, the audit engine and this extension, with a shared version string and a rule that any change bumps all four. We tested the extension’s copy by transpiling the site’s canonical TypeScript scorer and asserting identical output on five fixture pages, including a deliberately prettified one whose closing tags break naive parsers: every score matched to six decimal places.

The hard engineering problem was information gain, which needs embeddings. The site runs them server-side; the extension runs the same 384-dimension gte-small model in your browser through a bundled WebAssembly runtime, under Chrome’s Manifest V3 rules, which forbid remote code. Everything executable ships in the 5.5 MB package; only the model weights, data rather than code, are fetched. We verified the in-browser embeddings against the server path on identical passages before shipping. One design line from the canonical scorer governed every decision:

A null is never scored as 1.0; that was the flaw in the v0 design this replaces.

lib/ncs-score.ts, the canonical NCS scorer, discussed in the teardown
Build measurementValue
Installed package size5.5 MB (19.7 MB unpacked, wasm runtime included)
Embedding modelgte-small, 384 dimensions, 35 MB one-off download
Equivalence test5 fixture pages, identical to 6 decimal places
Corpus per scoreUp to 8 ranking pages, 280 passages of 60 words
Judge input cap22,000 characters, 4 quoted spans of 200 characters
On-page vectorsUnder 1 second; full 4-vector run under 60 seconds

Anything unmeasured is excluded and the weights renormalise. An extension that quietly scored missing vectors as perfect would flatter every page it touched, and flattery is the one thing a gate must never do.

Where is it honestly weak? A live case study

The first full four-vector run we did was on our own WebMCP article, published four days earlier. It scored 29.8, Weak. The evidence was specific: information gain 0.11 with mean redundancy 0.89 against a corpus of 192 passages from 8 ranking pages, experiential evidence 0.15, telemetry 0.30 from 0 unit-bearing values and 8 bare numerics across 1,417 words, connectivity 0.82. The diagnosis wrote its own edit plan: the explainer material competed with the Chrome team’s own documentation and lost, while the genuinely novel passage, a consultant’s verdict no ranking page could write, was buried at the end.

That run also surfaced the model’s real limitations, which you should know before trusting any number. Telemetry is a proxy for machine-quotable specificity, so it under-reads legitimately number-free writing. The judge grades what is evidenced on the page, not what the author lived: a first-person build story without measured outcomes reads to it as description, which felt unfair until we noticed it was telling us exactly what to add. Information gain has a structural ceiling, because embedding similarity between on-topic texts starts high, so scores above 0.3 are rare and the Strong band, not 100, is the realistic target. And the whole composite is uncalibrated until enough logged runs exist to fit it to outcomes. We publish those caveats on every result because a measurement tool that hides its error bars is just marketing.

The extension is free, the code in the package is readable by anyone, and the full calibrated score stays on the site. Install it, score the page you care about most, and see which passages are yours alone. If the verdict stings, the topical content hub is where the repair work lives.

Frequently asked questions about ncs checker

Does NCS Checker send my data to Laurelin Labs?

No. By default nothing leaves your device and there is no account, server, analytics or telemetry. If you add your own AI key, the text of a page you score goes to the one provider you chose, under your key; if you add DataForSEO credentials, one SERP lookup per score uses your account. Laurelin Labs never sees your pages, scores or credentials, and removing your keys revokes the related permissions.

What does a score cost to run?

The extension is free and the two on-page vectors cost nothing. With your own keys, an experiential grade is under a cent on a small model such as Claude Haiku, and an information gain run is about $0.002 for the DataForSEO SERP lookup plus a one-off 35 MB embedding model download that your browser caches.

Why is my extension score different from the site tool for the same page?

The maths is identical and version-locked across both, so differences come from what was measured: the site tool always runs the judge, the SERP corpus changes between runs as rankings move, and the in-browser embedding runtime can drift from the server by a rounding margin. Both outputs are uncalibrated and directional, so compare trends and evidence, not decimals.