Profiles¶
A profile is the reusable, written-once version of a disclosure: it
references a grade, and adds who holds editorial responsibility,
whether the content was reviewed, the four Article 50(4) scope
answers, and the shared "How AI was used" text shown to the
reader. Content references a profile instead of duplicating this text, so
editing a profile updates everything that uses it. Manage them at
/admin/config/content/ai-disclosure/profiles.
This is where the assessment is worth answering. A profile answers once for every bundle that inherits it, on any entity type. Answer here first, and use the content item only for the exceptions.

The form's fields:
- Grade. The AI disclosure grade this profile applies.
- Human review. Whether substantive human review with editorial control took place for content using this profile.
- Editorial responsibility. Who answers for content using this profile. Article 50(4) exempts reviewed content only where a natural or legal person holds editorial responsibility, so the exemption needs both: the review and a name. A profile that ticks human review and leaves this empty cannot be saved, from the form or from a configuration import. See Article 50.
- The four scope questions. Is this a deep fake in image, audio or video, or is it text? And then, for the branch that applies: is it part of an evidently artistic work; is it published to inform the public; does it concern matters of public interest. Each is yes, no or not assessed, and "not assessed" is the default. The module never fills one in for you: an answer here is an assertion by whoever configures the site.
- Description. Markdown text shown to the reader as "How AI was used". An individual piece of content can override it with its own text.

The machine names are a stable API¶
Same as grades: other modules reference profiles by ID through the recorder API, so machine names are not renamed within a major version. The label and description are translatable.
Where profiles are used¶
- A field's instance settings name a default profile; content left in inherit mode takes its disclosure from there, scope answers included - as one block, never mixed with local ones.
- An editor picks a profile in the widget's profile mode.
- Code applies a profile through
applyProfile()on the recorder.