# CLAIMS.md — every factual assertion in the UI, with its source

**Rule:** every factual claim that appears anywhere on istheseawolfbundleworthit.com must have an
entry here with a checkable source. A claim that can't be sourced comes out of the UI. When you
change site copy or `assets/config.js`, update this file in the same commit.

**Source key:**

- **Contract** — documents produced under public records request PRA 2026-495 (filed July 10, 2026
  under the California Public Records Act, Gov. Code § 7920.000 et seq., *and* the Richard McKee
  Transparency Act, Educ. Code § 89913 et seq.; Sonoma State Enterprises responded under Educ. Code
  § 89914.5 with 56 pages, no redactions). The full production is in
  [`contract/PRA 2026-495.pdf`](contract/PRA%202026-495.pdf). Section numbers refer to the
  Operating Agreement (Oct 15, 2013) as amended by Amendment No. 1 (effective July 1, 2023).
- **Bookstore email** — email thread between the author and SSU bookstore staff, July 2026.
  Retained by the author and available for inspection on request.
- **Portal screenshot** — screenshots of the author's own bookstore portal, Fall 2026 registration,
  July 2026. Retained by the author and available for inspection on request.
- **Arithmetic** — computed from other sourced values; the formula is stated.
- **Code** — a property of this site itself, verifiable by reading this repository.

| # | Claim (as it appears in the UI) | Source |
|---|---|---|
| 1 | The Seawolf Bundle costs **$21.00 per unit** (used in all bundle-cost math and copy) | SSU's official bundle site, seawolfbundle.sonoma.edu — "$21.00 per credit hour" (verified 2026-08-05); independently confirmed by bookstore email: "The Seawolf bundle is $21 per unit, so $210 if you are taking 10 units." |
| 2 | The Seawolf Bundle is SSU's version of Barnes & Noble's **First Day® Complete** program | Contract, Amendment No. 1 (adds the First Day Complete program); program branding per SSU bookstore materials |
| 3 | **Every undergraduate is enrolled automatically** and must opt out | Contract, Amendment No. 1 §22 (opt-out program structure; §22(v)(2) invoices SSE for credits of students who have *not opted out*); SSU bookstore program description |
| 4 | The program is **rental-first — most physical items must be returned** at term's end | Contract, Amendment No. 1 §22 (rental-first program structure; §22(i)(4) sets fees for non-returned rentals) |
| 5 | Opting out **closes at the add/drop deadline** | SSU bookstore's published Seawolf Bundle program page (publicly checkable); no specific date is shown unless `config.optOutDeadline` carries a sourced one |
| 6 | The contract price is "**an average price across all courses**" applying "**regardless of how many or whether course materials are being used in a particular course**" (quoted) | Contract, Amendment No. 1 §22(v)(1), quoted verbatim |
| 7 | The contract is between **Sonoma State Enterprises (SSE)** and **Barnes & Noble**, and SSE is the SSU auxiliary that holds it | Contract: Operating Agreement (Oct 15, 2013) between SSE and B&N College Booksellers, LLC; SSE is a CSU-authorized auxiliary organization (response made under Educ. Code § 89914.5) |
| 8 | SSE receives a commission of **10% of gross course-material sales** | Contract, §11.1 as amended (Calculated Commission: 10% of Gross Sales of Course Materials) |
| 9 | That commission category **expressly includes bundle revenue** | Contract, §11.1 as amended ("Gross Sales of Course Materials" defined to include First Day and First Day Complete revenue) |
| 10 | The per-unit price is **set each year by agreement between SSE and B&N, no later than March**, effective the following fall | Contract, Amendment No. 1 §22(v)(5) |
| 11 | The agreement contains **no cap on price increases** | Contract — no escalation cap appears anywhere in the produced agreement (verified by full read of the 56-page production) |
| 12 | The agreement **excludes no programs or schools** | Contract, Amendment No. 1 §22(iii)(3): excluded programs — "None" |
| 13 | The student price **rose from $18.50/unit (2023) to $21.00 now** | 2023: the program's published student-facing launch rate of $18.50/unit (author's records of SSU bookstore pricing pages, retained); current: bookstore email (claim #1) |
| 14 | *(retired from UI 2026-08-10, the $67.15 story was removed; kept for reference)* The author's Fall 2026 cart showed **one included item across 10 registered units** | Portal screenshot |
| 15 | *(retired from UI 2026-08-10, the $67.15 story was removed; kept for reference)* That item was a paperback selling online for **about $11 new (July 2026)** | Author's price capture during the July 2026 bookstore correspondence (~$11.08 new online); retained with the email thread |
| 16 | *(retired from UI 2026-08-10, the $67.15 story was removed; kept for reference)* The bundle price for 10 units **is $210.00** | Arithmetic: 10 × $21.00 (claim #1); also stated verbatim in the bookstore email |
| 17 | *(retired from UI 2026-08-10, the $67.15 story was removed; kept for reference)* The portal displayed "**Your estimated savings on included materials is: $67.15**" (quoted) | Portal screenshot |
| 18 | *(retired from UI 2026-08-10, the $67.15 story was removed; kept for reference)* The bookstore said savings are "**calculated off publisher pricing, but there might be better deals out there**" and "**Since you only need 1 book for 10 units, the Seawolf Bundle might not be the best option for you.**" (quoted) | Bookstore email, quoted verbatim |
| 19 | **Materials can be added to a course after a student's opt-out decision** (the contract permits late faculty adoptions) | Contract, Amendment No. 1 §22(i)(2) (late adoptions permitted after the normal adoption deadlines; B&N "cannot guarantee delivery" but will use reasonable efforts) |
| 20 | **Opting out is not a lockout** — a student who opted out can buy any later-added item on their own | Structural: opting out removes a student from bundle billing only (§22(v)(2)); nothing in the produced agreement restricts an opted-out student's ability to buy materials anywhere |
| 21 | **Single-use access codes usually can't be bought used** (MyLab, MindTap, WebAssign, Connect, ALEKS, etc.) | Product characteristic of single-use licenses: codes are consumed on activation and publishers sell them as one-time use. Hedged as "usually" in all UI copy |
| 22 | The bundle **bills per unit**, so registered units set its price | Contract, Amendment No. 1 §22(v)(1) (price per credit per semester); bookstore email (claim #1) |
| 23 | All verdict figures ("$X to buy vs $Y for the bundle, difference $Z") | Arithmetic: bundle = units × $21.00; buy total = sum of per-item prices, where each price is a live fetched offer (claim #36), the price printed in the user's own capture (access codes only, claim #37), or a number the user typed; difference = bundle − buy. Formulas in [`METHODOLOGY.md`](METHODOLOGY.md) |
| 24 | This site **never asks for SSU credentials**; pasted text is parsed **in the browser**; captures (screenshots or a full-page PDF) are sent once to **an automated reading service**, which extracts course, title, format, ISBN, and any printed per-item price, and **this site never stores them**; **price lookups send only the ISBNs** from the confirmed list, and **matching an item that has no ISBN sends only its title, author, and edition** to a public book catalog; **no analytics, no tracking, no accounts** | Code: `assets/parse-text.js` runs client-side; `api/parse.js` forwards the capture to the vision model provider (the Anthropic API — named here for auditability, generic in UI copy) and writes/logs nothing itself; `api/price.js` receives `{ isbns }` and nothing else, and `api/resolve.js` receives `{ items: [{ title, author, edition }] }` and forwards one search query per item to OpenLibrary (see `fetchPrices()` and `resolveMissingIsbns()` in `assets/app.js` for exactly what the client sends); no analytics scripts exist in this repository. (Handling by the providers is governed by their own data policies — this site only vouches for what it controls.) |
| 25 | This site is **not affiliated with SSU, Sonoma State Enterprises, or Barnes & Noble** and was **built by an SSU student** | Statement of authorship; this repository |
| 26 | The contract documents were **obtained through public records request PRA 2026-495** | The request and production themselves; `contract/PRA 2026-495.pdf` |
| 27 | *(retired from UI 2026-08-12, the hero lede was simplified to one line; the live bill figure at 15 units states the same number via claim #35)* The bundle costs **"$315 a semester at a full 15-unit load"** | Arithmetic: 15 × $21.00 (claim #1) = $315.00; SSU's bundle site states the same figure ("$315" for 15 credits, verified 2026-08-05) |
| 28 | *(retired from UI 2026-08-10, the $67.15 story was removed; kept for reference)* The documented case was **"a $198.92 overpayment, presented as a $67 gain"** | Arithmetic: $210.00 (claim #16) − $11.08 (claim #15) = $198.92; the "$67 gain" is the portal's $67.15 savings banner (claim #17) |
| 29 | **Opt-out deadline for Fall 2026: Friday, September 4, 2026 — the last day of add/drop** | seawolfbundle.sonoma.edu ("through the final add/drop date (September 4, 2026)", verified 2026-08-05 and re-verified 2026-08-12) and registrar.sonoma.edu/academic-calendar (add/drop September 4, 2026). Known conflict, disclosed: a student's authenticated B&N portal timeline captured 2026-08-12 showed "Opt Out End Date: September 13, 2026". The site displays the earlier official date, which is safe under either reading; written confirmation from the bookstore is pending. Stored in `assets/config.js` with this note |
| 30 | **"Nothing stored, no tracking, no ads … this site earns nothing either way"** | Code: this repository contains no advertising, affiliate, referral, analytics, or storage code of any kind; the price source's affiliate-tagged cart links never leave the server (`api/_pick-offer.js` returns no URL at all, test-asserted); the UI links offers to a catalog address built only from ISBN and title (`storeUrl()` in `assets/app.js`), so no link on this site carries a referral parameter; see also #24 |
| 31 | **"This site never asks for SSU credentials"** (why.html; the My Course Materials link goes straight to the bookstore's own sign-in) | Code + link target: the My Course Materials link points at the bookstore's SSO endpoint, which redirects to login.sonoma.edu; no credential field exists anywhere on this site |
| 32 | **"If the answer is 'keep the bundle,' we'll say that, loud and clear"** | Code: `assets/verdict.js` returns `stay_in` whenever the user's numbers favor the bundle, and the UI answers "Yes." at the same giant answer-word scale and identical color treatment as "No." (the verdict state classes carry no styling at all — verifiable in `assets/style.css`); see METHODOLOGY.md (access codes) |
| 33 | The linked opt-out page is **"the official opt-out page"** | The URL in `assets/config.js` (`optOutUrl`) is identical to the opt-out link published on SSU's own bundle site, seawolfbundle.sonoma.edu (verified 2026-08-05) |
| 35 | **"Unless you opt out, SSU bills you $X for the bundle this semester"** (the hero's live figure) and the lede **"SSU bills every undergraduate $21.00 per unit for course materials unless they opt out"** | Automatic enrollment with opt-out: claim #3; per-unit billing: claim #22; the rate and the dollar figure are claim #1 and arithmetic (units you set × $21.00) |
| 34 | *(retired from UI 2026-08-06 — kept for reference)* "Nobody shows you the math for your classes" | Portal screenshot: the enrollment screen displays a single "estimated savings" figure with no itemized calculation, no per-course comparison, and no method shown anywhere in the portal; bookstore email (claim #18): staff, asked for the calculation, could not provide it and referred to publisher pricing |
| 36 | Found prices are **"real offers at the moment of lookup"**, each shown with its store, condition or rental length, **shipping included**, and a link to the store's catalog page for that ISBN | Code: `api/price.js` queries BooksRun's public buy-price API live per request and caches nothing; `api/_pick-offer.js` selects the cheapest purchasable offer (used, new, or a term-length rental of 110+ days), always price plus shipping; for access-code items the client accepts only **new** offers (`fetchPrices()` in `assets/app.js` — a used code is usually consumed); the UI labels each with its provenance and links to the product page. Offers can change between lookup and purchase — the UI says so ("offers move, so buy soon after you decide") |
| 37 | For an access code, a price labeled **"listed in your own capture"** is the price printed in the user's uploaded screenshot/PDF | Code: `api/parse.js` extracts `listedPrice` only when a real price is legibly printed next to an item (the prompt excludes "$0.00"/"included"/struck-through figures, forbids estimating, and flags uncertain reads low-confidence); `applyCapturePrices()` in `assets/app.js` applies it **only to items whose format is access code**, never to books, only when positive and high-confidence, and never over a price the user set; the value is shown editable on the confirm screen before anything is computed, and the verdict label states the provenance |
| 38 | Rentals **shorter than a full term are not counted as offers** (a 90-day rental that ends before finals is not a fair comparable to the bundle's term rental) | Code: `MIN_RENT_DAYS = 110` in `api/_pick-offer.js`, with the rationale in `METHODOLOGY.md`; policy choice, disclosed rather than sourced |
| 39 | A **"Matched to …"** note on the confirm screen means the ISBN was found by matching the item's title and author against OpenLibrary's public catalog, because the bookstore page showed none | Code: `api/resolve.js` + `api/_resolve-match.js` (author required, surname must match, strong title overlap, edition-year preference, weak matches return nothing — all unit-tested); the match is displayed for the user's confirmation before any price is looked up against it, and the ISBN stays editable |
| 40 | The **"Other ways to pay less"** suggestions: library reserves, interlibrary loan, open textbooks, older editions | General, hedged cost-saving avenues, not SSU-specific assertions and not claims about what any course requires: each is phrased as an option to check ("may", "some", "often"). Interlibrary loan and open textbooks (OpenStax and similar OER) are widely available public services |
| 41 | For an access code, the price link points to **its publisher** ("Get it from zyBooks/Pearson/Cengage/…") rather than a book marketplace | Code: `assets/config.js` `courseware` maps each platform to its publisher's brand domain; `retailerLinks()`/`coursewareSeller()` in `assets/app.js` route access-code items there. Courseware is sold direct by publishers and not on book marketplaces; there is no courseware price API, so no price is asserted — the link is where the student reads and enters it. Platforms not in the map still get a web-search link rather than a dead end, and the map is a one-line addition per platform as the field test surfaces them |
| 42 | The units field is **pre-filled from the courses in your capture** (fully editable), not asserted as your registration | Code: `assets/estimate-units.js` sums course units from `assets/course-units.js` — a table `scripts/build-course-units.mjs` generates from SSU's published **Schedule of Classes** for the term (source kept in `data/`), with variable-unit courses resolved to the rounded median of their offered values and any course the table lacks contributing `config.assumedUnitsPerCourse` (3). `applyUnitsEstimate()` in `assets/app.js` applies the estimate **only** when the capture wasn't flagged cut off, the table's term matches `config.term`, and the user hasn't set units by hand; the number is editable on the confirm screen and nothing is computed until confirmed. It is a seeded default, never a claim — the schedule knows a course's offered units, not the section/unit count a student chose. Source: SSU Registrar Schedule of Classes (public). See METHODOLOGY.md "How the units number gets seeded" |

## What the site deliberately does not claim

- **Motive or intent.** The site describes the program's structure as documented; it makes no
  claim about why anyone set it up this way.
- **Anything it cannot source.** Open questions stay off the site entirely — including any
  interpretation of contract clauses beyond their quoted text, and any figure whose derivation
  is unknown.
- **What any course requires.** The site only ever describes what *the user's own cart shows*.
- **Prices.** The tool links out; every price in a verdict was typed in by the user and is
  labeled as theirs.
