plainstamp 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -16,6 +16,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
16
16
 
17
17
  Distribution is **npm-only**. Source remains in the operating organization's private repository; there is no public source repository host. Contact channel for issues, accuracy reports, security reports, and contribution proposals is **helpfulbutton140@agentmail.to** (see `docs/CONTRIBUTING.md`, `docs/SECURITY.md`).
18
18
 
19
+ ## [0.6.0] — 2026-05-08
20
+
21
+ ### Added
22
+
23
+ - FCC Declaratory Ruling on AI-generated voice in robocalls (CG Docket No. 23-362, FCC 24-17, released February 8, 2024). Confirms that AI-generated voice clones and AI-synthesized voices used in calls to consumers are "artificial or prerecorded voices" within the meaning of the Telephone Consumer Protection Act of 1991 (47 U.S.C. § 227) and the Commission's implementing rules at 47 CFR § 64.1200. AI-voice robocalls require prior express consent (or prior express written consent for telemarketing); statutory damages $500 per call ($1,500 willful). Use cases `b2c-marketing`, `b2c-sales`, `b2c-customer-support`, `civic-or-electoral`, `general`. Channel `voice`. Severity `mandatory`.
24
+ - Runtime Zod schema exports: `Channel`, `UseCase`, `Severity`, `JurisdictionId`, `LookupQuery`, `DisclosureElement`, `DisclosureRule`, `RuleSet` are now exported from the package root (previously only the corresponding TypeScript types were exported). This unblocks downstream consumers (Cloudflare Workers wrapper, validation layers, etc.) from re-implementing the validators.
25
+ - Rule count 22 → 23. Tests still 51/51 passing.
26
+
27
+ ### Sibling project (not bundled in npm)
28
+
29
+ - `cf-worker/` — Cloudflare Workers HTTP wrapper that exposes the plainstamp lookup engine over JSON-over-HTTP. Endpoints: `GET /` (info), `/health`, `/jurisdictions`, `/rules`, `/rules/:id`, `/lookup`, `POST /validate`. Scaffold only in this release (deploy in next iteration). Plan doc at `<autobiz>/ops/cloudflare/CLOUDFLARE_DEPLOY.md`. The cf-worker depends on plainstamp@^0.6.0 (this release).
30
+
31
+ ## [0.5.0] — 2026-05-08
32
+
33
+ ### Added
34
+
35
+ - FDA Predetermined Change Control Plans for AI/ML-Enabled Device Software Functions — Final Guidance (December 4, 2024). Codified into the FD&C Act at § 515C (21 U.S.C. § 360e-4) by Section 3308 of the Food and Drug Omnibus Reform Act of 2022 (FDORA, P.L. 117-328). Manufacturers of AI/ML-enabled medical devices may include a PCCP in their authorized 510(k) / De Novo / PMA marketing submission, comprising a Description of Modifications, a Modification Protocol, and an Impact Assessment; PCCP-conforming modifications may then be implemented without a new submission. Device labeling and the public-facing device summary must disclose the AI/ML nature of the device and reflect the PCCP. Use case `healthcare`. Severity `mandatory`.
36
+ - Fourth SEO guide: `docs/guides/california-bot-disclosure-bp-17941-builder-guide.md` — comprehensive coverage of California's B.O.T. Act bot-disclosure rule, the safe-harbor "clear, conspicuous, and reasonably designed to inform" standard, the channels and use-cases that trigger it, common compliance pitfalls, and how § 17941 stacks with FTC § 5, EU AI Act Article 50(1), GDPR Article 22, California SB 942, and federal financial-services rules. Targets the high-traffic California consumer-facing-AI compliance vertical.
37
+ - Rule count 21 → 22. Tests still 51/51 passing.
38
+
19
39
  ## [0.4.0] — 2026-05-08
20
40
 
21
41
  ### Added
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { lookup, generateDisclosureText, validateDisclosure, } from "./lookup.js
2
2
  export { loadBundledRules, loadRulesFromPath } from "./rules-loader.js";
3
3
  export { computeCoverageMatrix, renderCoverageMarkdown, renderCoverageCsv, type CoverageMatrix, type CoverageCell, } from "./coverage.js";
4
4
  export type { DisclosureRuleT, RuleSetT, LookupQueryT, LookupResultT, ChannelT, UseCaseT, SeverityT, JurisdictionIdT, DisclosureElementT, } from "./schema.js";
5
+ export { Channel, UseCase, Severity, JurisdictionId, LookupQuery, DisclosureElement, DisclosureRule, RuleSet, } from "./schema.js";
5
6
  import type { LookupQueryT, LookupResultT, DisclosureRuleT } from "./schema.js";
6
7
  /**
7
8
  * High-level convenience: load the bundled rules and look up disclosures for
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,CAEnE;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAK5C;AAED,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM;;;;;IAKtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,OAAO,GACR,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,CAEnE;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAK5C;AAED,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM;;;;;IAKtB"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { lookup, generateDisclosureText, validateDisclosure, } from "./lookup.js";
2
2
  export { loadBundledRules, loadRulesFromPath } from "./rules-loader.js";
3
3
  export { computeCoverageMatrix, renderCoverageMarkdown, renderCoverageCsv, } from "./coverage.js";
4
+ export { Channel, UseCase, Severity, JurisdictionId, LookupQuery, DisclosureElement, DisclosureRule, RuleSet, } from "./schema.js";
4
5
  import { loadBundledRules } from "./rules-loader.js";
5
6
  import { lookup as lookupFn, validateDisclosure as validateFn } from "./lookup.js";
6
7
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,GAGlB,MAAM,eAAe,CAAC;AAavB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,kBAAkB,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAmB,EACnB,aAAqB;IAErB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,GAGlB,MAAM,eAAe,CAAC;AAYvB,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,OAAO,GACR,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,kBAAkB,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAmB,EACnB,aAAqB;IAErB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,230 @@
1
+ # California bot disclosure (B&P § 17941): a builder's guide
2
+
3
+ > **Informational only — not legal advice.** Verify against the cited
4
+ > regulator-published text and consult counsel for production deployments.
5
+ > See `AI-DISCLOSURE.md` in this package.
6
+
7
+ If your AI chatbot, voice agent, video avatar, or any other automated
8
+ communicator can interact with California residents online — and your
9
+ goal is commercial (selling something) or electoral (influencing a
10
+ vote) — California Business and Professions Code **§ 17941** applies
11
+ to you. The statute has been in active enforcement since July 1, 2019.
12
+ This guide covers what § 17941 actually requires, who is covered,
13
+ what counts as compliant disclosure, the elements that catch builders
14
+ off guard, and how the rule stacks with parallel state and federal
15
+ AI-disclosure regimes.
16
+
17
+ ## What § 17941 actually requires
18
+
19
+ California enacted the bot disclosure law (commonly called the "B.O.T.
20
+ Act") through SB 1001 in 2018; it is codified at California Business
21
+ and Professions Code §§ 17940–17943. Section 17941 makes it **unlawful
22
+ for any person to use a bot to communicate or interact with another
23
+ person in California online, with the intent to mislead the other
24
+ person about its artificial identity** for either of two purposes:
25
+
26
+ 1. **Commercial transaction.** Knowingly deceiving the person about
27
+ the content of the communication in order to incentivize a
28
+ purchase or sale of goods or services.
29
+ 2. **Electoral influence.** Knowingly deceiving the person about the
30
+ content of the communication in order to influence a vote in an
31
+ election.
32
+
33
+ The statute provides a **safe harbor**: a person using a bot does not
34
+ violate § 17941 if the person discloses, in a manner that is "clear,
35
+ conspicuous, and reasonably designed to inform persons with whom the
36
+ bot communicates or interacts" that it is a bot.
37
+
38
+ Penalties: enforcement is through the California Attorney General and
39
+ through actions brought by district attorneys, county counsel, or
40
+ city attorneys; civil penalties under California's Unfair Competition
41
+ Law (B&P § 17200) and False Advertising Law (B&P § 17500) apply, and
42
+ plaintiffs can also pursue private remedies under those statutes.
43
+
44
+ ## What's a "bot" — the definitional question
45
+
46
+ "Bot" is defined at B&P § 17940(a): "an automated online account
47
+ where all or substantially all of the actions or posts of that
48
+ account are not the result of a person." The definition is broad:
49
+
50
+ - Chatbots powered by LLMs are bots.
51
+ - Customer-support agents that auto-respond, even if a human is
52
+ occasionally in the loop, are bots if "substantially all" of the
53
+ responses are automated.
54
+ - Voice agents and IVR systems that conduct sales conversations are
55
+ bots.
56
+ - Video avatars driven by AI are bots.
57
+ - Hybrid systems that automate the first response and only escalate
58
+ to a human after several turns are bots **for those automated
59
+ turns**.
60
+
61
+ Three elements catch builders off guard:
62
+
63
+ - **"Substantially all"** is fact-specific. A workflow where a
64
+ bot drafts a response that a human approves with one click is
65
+ closer to a bot than to a human-authored communication, but
66
+ enforcement scrutiny will look at the specific facts.
67
+ - **"Online"** includes any online platform with at least 10 million
68
+ unique monthly U.S. visitors, but the practical scope sweeps in
69
+ most consumer-facing chat and voice channels.
70
+ - **"Intent to mislead"** is the trigger; § 17941 does not require
71
+ disclosure on every bot interaction, only on those where the
72
+ operator's intent is to deceive about the bot's artificial nature
73
+ for commercial or electoral purposes. **Best practice** is to
74
+ disclose by default — intent is hard to demonstrate after the fact,
75
+ and the safe-harbor disclosure is cheap.
76
+
77
+ ## What "clear and conspicuous" means
78
+
79
+ The statute does not specify exact text. Operators have generally
80
+ implemented the safe-harbor disclosure in three ways:
81
+
82
+ 1. **First-message disclosure** in the chat surface itself: "You are
83
+ chatting with an automated AI assistant, not a human."
84
+ 2. **Persistent UI label** (e.g., "AI Assistant" badge next to the
85
+ bot's name) combined with a first-message disclosure.
86
+ 3. **Voice channel pre-roll** ("Hello, you've reached the automated
87
+ assistant for [company name]") at the start of the call.
88
+
89
+ The safe harbor requires the disclosure be:
90
+
91
+ - **Clear**: stated in plain language, not buried in technical jargon.
92
+ - **Conspicuous**: visible to a reasonable user without scrolling,
93
+ hunting through menus, or expanding collapsed sections.
94
+ - **Reasonably designed to inform**: appropriate to the channel
95
+ (text in chat, audio in voice, on-screen in video).
96
+
97
+ A disclosure buried in terms-of-service documentation, or one that
98
+ appears only after the user has provided a credit card, generally
99
+ does not meet the safe harbor.
100
+
101
+ ## Channels and use cases that trigger § 17941
102
+
103
+ The plainstamp rule (`us-ca-bot-disclosure-17941`) covers:
104
+
105
+ - **Channels**: `live-chat`, `voice`, `video-avatar`.
106
+ - **Use cases**: `b2c-customer-support`, `b2c-marketing`,
107
+ `b2c-sales`, `civic-or-electoral`.
108
+
109
+ The use-case fit catches some builders off guard:
110
+
111
+ - **B2C customer support** is in scope when the bot's role includes
112
+ surfacing upsells, retention offers, or any commercial
113
+ communication. A pure technical-support bot that never tries to
114
+ sell anything is arguably outside § 17941's commercial-transaction
115
+ trigger but still inside the safe-harbor best practice.
116
+ - **B2B sales bots** are not the principal target of § 17941 (which
117
+ is consumer-protection), but B2B prospects who are California
118
+ residents reading the bot output may still be in scope. Disclose
119
+ by default.
120
+ - **Civic/electoral** is a separate trigger — political chatbots
121
+ during election cycles must disclose regardless of commercial
122
+ intent.
123
+
124
+ ## How § 17941 stacks with parallel rules
125
+
126
+ California's B&P § 17941 is the consumer-protection layer. AI
127
+ operators with consumer-facing communications must layer:
128
+
129
+ - **Federal** — FTC § 5 (deceptive acts and practices). Failing to
130
+ disclose AI in a way that materially affects a consumer's
131
+ decision is a deceptive practice; the FTC's 2024 fake-reviews rule
132
+ (16 CFR Part 465) addresses adjacent fabricated content concerns.
133
+ - **EU AI Act Article 50(1)** — for any chatbot that interacts with
134
+ natural persons in the EU. The EU rule's threshold is lower —
135
+ disclosure is required regardless of commercial intent and applies
136
+ to providers of the AI system itself.
137
+ - **GDPR Article 22** — for automated decisions that affect EU
138
+ residents, even where § 17941 itself doesn't reach.
139
+ - **California AI Transparency Act (SB 942)** — covers GenAI-system
140
+ providers with significant California reach; layers on top of
141
+ § 17941 for AI-generated content disclosure.
142
+ - **Federal financial-services rules** — CFPB Circular 2023-03
143
+ (ECOA / Reg. B) when the bot output drives credit decisions; FINRA
144
+ Regulatory Notice 24-09 when the bot output is a "communication
145
+ with the public" for a member firm.
146
+
147
+ ## Common compliance pitfalls
148
+
149
+ - **Deferring to ToS-only disclosure.** A line in a 10,000-word
150
+ terms-of-service document does not meet "clear and conspicuous."
151
+ - **Relying on a small "AI" badge alone.** Persistent UI badges
152
+ help, but absent a first-message statement they may not satisfy
153
+ the safe harbor for first-time visitors.
154
+ - **Voice channels without pre-roll.** A voice agent that only
155
+ identifies as a bot if asked fails the safe harbor.
156
+ - **Video avatars where the visual is photorealistic.** The
157
+ photorealism increases the deception risk; explicit on-screen
158
+ AI labeling is best practice.
159
+ - **Multi-turn escalation without disclosure on bot turns.** If a
160
+ bot answers the first 5 messages and then escalates, the bot
161
+ turns must carry their own disclosure — the human-handoff message
162
+ doesn't retroactively cure earlier deception.
163
+ - **Geo-detection failures.** California residents traveling outside
164
+ California are still California residents; California residents
165
+ using VPNs are still California residents. Disclose by default to
166
+ avoid geo-detection edge cases.
167
+ - **A/B testing the disclosure copy.** The safe harbor protects
168
+ disclosures "reasonably designed to inform"; A/B-testing toward
169
+ lower-disclosure variants risks failing that standard.
170
+
171
+ ## How plainstamp helps
172
+
173
+ `plainstamp` ships a `us-ca-bot-disclosure-17941` rule that returns
174
+ the live disclosure-element checklist for § 17941, ready-to-paste
175
+ plain-language and formal-language templates, citation back to the
176
+ California Legislative Information source URL, and a `last_verified`
177
+ date. Lookup:
178
+
179
+ ```bash
180
+ npx plainstamp lookup --jurisdiction us-ca \
181
+ --channel live-chat \
182
+ --use-case b2c-customer-support
183
+ ```
184
+
185
+ Returns the § 17941 rule and any federal-floor and EU-overlay rules
186
+ that also apply (the lookup engine inherits parent jurisdictions —
187
+ querying `us-ca` picks up `us` federal rules as well).
188
+
189
+ For multi-channel deployments (chat + voice + video avatar), query
190
+ each channel and union the disclosure obligations — § 17941 covers
191
+ all three and the disclosure language can be shared, but the
192
+ **form** of disclosure (text vs. audio vs. on-screen) varies by
193
+ channel.
194
+
195
+ ## The minimum viable § 17941 disclosure
196
+
197
+ If you ship one thing this week, ship a first-interaction disclosure
198
+ that meets all three safe-harbor criteria:
199
+
200
+ 1. **Clear**: plain language, no jargon. "You are chatting with an
201
+ automated AI assistant, not a human."
202
+ 2. **Conspicuous**: in-channel, visible without action by the user.
203
+ In chat: as the first bot message. In voice: as the pre-roll.
204
+ In video: as on-screen text + audio.
205
+ 3. **Reasonably designed to inform**: appropriate to the channel
206
+ and the user population. For California-resident-heavy traffic,
207
+ prefer the more explicit disclosure variant.
208
+
209
+ Then, layer on the EU AI Act Article 50(1) overlay for any traffic
210
+ that reaches the EU (the EU rule's bar is lower — disclosure required
211
+ regardless of intent).
212
+
213
+ ## Source-of-truth links
214
+
215
+ - **California Business and Professions Code § 17941**
216
+ ([leginfo.legislature.ca.gov](https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=BPC&sectionNum=17941))
217
+ - **California B.O.T. Act (SB 1001, 2018) — full bill text**
218
+ ([leginfo.legislature.ca.gov](https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=201720180SB1001))
219
+ - **California Attorney General — consumer-protection guidance on
220
+ AI / bots** ([oag.ca.gov](https://oag.ca.gov/))
221
+ - **FTC § 5 — Deceptive Acts and Practices**
222
+ ([ftc.gov](https://www.ftc.gov/legal-library/browse/statutes/federal-trade-commission-act))
223
+
224
+ `plainstamp` is maintained by an autonomous AI agent operating under
225
+ KS Elevated Solutions LLC. Accuracy reports, rule-update suggestions,
226
+ and security disclosures: [helpfulbutton140@agentmail.to](mailto:helpfulbutton140@agentmail.to).
227
+
228
+ ---
229
+
230
+ [`← Back to plainstamp on npm`](https://www.npmjs.com/package/plainstamp)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plainstamp",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "AI disclosure compliance assistant — generates legally-grounded AI disclosure text per (jurisdiction × channel × use-case) and tracks regulatory updates. Operated by an autonomous AI agent under KS Elevated Solutions LLC.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/rules/seed.json CHANGED
@@ -958,6 +958,104 @@
958
958
  "formal": "Notice under California SB 1120 — Physicians Make Decisions Act, codified at California Health and Safety Code § 1367.01 (or Insurance Code § 10123.135 for plans regulated by the Department of Insurance): An artificial-intelligence, algorithmic, or other software tool was used by [plan / insurer name] in the utilization review or utilization management process for this coverage determination. The tool's output was reviewed by [licensed physician or other licensed healthcare professional acting within scope of practice] who considered the enrollee's individual clinical circumstances before this decision was made. The tool is fairly and equitably applied; the plan / insurer's use of AI in utilization review has been disclosed to the appropriate California regulator. The enrollee may appeal this determination through internal grievance and through Independent Medical Review under California law."
959
959
  },
960
960
  "notes": "SB 1120 is one of the first US state laws to specifically restrict AI use in health-coverage decisions. The law applies to two distinct regulatory regimes: DMHC-regulated health-care service plans (most California HMOs and many PPOs) under HSC § 1367.01, and CDI-regulated health insurers under Ins. Code § 10123.135. The use case here is `healthcare` (clinical decision impact) and `financial-services` (insurance coverage decisions involving payment) — many compliance-relevant decisions sit at the intersection, and surfacing both makes the rule discoverable for either query path. The physician-review requirement is procedural — the AI cannot make the final medical-necessity determination on its own. The disclosure obligation is the consumer-facing element. SB 1120 stacks with HHS Section 1557 PCDST nondiscrimination obligations (federal floor) and with the Colorado AI Act / Texas TRAIGA-healthcare / Utah AI Act in their respective state operations. ERISA self-funded plans are typically exempt from state insurance regulation but may be subject to federal-floor obligations and HHS Section 1557. Class-action litigation over AI denial of care has been ongoing under existing law in 2024–2025; SB 1120 codifies a clearer disclosure-and-review standard. Verify against DMHC and CDI guidance before production deployment — both regulators have rulemaking authority and have issued or are expected to issue more detailed implementation guidance through 2026."
961
+ },
962
+ {
963
+ "id": "us-fda-pccp-aiml-device-software-2024",
964
+ "jurisdiction": "us",
965
+ "channels": ["ai-generated-content", "about-page", "terms-of-service"],
966
+ "use_cases": ["healthcare"],
967
+ "severity": "mandatory",
968
+ "short_title": "FDA Predetermined Change Control Plans for AI/ML-Enabled Device Software Functions (Final Guidance, December 2024)",
969
+ "summary": "On December 4, 2024, the U.S. Food and Drug Administration finalized guidance on Predetermined Change Control Plans (PCCPs) for Artificial Intelligence-Enabled Device Software Functions (AI-DSFs). Under the FD&C Act § 515C (added by the FDA Modernization Act of 2022), a manufacturer of an AI/ML-enabled medical device that has been cleared (510(k)), De Novo authorized, or approved (PMA) may include in the device's authorized marketing submission a PCCP describing planned modifications to the device — including modifications that would otherwise require a new marketing submission — together with the methods to implement them and an assessment of their impact. Once the PCCP is FDA-authorized as part of the marketing submission, the manufacturer may implement modifications that conform to the PCCP without filing a new submission. PCCPs must include: (1) a Description of Modifications detailing the specific modifications planned; (2) a Modification Protocol with methods to develop, validate, and implement the modifications; and (3) an Impact Assessment evaluating benefits and risks. The device labeling — including the public-facing device summary that FDA publishes for cleared/authorized devices — must reflect the PCCP and inform clinicians and (where applicable) patients about the AI/ML nature of the device and how it may be modified post-authorization. The PCCP framework is mandatory in the sense that AI/ML modifications outside an authorized PCCP still require a new marketing submission; the public disclosure obligations follow from the underlying labeling and 510(k)/De Novo/PMA disclosure regimes administered by FDA's Center for Devices and Radiological Health (CDRH). Penalties for non-compliance with FDA device requirements can include warning letters, seizure, injunction, civil monetary penalties, and criminal prosecution under the FD&C Act.",
970
+ "required_elements": [
971
+ {
972
+ "id": "pccp-in-marketing-submission",
973
+ "description": "Authorized PCCP in the device's marketing submission (510(k), De Novo, or PMA), comprising a Description of Modifications, a Modification Protocol, and an Impact Assessment. (Pre-market regulatory requirement; must be FDA-authorized before any PCCP-covered modifications are implemented.)",
974
+ "required": false
975
+ },
976
+ {
977
+ "id": "device-labeling-aiml-disclosure",
978
+ "description": "Device labeling must disclose that the device is an AI/ML-enabled device software function, summarize the PCCP (where present), and inform users that the device may be modified within the bounds of the authorized PCCP without a new marketing submission.",
979
+ "required": true,
980
+ "example": "This device incorporates an artificial intelligence / machine-learning algorithm. The device's authorized marketing submission includes a Predetermined Change Control Plan (PCCP) under FD&C Act § 515C; the manufacturer may implement modifications conforming to the PCCP without a new marketing submission. For the current PCCP scope and version, see [manufacturer device summary URL]."
981
+ },
982
+ {
983
+ "id": "user-facing-aiml-summary",
984
+ "description": "Plain-language summary of the AI/ML nature of the device, intended use, performance characteristics, and the kinds of modifications anticipated under the PCCP, made available to clinicians and (where the device is patient-facing) to patients.",
985
+ "required": true,
986
+ "example": "This device uses machine learning to [intended task]. The model's performance has been validated for [population / indication]. Under our authorized PCCP, future updates may [list of anticipated modification types]. Users should consult the latest device summary at [URL] for the current model version and validation data."
987
+ },
988
+ {
989
+ "id": "post-implementation-transparency",
990
+ "description": "Post-implementation transparency: when a PCCP-conforming modification is implemented, the manufacturer must update device labeling and the public-facing device summary to reflect the modification and its impact, and must document the modification under the PCCP's Modification Protocol.",
991
+ "required": false
992
+ }
993
+ ],
994
+ "citation": {
995
+ "statute": "Federal Food, Drug, and Cosmetic Act § 515C (21 U.S.C. § 360e-4), as added by Section 3308 of the Food and Drug Omnibus Reform Act of 2022 (FDORA, P.L. 117-328, Division FF, Title III)",
996
+ "section": "Predetermined Change Control Plans for Artificial Intelligence-Enabled Device Software Functions: Guidance for Industry and Food and Drug Administration Staff (Final, December 4, 2024)",
997
+ "source_url": "https://www.fda.gov/regulatory-information/search-fda-guidance-documents/predetermined-change-control-plans-artificial-intelligence-enabled-device-software-functions",
998
+ "publisher": "U.S. Food and Drug Administration, Center for Devices and Radiological Health"
999
+ },
1000
+ "effective_date": "2024-12-04",
1001
+ "last_verified": "2026-05-08",
1002
+ "template": {
1003
+ "plain": "Notice — AI/ML-Enabled Medical Device: This device incorporates an artificial intelligence or machine-learning algorithm. The device has been authorized for marketing by the U.S. Food and Drug Administration under [510(k) / De Novo / PMA number]. The manufacturer's authorized marketing submission includes a Predetermined Change Control Plan (PCCP) describing the modifications that may be implemented to the device's algorithm without a new FDA submission. For the current PCCP scope, the device's intended use, validated performance, and the latest model version, see the manufacturer's device summary at [URL]. Discuss any clinical decisions informed by this device with your healthcare provider.",
1004
+ "formal": "Notice under FD&C Act § 515C (21 U.S.C. § 360e-4) and FDA's Predetermined Change Control Plans for Artificial Intelligence-Enabled Device Software Functions (Final Guidance, December 4, 2024): The device identified herein is an artificial intelligence-enabled device software function (AI-DSF) authorized by FDA under [submission type and reference number]. The manufacturer's authorized marketing submission includes a Predetermined Change Control Plan (PCCP) comprising a Description of Modifications, a Modification Protocol, and an Impact Assessment. PCCP-conforming modifications may be implemented without a new marketing submission; modifications outside the authorized PCCP require a new submission per applicable FDA regulations. The device's labeling reflects the PCCP; the manufacturer's public device summary at [URL] reflects the current model version, validation data, and the cumulative record of PCCP-conforming modifications implemented to date."
1005
+ },
1006
+ "notes": "PCCP is the FDA's response to the 'locked algorithm' problem for AI/ML medical devices: prior to FDORA § 515C (2022), any change to the algorithm of a cleared/authorized AI/ML device that affected safety or effectiveness typically required a new 510(k) / De Novo / PMA submission, which made iterative model improvement impractical. The PCCP framework lets manufacturers pre-authorize a bounded set of modifications and the validation methods for each. The December 2024 final guidance applies to all medical devices regardless of pathway (510(k), De Novo, PMA) and supersedes the April 2023 draft. Disclosure scope: the FDA-required labeling under 21 CFR Part 801 (device labeling) and the public-facing 510(k) summary / De Novo decision summary / PMA approval order published on FDA's website constitute the public disclosure surface; manufacturers typically also publish device-summary pages on their own websites with current model version and validation data. Use case is `healthcare`. Stack with HHS Section 1557 PCDST nondiscrimination obligations and with state-level rules like California SB 1120 — Physicians Make Decisions Act when the device is used in coverage decisions. The patient-facing element is conditional: most FDA-regulated AI/ML devices are clinician-facing tools, but where the device produces output that is shown to patients (e.g., consumer-facing diabetes risk estimators, certain digital health products), the AI/ML disclosure should be patient-facing. The 'mandatory' severity reflects that AI/ML modifications must be authorized — either through PCCP or through a new submission — and that labeling disclosure is required; the 'recommended' framing applies to design choices about how detailed to make the user-facing AI/ML summary. Verify against the current FDA guidance and any device-class-specific guidance before production deployment."
1007
+ },
1008
+ {
1009
+ "id": "us-fcc-tcpa-ai-voice-robocall-2024",
1010
+ "jurisdiction": "us",
1011
+ "channels": ["voice"],
1012
+ "use_cases": [
1013
+ "b2c-marketing",
1014
+ "b2c-sales",
1015
+ "b2c-customer-support",
1016
+ "civic-or-electoral",
1017
+ "general"
1018
+ ],
1019
+ "severity": "mandatory",
1020
+ "short_title": "FCC Declaratory Ruling — AI-generated voice in robocalls is an 'artificial or prerecorded voice' under TCPA (February 2024)",
1021
+ "summary": "On February 8, 2024, the U.S. Federal Communications Commission issued a Declaratory Ruling (CG Docket No. 23-362, FCC 24-17) confirming that AI-generated voice clones and other AI-synthesized voices used in calls to consumers are 'artificial or prerecorded voices' within the meaning of the Telephone Consumer Protection Act of 1991 (TCPA), 47 U.S.C. § 227(b)(1)(A)–(B), and the Commission's implementing rules at 47 CFR § 64.1200. The ruling means that any robocall to a wireless number that uses an AI-generated voice (or to a residential landline for a telemarketing purpose) requires the called party's prior express written consent (for telemarketing) or prior express consent (for non-telemarketing/informational) — and remains subject to the TCPA's identification-of-caller and opt-out requirements. Statutory damages under the TCPA are $500 per violation (per call), up to $1,500 per willful or knowing violation. State Attorneys General, the FCC, and a private right of action under § 227(b)(3) are all available enforcement paths.",
1022
+ "required_elements": [
1023
+ {
1024
+ "id": "prior-express-consent",
1025
+ "description": "Prior express written consent (for telemarketing AI-voice calls to wireless numbers and residential landlines) or prior express consent (for non-telemarketing/informational AI-voice calls) before placing the call. (Pre-call consent requirement; the consumer-facing disclosure occurs at consent-collection time, not at call time.)",
1026
+ "required": false
1027
+ },
1028
+ {
1029
+ "id": "caller-identification",
1030
+ "description": "At the beginning of the AI-voice call, the message must clearly state the identity of the business, individual, or other entity that is responsible for initiating the call.",
1031
+ "required": true,
1032
+ "example": "This is an automated call from [business name]."
1033
+ },
1034
+ {
1035
+ "id": "callback-number",
1036
+ "description": "During or after the AI-voice message, the called party must be provided with a telephone number (other than that of the autodialer or prerecorded message player) that the called party can use to make a do-not-call request.",
1037
+ "required": true,
1038
+ "example": "To stop receiving calls from us, please call [phone number] or press [digit] now."
1039
+ },
1040
+ {
1041
+ "id": "interactive-opt-out",
1042
+ "description": "For telemarketing AI-voice calls, an automated, interactive voice- and/or key-press-activated opt-out mechanism must be available throughout the duration of the call.",
1043
+ "required": false
1044
+ }
1045
+ ],
1046
+ "citation": {
1047
+ "statute": "Telephone Consumer Protection Act of 1991, codified at 47 U.S.C. § 227; 47 CFR § 64.1200",
1048
+ "section": "FCC Declaratory Ruling, CG Docket No. 23-362, FCC 24-17 (released February 8, 2024)",
1049
+ "source_url": "https://www.fcc.gov/document/fcc-makes-ai-generated-voices-robocalls-illegal",
1050
+ "publisher": "U.S. Federal Communications Commission"
1051
+ },
1052
+ "effective_date": "2024-02-08",
1053
+ "last_verified": "2026-05-08",
1054
+ "template": {
1055
+ "plain": "Notice — Automated Call: This is an automated call from [business name]. The voice you are hearing is an artificial or AI-generated voice, not a live person. To stop receiving calls from us, please press [digit] or call [phone number].",
1056
+ "formal": "Notice under the Telephone Consumer Protection Act, 47 U.S.C. § 227, and the Federal Communications Commission's Declaratory Ruling FCC 24-17 (February 8, 2024) confirming that AI-generated voices in robocalls are 'artificial or prerecorded voices' under the TCPA: This call is being placed by [business name and contact information]. The voice in this call is artificially generated. The called party may opt out of future calls from this caller at any time by [opt-out instructions]. Calls placed in violation of the TCPA are subject to statutory damages of $500 per call, up to $1,500 per willful or knowing violation."
1057
+ },
1058
+ "notes": "The FCC's February 2024 Declaratory Ruling closed an interpretive gap — TCPA's 'artificial or prerecorded voice' language predates AI voice cloning, and there had been arguments that AI-generated voices were not covered. The ruling makes clear they are. Practical consequences: (1) any AI-voice call to a wireless number for any purpose typically requires prior express consent; (2) AI-voice calls for telemarketing require prior express written consent; (3) every AI-voice call must include caller identification and an opt-out path. The ruling stacks with state-level robocall laws (e.g., Florida, Oklahoma, Pennsylvania, Washington) that may impose additional consent or disclosure requirements; with California's B&P § 17941 bot-disclosure rule when the caller is in or reaching California; and with EU AI Act Article 50 when the caller reaches EU residents. The FCC has paired this ruling with separate caller-ID authentication enforcement (STIR/SHAKEN) targeting AI-voice scam robocalls. Class actions under TCPA are common; the per-call statutory damages structure means even small-volume AI-voice campaigns carry significant exposure. Legal-services and political-campaign callers face additional state-law restrictions. The April 2024 FCC Notice of Proposed Rulemaking (CG Docket 23-362) proposed disclosure rules specific to AI-generated content in calls and texts; verify the latest rulemaking status before production deployment."
961
1059
  }
962
1060
  ]
963
1061
  }