# Menstrual Cups & Discs: research notes

Date: 2026-10-25. Scope: reusable and single-use internal menstrual collection devices worn in the vagina — bell-shaped menstrual cups that seal by suction below the cervix, and menstrual discs that sit in the fornix behind the pubic bone with no suction. Covers both silicone/TPE/rubber reusable products and single-use polymer discs (Instead Softcup, Flex Disc). Excludes absorbent products (tampons, pads, period underwear — separate catalog entries `tampons` and `feminine-pads`) and menstrual sponges (not FDA-cleared as a device in this product code and not named in the taxonomy leaf; left out rather than silently folded in). One register, with `form` (cup vs disc) as a split rather than two documents, per the brief.

Quote labels: **verbatim** = I read the exact sentence myself, in raw text I fetched (curl, stripped of tags, or an openFDA JSON field) or a page I read directly. **fetched excerpt** = WebFetch's model summary of a page, reworded. **search excerpt** = a search-engine snippet only. No search-excerpt-only number went into `category.json`; WebSearch reported its budget exhausted after three queries (FDA classification, r/menstrualcups wiki, cup-vs-disc), so all research after that point used direct curl fetches, the openFDA API, NCBI PMC, and brand sites.

## Seed

Seed run (recorded verbatim, `seed.py --category menstrual-cups`):

- Example: olive-oil `harvest_date` — "a facet that experts rank first, that almost no listing carries, and that is expensive to backfill... list it, mark it researched, and limit backfill to the top of the catalog."
- Persona: "A pharmacist, who thinks in concentration, delivery form and interactions."

1. What is the menstrual-cups equivalent of `harvest_date`? Cervix height / vaginal birth history isn't a product fact at all — it is the single fact that decides which SKU fits, is almost never on a retail listing, and brands bury it in a size-chart "Recommended for" column rather than a structured field. Kept: it drives the `size` split, sourced to brand size charts. Also close: the FDA 510(k) clearance status of a specific brand/SKU — rarely stated on the retail listing itself, found only by searching the openFDA database, and the one safety-relevant fact buyers can't see on the page. Kept as the `fda_registered` facet.
2. What would a pharmacist notice first that a typical buyer wouldn't? Delivery form and interaction: that the product doesn't contain or release anything (unlike a tampon's fibers or a pad's absorbent gel) — it is a passive mechanical collector, so the relevant "interaction" is physical, not chemical: suction against the cervix can pull on an IUD's position during removal. A pharmacist thinking in "interactions" would flag the IUD+cup combination immediately, where a typical buyer would not think to ask. Kept: this became a judgement and a `form`-split rationale, sourced to van Eijk et al. (2019) and Saalt's own disc FAQ, not asserted from the seed alone — the seed only pointed me at the question, the data check (below) is what justified keeping it.

Dropped: nothing else from the seed; the pharmacist angle on "delivery form" also suggested asking about material biocompatibility testing (ISO 10993), which survived independently via the Flex Disc ingredient panel, so it isn't double-counted as seed-only.

## Sources and what each supports

All fetches below are **verbatim** (raw text I read myself with curl + tag-stripping, or JSON fields from the openFDA API) unless marked otherwise. Saved under `/private/tmp/claude-501/-Users-amnbh-Desktop-dev-zamana/94e1e673-5231-41fe-8b68-7a624ab5c8d8/scratchpad/menstrual-cups/`.

- **`fda_hhe_classification`** (regulator). `https://api.fda.gov/device/classification.json?search=device_name:menstrual` — raw JSON, read myself. Record: `product_code: "HHE", device_name: "Cup, Menstrual", device_class: "2", regulation_number: "884.5400", definition: "A menstrual cup is a receptacle placed in the vagina to collect menstrual flow."` Supports: menstrual cups are FDA Class II devices under 21 CFR 884.5400.
- **`fda_510k_hhe`** (regulator). `https://api.fda.gov/device/510k.json?search=product_code:HHE` — raw JSON. 16 clearances under product code HHE, including Mooncup, DivaCup, Meluna, Lunette, Femmycycle, Rhea Cup, and — critically — `SOFTCUP(TM):2` and `INSTEAD, SOFTCUP` (Ultrafem, 1993/1997), which is the disposable disc-shaped product that later became Flex Disc's category ancestor. Supports: the FDA does not have a separate product code for "disc" — discs (at least the Softcup/Instead lineage) are cleared under the same "Cup, Menstrual" code as bell-shaped cups, so `form` is a buyer-facing distinction the regulator does not itself split.
- **`vaneijk_2019_lancet_ph`** (academic). Van Eijk, Zulaika et al., "Menstrual cup use, leakage, acceptability, safety, and availability: a systematic review and meta-analysis," *Lancet Public Health* 2019, read via NCBI PMC (PMC6669309), full text fetched and stripped myself. Supports, each a direct quote I read:
  - "43 studies were eligible for analysis (3319 participants)... leakage was similar or lower for menstrual cups than for disposable pads or tampons (n=293)" (4 direct-comparison studies).
  - "73% ... of participants wished to continue use of the menstrual cup at study completion" (13 studies, pooled).
  - "Use of the menstrual cup showed no adverse effects on the vaginal flora (four studies, 507 women)."
  - "five of toxic shock syndrome after use of the menstrual cup" (across all 43 studies/3319 participants — this is case-report-level, not a population rate).
  - "the menstrual cup should be emptied every 4–12 h, depending on menstrual flow and type of cup."
  - Two cup types defined: "a vaginal cup, which is generally bell-shaped and placed in the vagina, and a cervical cup, which, like a diaphragm for contraception, is placed around the cervix" and (for the Instead Softcup specifically) "it opens to an oval shape, positioned between the posterior fornix and the notch behind the pubic bone, covering the cervix. Removal is accomplished by hooking a finger over the rim behind the pubic bone... This type of cup can also be worn during intercourse." This is the disc mechanism, described under the "cervical cup" heading.
  - "Difficulty with removal that required professional assistance... was reported 47 times for cervical cups (one participant from a cohort study, and 46 case reports) and twice for vaginal cups (both case reports)."
  - IUD: "Dislodgement of an intrauterine device was reported in 13 women who used the menstrual cup (eight in case reports, and five in one study) between 1 week and 13 months of insertion of the intrauterine device... authors also stress importance of releasing vacuum of menstrual cup before removal." Separately, a retrospective chart survey found "expulsion of an IUD occurs... menstrual cup five (4%) of 135, tampon 11 (2%) of 469, pads: seven (4%) of 169; cup vs tampon p=0·57, and cup vs pads: p=0·92" — not statistically significant. The review's own conclusion: "The combination of an IUD and use of a menstrual cup might need further study. Women with IUDs might need to consider an alternative option for either family planning or menstrual flow." Sources disagree (case series vs. null cohort result); I keep the caution because it's the review authors' own stated judgement, not mine.
  - TSS context number: "In the USA, the incidence of all types of toxic shock syndrome was around 0·8–3·4 per 100 000 population, whereas menstrual toxic shock syndrome was reported in 6–12 per 100 000 users of high-absorbency tampons in 1980... among women using female barrier contraceptives, which also use medical-grade silicone or latex products, toxic shock syndrome is low (approximately 2·25 cases per 100 000 users per year)." This is NOT a cup-specific population rate (none exists; too few cup-TSS cases to compute one) — it is the review's own analogy to similar-material barrier contraceptives, and I keep it labelled as an analogy, not a cup statistic.
- **`flex_cup_product_page`** (spec_sheet). `flexfits.com/products/flex-cup`, fetched and stripped myself. Supports: "Flex Cup is a reusable menstrual cup made from body-safe, medical-grade silicone... patented, adjustable pull-tab..."; "Size 1: Capacity of 2 super tampons (22mL)... 43mm x 46mm... Size 2: Capacity of 3 super tampons (30mL)... for experienced... users who prefer a larger size or who have had 2+ vaginal births. 46mm x 53mm"; "Wear it for up to 12 hours"; "One cup lasts up to 10 years"; "100% medical-grade silicone, <3% non-toxic carbon black."
- **`flex_disc_product_page`** (spec_sheet). `flexfits.com/products/flex-disc`, fetched and stripped myself. Supports: "12 or 24 single-use menstrual discs"; ingredients "Medical-grade polymer blend, mineral oil, <2% non-toxic carbon black..., <1% antioxidant polymer stabilizer. ISO 10993-TESTED. Not made with BPA, phthalates, or natural rubber latex"; "Flex Disc sits beneath the cervix in your fornix, which has fewer nerve endings"; "12-hour wear"; "holds the equivalent of 5+ super tampons."
- **`saalt_cup_product_page`** (spec_sheet). `saalt.com/products/saalt-cup`, fetched and stripped myself. Supports the full size chart: Regular 70mm, "normal to heavy flow, 3-4 tampon capacity, 30 ml capacity, Recommended for: High cervix, Post-childbirth"; Small, "light to normal flow, 2-3 tampon capacity, 25 ml capacity, Recommended for: Low cervix, First-time cup user and 18 years or older"; Teen 65mm, "light to normal flow, 1-2 tampon capacity, 15 ml capacity, Recommended for: Low cervix, Under 18 years old or petite physique." Also: "the slightly firmer silicone allows it to open easily when inserted. Great option for first-time users"; "Made of 100% medical-grade silicone... FDA registered & compliant"; "Sanitize your cup before first use and before or after each period... boiling your cup, wiping with 70% isopropyl alcohol, or using the Saalt Steamer"; "clean your cup at least once every 12 hours"; "reused for up to 10 years"; "Soft flex stem."
- **`saalt_disc_product_page`** (spec_sheet). `saalt.com/products/saalt-disc`, fetched and stripped myself. Supports disc size chart: Regular 66mm, "normal or heavy flow, 5-6 tampon capacity, 50 mL volume, Recommended for: New disc user, High cervix, Trouble keeping menstrual cups inserted"; Small 56mm, "light or normal flow, 3-4 tampon capacity, 30 mL volume, Recommended for: Light flow, Low cervix, Teens or young adults." Also, directly: "Because the Saalt Disc doesn't rely on suction to seal and positions behind your pubic bone, it's ideal for..."; "Does the Saalt Disc use suction like a menstrual cup? No."; "Can be worn with IUDs when used as directed"; "custom finger notch that makes removal a breeze"; "100% medical-grade silicone... FDA registered."
- **`lena_cup_product_page`** (spec_sheet). `lenacup.com/products/lena-cup`, fetched and stripped myself. Supports: two product lines, "Lena Original... designed to be slightly firmer for a reliable seal and easy-to-use fit" vs. "Lena Sensitive, made with softer silicone for extra comfort"; "100% medical-grade silicone... FDA-registered... Made in USA"; "up to 12 hours"; "Reusable for 10 years." This is the second independent brand confirming the firm/soft trade-off direction (Saalt: firmer = easier to open; Lena: firmer = reliable seal, softer = comfort) — two sources, same direction, kept as a judgement.
- **`putacupinit_comparison_chart`** (enthusiast_community). `putacupinit.com/menstrual-cup-comparison-chart/`, read via WebFetch summary (**fetched excerpt**, not verbatim — flagged accordingly, no numbers from this source went into the JSON). Supports only a qualitative point, used in notes not in `category.json` numerics: "There is no way to rate a cup by firmness on a scale without a way to concretely measure firmness... any without notes on firmness would be considered... average firmness." This is why `firmness` is marked `researched`, not `listing`, and why I did not invent a firmness scale or numeric range.

## Data points used for derived metrics

- Capacity-to-"super tampon" ratio: Flex Cup 22 mL / 2 tampons = 11 mL/tampon; 30 mL / 3 tampons = 10 mL/tampon. Saalt Cup Regular 30 mL / 3–4 tampons = 7.5–10 mL/tampon. Saalt Disc Regular 50 mL / 5–6 tampons = 8.3–10 mL/tampon. Four independent brand data points cluster at 8–11 mL per super tampon; I used "about 10 mL" for the `tampon_equivalent` derived metric and say so, rather than quoting a false-precision figure. Two sources (Flex, Saalt) agree on the figure's order of magnitude, which is the house bar for a derived-metric constant.
- Cost-per-period: Saalt Cup $32, Lena Cup $29.97–31.97, Flex Cup $29.99, all independently stating "up to 10 years" reusable life (three brand sources agree on the 10-year figure). Flex Disc $16.49 for 12 discs ($1.37/disc, one cycle's worth for a light-to-average flow user per the 5+ super tampons claim). I assumed one period per month (12/year) for the `cost_per_period` formula; this is a stated assumption, not a sourced constant, and I say so in the metric's `why`.

## Against the existing add-on schema

Existing file: `zamana-expertise/data/schema-parts/supplies/personal/add-ons/menstrual_cup.jsonc`.

```
"firmness": "enum [soft, medium, firm, unspecified] | null",
"material_grade": "enum [medical_grade_silicone, tpe, rubber_latex, other, unspecified] | null",
"sizing": { "size": "enum [small, regular, large, low_cervix, high_cervix, teen, postpartum, unspecified] | null", "capacity_ml": "number | null" }
```

| Existing field | This register's view | Proposed kind | Note |
|---|---|---|---|
| `firmness` | Keep. Matches this register's `firmness` facet. | ordinal (soft < medium < firm), not categorical — it has a real order and the community explicitly has no numeric scale for it (putacupinit). | Mark `source: researched`, not assumed-listing: no retail listing states it; only brand pages and community notes do, confirmed on Saalt and Lena's own product pages, never on a marketplace listing in this research. |
| `material_grade` | Keep the concept, extend the enum. | categorical | Add `medical_grade_polymer_blend` as its own value — Flex Disc's ingredient panel names this distinctly from silicone, and lumping disposable-disc polymer into `other` loses the one material fact that actually differs between disposable and reusable products. `tpe` is unverified in this research: no brand page I fetched named TPE as a cup/disc material (only silicone, natural rubber latex, and the disposable polymer blend); I did not remove it since I can't rule it out for off-brand SKUs, but it should not be assumed present without a source. |
| `sizing.size` | **Structural problem.** The enum conflates three unrelated axes into one flat value: a SKU size label (`small`/`regular`/`large`), a body fact about the buyer (`low_cervix`/`high_cervix`), and a life-stage (`teen`/`postpartum`). These aren't mutually exclusive in reality — a teen can have a low or high cervix; "postpartum" and "high cervix" correlate but aren't identical (Saalt's own chart lists them as two separate "Recommended for" lines, not one value) — so a product can't be honestly tagged with exactly one of these seven values. | split into `size` (the actual SKU label: small/regular/teen, categorical, on-listing) plus leave cervix height and childbirth history as **buyer-side quiz inputs**, not product fields — they decide which `size` value to recommend, but they are facts about the person, not the product, and the register's `size` facet and its `cold_start_question` carry that mapping instead of overloading the catalog enum. | This is the clearest case in this register of a facet that was product-shaped when it should have been buyer-shaped; see `references/subjective-interestingness.md`'s point about the background distribution being about the *user*, which this schema field tries to also encode as if it were a *product* fact. |
| `sizing.capacity_ml` | Keep as-is. Matches this register's `capacity_ml`. | number | Correct already; just note it is `researched` in practice (brand pages, not retail listings, in every source I fetched). |
| *(missing entirely)* | Add `form` (cup/disc) — the single biggest gap. The add-on schema has no way to record whether a product is a cup or a disc at all, yet it's the primary mechanism split (suction vs. fornix placement) and changes which other fields apply (`firmness`/stem-type facets become irrelevant for discs). | categorical, filter | — |
| *(missing entirely)* | Add `reusable` (boolean) — distinguishes the Saalt/Lena/Flex Cup/Flex Reusable Disc line from Instead Softcup/Flex Disc, which changes `material_grade`'s likely value, backfill cost, and whether a lifespan/cost-per-period metric applies at all. | boolean, filter | — |
| *(missing entirely)* | Add `fda_registered` (boolean) — a real safety-adjacent fact for a Class II device category, not reliably stated on retail listings, that a diligent buyer or the pipeline can check against the openFDA 510(k) database by brand name. | boolean, annotation | high backfill cost if checked per-SKU; low if checked once per brand and applied to the brand's line. |
| Noise | None of the four existing fields is noise; all four map onto something this register treats as real. The structural fix to `sizing.size` is the only substantive change beyond additions. | — | — |

## Branches

- `form` split, `when: ["cup"]` → `then_ask: ["firmness", "removal_grip"]`, `makes_irrelevant: []`. Traced to: Saalt and Lena cup pages both describe firmness as a cup-specific choice (firm-vs-soft silicone), and Saalt's "Soft flex stem" feature is cup-specific; neither brand's disc page mentions firmness or a stem.
- `form` split, `when: ["disc"]` → `then_ask: ["reusable"]`, `makes_irrelevant: ["firmness", "removal_grip"]`. Traced to two stated sentences: Flex Disc's ingredient panel names a "medical-grade polymer blend," a material only seen on the disposable disc page, making the reusable-vs-disposable question live specifically once `disc` is chosen (cups in this research were reusable-only — no disposable bell cup was found in the FDA 510(k) list or any brand page); and Saalt Disc's FAQ states "Does the Saalt Disc use suction like a menstrual cup? No," which is why `firmness` (a seal-reliability trade-off that only matters for a suction product) stops mattering for the disc branch — traced directly to that sentence plus Lena/Saalt's firmness framing being about "a reliable seal," a concept the disc branch's own FAQ says doesn't apply.
- I considered a branch from `size` (`low cervix`) to a caution about cup suction/IUD removal, but dropped it: the IUD caution in the register traces to the `form` split (cup vs. disc), not to cervix height — van Eijk's IUD case reports don't key on cervix height at all. Keeping it on `form` only, where the chain is a single stated sentence, not a chain of two.

## Trimmed detail

- The full openFDA 510(k) list (16 HHE clearances, including 1981-era Tassaway and The Keeper, the earliest cups on record) is in the scratchpad JSON; only the brands relevant to sizing/material claims are cited in the references above.
- Sea sponges, period swimwear, and menstrual aspiration kits (a diagnostic device, FDA code HHI, unrelated to period collection) all turned up in adjacent openFDA searches and are explicitly out of scope.
- Price range across 145 global brands from van Eijk ($0.72–$46.72, median $23.30) was not used in the JSON — it mixes markets with very different price levels and isn't a number a buyer comparing two listings in one market would use; kept here only as background.

## Corrections (2026-10-26)

- Removed `removal_grip` from the `form`/disc branch's `makes_irrelevant` list: the facet's own `values` include "finger notch (disc rim)," so a disc does not make removal grip irrelevant, only firmness.
- Added the `diameter_mm` facet (56-70mm), sourced to `saalt_cup_product_page` (Regular/Small 70mm, Teen 65mm) and `saalt_disc_product_page` (Regular 66mm, Small 56mm, both verbatim-refetched and re-grepped today); Flex Cup's per-size "43mm x 46mm"-style figures were left out of the range because the page never labels which number is diameter vs. length, so the facet rests on two brands' labeled diameters, not three.
- Deleted the old Trimmed-detail line claiming diameter survives inside `size`'s `why_experts_care` — re-grepped `category.json` today and confirmed no "mm" string existed anywhere in it before this pass; that claim was false, and diameter is now its own facet instead.
- Re-marked `material_grade` and `removal_grip` as `source: researched` (was `listing`): both facets' own `listing_field_hint`s cite brand-page/product-photo evidence, not a confirmed retail-listing field, per the house rule that `listing` requires confirmation on most retail listings. Gave `material_grade` a `backfill_cost: low` and a backfill note, since `researched` with `backfill_cost: none` is invalid.
- Disclosed the single-source endpoints flagged by the check: `wear_time_max_h`'s range.typical now states the 4-hour floor comes from van Eijk alone (not any brand); `capacity_ml`'s range.typical now states the 15mL and 50mL endpoints both come from Saalt alone, with Flex Cup only reaching 30mL.

## Script notes

`seed.py`, `validate.py`, and `viewer.py` ran without incident. `render.py` has a pre-existing cosmetic bug, not introduced here and not fixed per the instruction not to touch the skill's scripts: in the visual-grammars section it appends a period after `origin` unconditionally (`f" Used today by {g['origin']}."`), so any `origin` string that already ends in a period renders with two (`...per SKU..`). This also appears throughout the already-delivered `lamps/category.md` (e.g. "bulb makers reuse it.." and four other lines), so it predates this run and is worth a one-line fix (strip a trailing period from `origin` before formatting) rather than something authors should work around by never ending `origin` with a period.
