# Toothbrushes: research notes

Date: 2026-10-25. **Scope: manual (non-powered) toothbrushes for home oral hygiene — adult, kids and orthodontic/compact-head variants.** The existing add-on schema comment is explicit: `/Users/amnbh/Desktop/dev/zamana/zamana-expertise/data/schema-parts/supplies/personal/add-ons/toothbrush.jsonc` opens with "Toothbrushes — manual only. Electric/battery toothbrushes and their replacement heads -> machines/personal-devices/electric_toothbrush." So electric/powered toothbrushes and their replacement heads are a different vertical (`machines`) entirely and are out of scope here, not a sibling leaf to defer to. Checked `catalog.json` for siblings under `supplies > personal`: `flosses` is its own planned leaf, so floss, floss picks, water flossers and interdental brushes belong there, not here — I have not written anything about them. No sibling exists for tongue scrapers, mouthwash, or toothbrush holders/travel cases either; those are accessories, not toothbrushes, and I have left them out rather than folding them in.

Quote labels: **verbatim** = I fetched the raw page with curl/pdftotext and the sentence is in that raw text; **fetched excerpt** = a WebFetch model summary, not raw text I saw myself; **search excerpt** = from a search-engine result snippet only. WebSearch reported its session budget was already exhausted (200 of 200) on the first query, before any of my queries ran, so every source below came from direct curl/WebFetch against a known URL, links found inside fetched pages, or the openFDA/PubMed/PMC APIs — no search-engine results were used anywhere in this register.

## Seed

Seed run output (verbatim, `scripts/seed.py --category toothbrushes`):
```
=== Example entry (from an unrelated category) ===
category: olive-oil
what this shows: a facet that experts rank first, that almost no listing carries, and that is expensive to backfill...
<example id="harvest_date" ...>  (olive oil harvest date, with derived metric "months_since_harvest")
=== Persona ===
An allergist, who thinks in exposure, dose and what is hidden in the ingredients list
```

1. What is the toothbrushes equivalent of olive oil's harvest date (a decay clock almost no listing carries)? The candidate is **time since the brush was first used** — the ADA page (verbatim, fetched by curl) says "Toothbrushes should be replaced approximately every three to four months or more often if the bristles become matted or frayed," and a brush's own wear is invisible on any listing because it is a fact about the buyer's use, not the product. Did not survive as a facet: no listing or spec sheet carries a "replace by" date the way a bottle carries a harvest date, and unlike olive oil this isn't a property of the SKU at all — it resets to zero for every buyer regardless of which product they bought. It survives only as background knowledge for a derived metric and a vocabulary note, not as a facet with values that differ product to product.
2. What would an allergist notice first that a typical buyer would not? Not an allergen in the usual sense (toothbrushes have no ingredient list), but the allergist's "what's hidden in what touches the body" instinct maps onto **what the bristle is actually made of once you look past "soft/medium/firm."** Wikipedia (verbatim, fetched by curl) states bristles are "commonly made of nylon (which, while not biodegradable like plastic, may still be recycled), bamboo viscose, or boar bristles," and Brush with Bamboo's own product page (verbatim, fetched by curl) markets bristles "made from 100% Castor Bean Oil" with a "USDA Certified 100% Biobased" claim — i.e. most "eco" handles still carry an ordinary petroleum nylon bristle, and the plant-based bristle is the exception, not the rule. This survived the data check (two independent sources, Wikipedia and a brand's own spec page) and became the `bristle_material` facet and the handle/bristle trade-off below. Dropped: a literal allergy facet (latex, nickel) — manual toothbrush handles are essentially all thermoplastic or wood, no load-bearing rubber or metal part touches the mouth, and I found no sourced claim of common toothbrush-contact allergy worth a facet.

## Sources and what each supports

- **ADA Oral Health Topics: Toothbrushes** (`https://www.ada.org/resources/research/science-and-research-institute/oral-health-topics/toothbrushes`, standards_body, accessed 2026-10-25). Fetched twice: once via WebFetch (fetched excerpt) and once with curl + tag-stripping into raw text, saved to the scratchpad as `ada_toothbrush.html` — all claims below are **verbatim** against that raw text.
  - "The ADA recommends use of a toothbrush with soft bristles because they minimize the risk of gingival abrasion." → `bristle_firmness` why-experts-care, and the firmness judgement.
  - "Toothbrushes should be replaced approximately every three to four months or more often if the bristles become matted or frayed. The effectiveness of the brush decreases as the bristles become worn." → background for `cost_per_brush` reasoning and the vocabulary entry; **single-sourced** (I could not reach a second independent body stating the same 3–4 month figure; CDC and Cleveland Clinic pages 404'd, NHS's equivalent page does not give a number — see below).
  - "The toothbrush should have soft bristles and a head small enough to easily maneuver inside the child's mouth, reaching all tooth surfaces." → `head_size` "kids" value and its link to `bristle_firmness`.
  - Seal criteria: "All toothbrush components are safe for use in the mouth / Bristles are free of sharp or jagged edges and endpoints / Handle material demonstrates durability under normal use / Bristles won't fall out with normal use / The toothbrush can be used without supervision by the average adult to provide a significant decrease in mild gum disease and plaque." → `ada_seal_or_equivalent` facet and the filament-safety judgement.
  - "In addition, ANSI/ADA standards are used for testing the safety of manual toothbrushes" with citation "American National Standards Institute/American Dental Association. Standard No. 119 Manual Toothbrushes." → the governing-standard judgement, corroborated by the PMC paper below.
  - "One systematic review found that toothbrushes with either multi-level bristles or angled bristles perform better than the conventional flat-trimmed bristles in removing plaque." → `bristle_trim_pattern` facet. **Single-sourced** as a specific performance claim — the ADA page's own footnote numbering for this sentence points to a reference titled as a design catalogue rather than a trial, so I am citing the ADA page's own summary of it, not the underlying trial, and I flag this in the facet's judgement as confidence medium.

- **Bowers AN, Tyrakowski CM, Spomer J, Gopal P. "Effect of vertical load and speed on toothbrush stiffness measurements." JADA Foundational Science 2023;2:100023** (PMC13229071, academic, accessed 2026-10-25, **verbatim** — fetched raw via `https://www.ncbi.nlm.nih.gov/pmc/articles/PMC13229071/` with curl + tag-stripping, saved as `pmc1.html`).
  - "The international standards for testing toothbrushes for safety and efficacy are International Organization for Standardization (ISO) 22254, ISO 20126, and ISO 20127. American National Standards (ANSI)/American Dental Association (ADA) 119 is an adoption of ISO 22254 and ISO 20126 for manual toothbrushes, and ANSI/ADA 120 is an adoption of ISO 20127 for powered toothbrushes." → the governing-standard judgement, second source alongside the ADA page itself (which names ANSI/ADA 119 without the ISO numbers).
  - "Although there are no international standard definitions for the terms soft, medium, or hard about toothbrush bristles, some manufacturers label their toothbrushes using this terminology." → the firmness-not-standardized judgement. **Single-sourced** for this exact claim; I looked for a second source and did not find one I could fetch (see "Could not reach" below), so confidence is medium rather than high and I say so in the judgement.
  - "Resistance to deflection refers to the resisting force of the tufts to deflection under a force of 5 N, applied at right angles to the tuft hole plane" and the stiffness formula S_tf = F/A (force over tufted area, N/cm²) → mechanism text on how firmness is actually measured in the standard, as opposed to the brand's own "soft/medium/firm" label.
  - "The American National Standards (ANSI)/ADA and International Organization for Standardization (ISO) standard methods for determining the stiffness of toothbrushes are only applicable to a manual flat-trim toothbrush design" and the conclusion "Most modern toothbrushes cannot withstand the VL required in the ANSI/ADA standard" → the judgement that the standardized stiffness test does not cleanly cover most current head designs. Single source; flagged as its own judgement with medium confidence.

- **NHS, "How to keep your teeth clean"** (`https://www.nhs.uk/live-well/healthy-teeth-and-gums/how-to-keep-your-teeth-clean/`, primer, accessed 2026-10-25, **verbatim** via curl, saved as `nhs1.html`).
  - "For most adults, a toothbrush with a small head and a compact, angled arrangement of long and short round-end bristles is fine. Medium or soft bristles are best for most people." → second, independent source for the governing-standard judgement (round-end bristles = filament end-rounding), and the firmness-disagreement judgement (NHS allows medium; ADA recommends soft specifically). Also informs the `head_size` why-experts-care: a national health service's default steer is toward a *small* head for adults, not "standard."
  - This page does not state a replacement-interval number, so it does not serve as the second source for the 3–4 month figure.

- **FDA openFDA device classification API**, product code EFW (`https://api.fda.gov/device/classification.json?search=device_name:toothbrush`, regulator, accessed 2026-10-25, **verbatim** — raw JSON read directly, not summarised).
  - Returns `"device_name": "Toothbrush, Manual"`, `"device_class": "1"`. → supports a short regulatory-status line (manual toothbrushes are FDA Class I, the lowest-risk device class, versus "Powered Radiofrequency Toothbrush" at Class II) and corroborates that the product itself carries limited inherent hazard — the risk in this category is technique/bristle-stiffness abrasion, not device malfunction.

- **Wikipedia, "Toothbrush"** (`https://en.wikipedia.org/wiki/Toothbrush`, primer, accessed 2026-10-25, **verbatim** via curl, saved as `wiki_tb.html`).
  - "Bristles are commonly made of nylon (which, while not biodegradable like plastic, may still be recycled), bamboo viscose, or boar bristles." → `bristle_material` facet values and the handle/bristle trade-off.
  - "Natural animal bristles were also replaced by synthetic fibers, usually nylon, by DuPont in 1938." → one line of mechanism/history.
  - "Over 1 billion toothbrushes are discarded into landfills annually in the United States alone." → single-sourced waste figure, used only as one line of context in the mechanism section, not as a facet or metric; flagged single-source.

- **Brush with Bamboo, Adult toothbrush product page** (`https://www.brushwithbamboo.com/shop/bamboo-toothbrush-adult/`, spec_sheet, accessed 2026-10-25, **verbatim** via curl, saved as `bwb.html`).
  - "Standard soft bristles made from 100% Castor Bean Oil. USDA Certified 100% Biobased. Bristles made in the European Union. FSC® certified bamboo handle." → `bristle_material` and `handle_material` values, and the counter-example in the eco trade-off (most bamboo brushes keep nylon bristles; this brand is the sourced exception).
  - Listed spec fields on the page: Weight, Dimensions, "Number of brushes" (pack count), "Bristle Type" (their firmness label). → `listing_field_hint` evidence for where pack count and firmness sit on a brand's own page.

### Could not reach / not used
- iso.org (standard 20126/22254/20127 pages) — Cloudflare bot-challenge, returns a JS challenge page, no text (curl and WebFetch both blocked).
- web.archive.org snapshot of the iso.org page — rate-limited ("suspected abusive bot traffic") on the wrapped URL; the unwrapped `id_` snapshot loaded but was for a different ISO standard (I had the wrong document number), and I did not keep guessing numbers once the PMC paper gave the right ones directly.
- Colgate "Selecting a toothbrush" page, SGS's ISO 20126/22254 testing-service page, CDC oral health page, Cleveland Clinic toothbrush page, Oral-B and GUM brand product pages, Humble Co. product page — all 403/404/blocked on both curl and WebFetch.
- Amazon/Walmart/Target manual-toothbrush listings — not attempted; every earlier run in `checks.md` reports these block fetches, so I went straight to brand spec pages and standards/health-body sources instead, per the brief.
- Bing and DuckDuckGo via raw curl (attempted only after WebSearch reported its budget exhausted, as a substitute for search, not for citation) — DuckDuckGo returned a bot CAPTCHA; Bing returned an unrelated/corrupted result page. I did not use anything from either as a source; I mention the attempt only because the brief asked me to say which source types I could not reach.
- A second independent source for the ADA's "replace every 3–4 months" figure and for the PMC paper's "no standard definition of soft/medium/hard" finding — both remain single-sourced. Neither is a hard facet value in the JSON (the replacement interval isn't a per-product fact, and the firmness-labeling claim is a judgement, not a numeric facet), so neither violates the "two sources for every number in the JSON" rule, but I flag both here and in the judgements themselves.

## Data points used for derived metrics

`cost_per_brush` = `price / sizing.pack_count`. Both `price` and `pack_count` are existing standard fields (price is system-wide; `pack_count` is in `supplies-standard.jsonc`), not researched claims, so this needs no citation beyond the fact that manual toothbrushes are commonly sold in multi-packs — visible on the Brush with Bamboo page itself ("Number of brushes: 4-Pack, 12-Pack, 36-Pack") and a matter of common knowledge for anyone who has bought toothbrushes at a pharmacy. I deliberately did not build a second metric ("annual replacement cost") on top of the ADA's single-sourced 3–4-month figure — that would bake an unconfirmed number into a formula, so it stays as a sentence in the vocabulary section instead, clearly attributed to the ADA alone.

## Against the existing add-on schema

Current file: `data/schema-parts/supplies/personal/add-ons/toothbrush.jsonc` — two fields only:
```
bristle_firmness: enum [extra_soft, soft, medium, firm, unspecified] | null
head_size: enum [compact, standard, large, kids, not_applicable, unspecified] | null
```

| This register's facet | Kind proposed | vs. current schema | Note |
|---|---|---|---|
| `bristle_firmness` | categorical (existing) | **Keep as is.** | Matches the add-on field exactly, value for value. It is also the one facet with a real safety story (gingival/enamel abrasion), so it earns its place as a hard filter, not just an annotation. |
| `head_size` | categorical (existing) | **Keep as is.** | Matches the add-on field exactly. NHS's own default steer is toward a *small* head for most adults, which the current enum's `compact`/`standard` split already allows for — no change needed. |
| `handle_material` | categorical, new | **Propose adding** as a hard filter. | Not visually-derived in the AGENTS.md rule-1 sense for the claim that matters: "bamboo" vs "recycled ocean plastic" vs "virgin plastic" often look alike in a photo (painted plastic can mimic wood), so the text claim is the only reliable signal, and sustainability-minded buyers do filter on it hard. This is new; nothing like it exists in the add-on or in `personal-standard.jsonc`. |
| `ada_seal_or_equivalent` | boolean | **Recommend against a new structured field.** | AGENTS.md rule 5 lists certifications as explicitly dead — "cut on sight" — under the current regime. I kept it as a facet in this register because it is the single clearest safety signal buyers can act on, but the right home for it is `high_signal_markdown` (Jev extracts "ADA Seal of Acceptance" text/logo mentions), not a new boolean column, so the structured schema should not grow a field for this. |
| `bristle_material` | categorical, researched | **Recommend against a new structured field, for now.** | Backfill is inconsistent — most listings say nothing more specific than "nylon bristles" or nothing at all, and the real claim (e.g. castor-bean-oil bristle vs ordinary nylon) usually only exists on the few eco brands' own pages. Rule 4's bar for "category quality currency" is fields "we would HAPPILY commit to augmenting on every row" — I would not commit to that here, so this stays `researched`/annotation in the register and markdown-only in the schema, revisited if a later audit finds it reliably present on brand pages across more than a handful of SKUs. |
| `bristle_trim_pattern` (flat-trim vs multi-level vs angled) | categorical | **Recommend against a schema field — visually derived.** | This is a shape-of-the-bristle-tips fact, which AGENTS.md rule 1 puts squarely in the image/vision pipeline's territory ("Anything a photo answers... must not be added as a schema field"). It stays in this register as an annotation because an expert does look at it, but it is explicitly image-pipeline material, not text-extraction material. |

Noise the add-on schema does **not** currently carry and that this register does not propose adding either: nothing — the add-on is already minimal (two fields) and I found no field in it that this register considers noise. The two existing fields both earned their place independently in this research.

## Branches

- `handle_material` → when `bamboo`: `then_ask: [bristle_material]`. Traced to: the Wikipedia sentence "Bristles are commonly made of nylon (which, while not biodegradable like plastic...), bamboo viscose, or boar bristles" plus the Brush with Bamboo page's own claim that its bristles are "100% Castor Bean Oil... USDA Certified 100% Biobased." Together these establish that a bamboo *handle* says nothing about the bristle material — most bamboo-handled brushes still carry ordinary nylon bristles that must be snapped off before composting, and a few (sourced: Brush with Bamboo) do not. So once a buyer has said they want the eco handle, whether the bristles are also plant-based becomes the next live question; for a plastic-handle buyer it does not, because "will this fully compost" was never the question. No other branch legs are claimed for this split.
- No branch is added on `bristle_firmness` or `head_size`. I considered a `head_size: kids` → "bristle_firmness defaults to soft" branch, but the schema's branch mechanism changes which *facets* get asked next, not which *values* of the same facet are implied, and ADA's kids guidance ("soft bristles and a head small enough...") is a single sentence recommending both together, not a rule that remaining values (medium, firm) stop existing for kids' products in the catalog (Brush with Bamboo sells a kids' line in the same "Standard Soft" firmness as the adult line, so firmness is still a real, separate choice even once head size is answered as "kids"). I dropped this branch rather than force it into a shape the schema and the evidence do not support.
- No branch on `ada_seal_or_equivalent` or `bristle_material` as split-adjacent facets — neither is a split, and nothing in the sources says an answer to one changes whether the other is asked.

## Trimmed detail

- The PMC paper's full method (comparing vertical-load and brushing-table-velocity settings on a stiffness-testing machine) is far more detail than a buyer needs; the register keeps only the two conclusions that matter to a buyer-facing judgement (firmness labels aren't standardized; the standard test method assumes a flat-trim head that most modern brushes no longer have) and drops the engineering detail about 10–50 mm/s brushing-table velocity and 3–5 N vertical-load ranges.
- FDA's openFDA record also lists `"MMD": "Toothbrush, Ionic, Battery-Powered"` as Class I and `"QMJ": "Powered Radiofrequency Toothbrush"` as Class II; I did not pull these into the register because both are powered devices, out of scope per the add-on's own scope line.
- The NHS page's full fluoride-concentration guidance (1,350 ppm for adults, children's toothpaste guidance) is about toothpaste, not toothbrushes, and is dropped entirely as off-topic for this register.
- Wikipedia's toothbrush history section (celluloid handles, hog bristles sourced from Siberia, the 1954 Broxodent) is colour, not something a buyer acts on; only the nylon-since-1938 line survives, as one clause in the mechanism section, because it explains why "nylon" is the default and "boar bristle"/"bamboo viscose" read as the historical exception rather than an upgrade.

## Corrections

None yet — this is the first pass on this category, built from verified direct fetches throughout, so there was nothing to correct after the fact. If a blind content check finds an issue, log it here.

## Corrections (2026-10-26)

- Rewrote `mechanism.plain`'s safety-standard sentence: it no longer states ANSI/ADA 119 itself requires edge-free filaments (that is an ADA Seal of Acceptance submission criterion); the standard is now described only as setting the stiffness test. This also removes the ISO 22254/20126 detail from mechanism, so `wikipedia_toothbrush` is no longer co-cited with a claim it does not support (check.md Part A #4 and #5).
- Softened `head_size.why_experts_care`: now says the NHS calls a small head "fine" for most adults, and states it does not contrast this against "standard," instead of implying the NHS makes that contrast (check.md Part A #3).
- Widened `handle_material`'s split question and `cold_start_question` from a bamboo/plastic binary to all four facet values (plastic, bamboo, recycled plastic, another material), so the question maps 1:1 onto the facet's values (check.md Part B).
- Added a clause to `bristle_material.why_experts_care` stating it is not novice-answerable, so the bamboo branch shows it as an annotation rather than asking it as a question (check.md Part C).
- Dropped the `filter` role from `ada_seal_or_equivalent`, keeping `annotation` only, resolving the conflict with this file's own recommendation against a structured field for it (check.md Part D).
- Added to the firmness-not-standardized judgement's note that the source's own word is "hard," not "firm" (check.md Part A #6, minor).
- Added a `backfill_note` to `bristle_trim_pattern` stating the assumed default (flat-trim) when a listing title is silent (check.md Part D, minor).
