Umbraco.Community.LegalReview
1.0.0
dotnet add package Umbraco.Community.LegalReview --version 1.0.0
NuGet\Install-Package Umbraco.Community.LegalReview -Version 1.0.0
<PackageReference Include="Umbraco.Community.LegalReview" Version="1.0.0" />
<PackageVersion Include="Umbraco.Community.LegalReview" Version="1.0.0" />
<PackageReference Include="Umbraco.Community.LegalReview" />
paket add Umbraco.Community.LegalReview --version 1.0.0
#r "nuget: Umbraco.Community.LegalReview, 1.0.0"
#:package Umbraco.Community.LegalReview@1.0.0
#addin nuget:?package=Umbraco.Community.LegalReview&version=1.0.0
#tool nuget:?package=Umbraco.Community.LegalReview&version=1.0.0
Legal Review
AI-powered legal and regulatory review for Umbraco content.
For editorial teams publishing marketing, product, or commerce copy who want to catch risky phrasing before it reaches legal — or goes live.
Adds a Legal review tab to every document in the Content section. One click scans the page for phrases that could expose the publisher to consumer-protection, advertising-standards, defamation, or regulatory liability, fact-checks the underlying claims, and deep-links you back to the exact property or block so the fix is one tab away.

⚠️ Not legal advice. This is a first-pass signal from an LLM to catch obvious risks earlier in the editorial workflow. It doesn't replace review by a qualified lawyer.
What it catches
Given a page with copy like:
"Our clinically proven supplement delivers guaranteed 100% results, making us the #1 choice for health-conscious buyers."
You'd get back something like:
- health-claim ·
critical· "clinically proven" — requires FDA/EMA-level evidence. Suggest: "clinical studies suggest…" - absolute-safety ·
high· "100% results" — unsubstantiable absolute claim. Suggest: "many customers report…" - guarantee-or-warranty ·
high· "guaranteed" — naked guarantee without conditions. Suggest: "backed by our 30-day money-back guarantee" - unsubstantiated-superlative ·
medium· "#1 choice" — needs a citation. Suggest: "a popular choice"
Plus an overall risk score and one-line summary for the page.
What you get back
| Field | What it is |
|---|---|
riskScore |
0–100 overall legal risk for the page |
summary |
One-sentence verdict of the top concerns |
flags[] |
One entry per risky phrase — see below |
Each flag has:
| Field | What it is |
|---|---|
phrase |
The exact offending text, quoted verbatim from your content |
category |
health-claim, greenwashing, unsubstantiated-superlative, defamation, pricing-deception, guarantee-or-warranty, absolute-safety, financial-claim, ip-misuse, endorsement-without-substantiation, other |
riskLevel |
low · medium · high · critical |
factualAssessment |
claim-is-true · claim-is-false · unverifiable · not-a-factual-claim |
propertyAlias + blockKey |
The property (and block, if any) that contains the phrase — powers the deep-link |
explanation |
One sentence on why it's risky |
suggestedFix |
A safer rewrite, or remove |

Configurable
Under the AI → Add-ons → Legal Review settings workspace:
- Jurisdiction — EU / UK / US / generic (different regulatory framing per region).
- Enabled categories — turn off categories that don't apply to your site.
- Always-flag / never-flag phrases — brand-specific banned words, or phrases already pre-approved by legal.
- Industry context — one sentence that reshapes the whole review ("Danish medical device manufacturer" → health claims get extra scrutiny).
- Custom instructions — free text appended to the system prompt.
The result is cached per document in localStorage, survives tab switches, syncs across browser tabs, and gets marked stale when the page has been edited since the review was run.

Requirements
- Umbraco CMS v17+
- Umbraco.AI and at least one provider (
Umbraco.AI.OpenAI,Umbraco.AI.Google,Umbraco.AI.Anthropic, …) - An
Umbraco.AI.Persistence.*package (e.g.Umbraco.AI.Persistence.SqliteorUmbraco.AI.Persistence.SqlServer) matching your Umbraco database
Installation
dotnet add package Umbraco.Community.LegalReview
The package brings in Umbraco.AI as a dependency. You still need to install the provider and persistence packages separately — e.g. for SQLite + Google Gemini:
dotnet add package Umbraco.AI.Google
dotnet add package Umbraco.AI.Persistence.Sqlite
Configuration
After a fresh boot:
- Open the Umbraco backoffice and log in.
- Go to the AI section.
- Under Configuration → Connections, add a provider and paste your API key.
- Under Configuration → Profiles, create a chat profile pointing at that connection and model.
- Under Configuration → Settings, set your new profile as the Default Chat Profile.
- (Optional) Under Add-ons → Legal Review, tune jurisdiction, enabled categories, industry context, and always/never-flag lists.
- Open any document and click the Legal review tab → Review content.
Status
Early preview. The prompt and category taxonomy are still evolving — feedback and edge cases are very welcome via GitHub Issues.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Umbraco.AI (>= 1.9.0)
- Umbraco.Cms.Api.Common (>= 17.3.4)
- Umbraco.Cms.Api.Management (>= 17.3.4)
- Umbraco.Cms.Web.Common (>= 17.3.4)
- Umbraco.Cms.Web.Website (>= 17.3.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.