diff --git a/backend/alembic/versions/006_add_knowledge_base.py b/backend/alembic/versions/006_add_knowledge_base.py
index e59c668..229b4c7 100644
--- a/backend/alembic/versions/006_add_knowledge_base.py
+++ b/backend/alembic/versions/006_add_knowledge_base.py
@@ -117,7 +117,7 @@ def upgrade() -> None:
conn = op.get_bind()
kb_seeds = [
- ("legal", "Legal", "Legal compliance, advertising standards, disclaimers, and financial promotion rules."),
+ ("legal", "Risk & Control", "Legal compliance, advertising standards, disclaimers, and financial promotion rules."),
("brand_barclays", "Brand (Barclays)", "Barclays brand guidelines: logo usage, colors, typography, and design principles."),
("brand_barclaycard", "Brand (Barclaycard)", "Barclaycard brand guidelines: logo usage, colors, typography, and design principles."),
("channel_best_practices", "Channel Best Practices", "Channel-specific best practices for social, display, email, print, and OOH."),
diff --git a/backend/alembic/versions/010_rename_legal_kb_to_risk_control.py b/backend/alembic/versions/010_rename_legal_kb_to_risk_control.py
new file mode 100644
index 0000000..cce634b
--- /dev/null
+++ b/backend/alembic/versions/010_rename_legal_kb_to_risk_control.py
@@ -0,0 +1,29 @@
+"""Rename Legal knowledge base to Risk & Control
+
+Revision ID: 010_rename_legal_kb
+Revises: 009_production_agencies
+Create Date: 2026-05-14
+
+"""
+from alembic import op
+
+revision: str = '010_rename_legal_kb'
+down_revision: str = '009_production_agencies'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ op.execute("""
+ UPDATE knowledge_bases
+ SET display_name = 'Risk & Control'
+ WHERE agent_key = 'legal'
+ """)
+
+
+def downgrade() -> None:
+ op.execute("""
+ UPDATE knowledge_bases
+ SET display_name = 'Legal'
+ WHERE agent_key = 'legal'
+ """)
diff --git a/backend/app/agents/lead_agent.py b/backend/app/agents/lead_agent.py
index 3438fcf..3a3a792 100755
--- a/backend/app/agents/lead_agent.py
+++ b/backend/app/agents/lead_agent.py
@@ -95,7 +95,7 @@ In your summary:
Returns:
Tuple of (overall_status, summary, financial_promotion_reason)
"""
- legal_review = reviews.get("Legal Agent")
+ legal_review = reviews.get("Risk & Control Agent")
# Check for financial promotion (from Legal Agent)
is_financial_promotion = (
@@ -129,7 +129,7 @@ Your task is to determine the final status and write a concise, professional sum
{metadata_context}
Here is the logic you must follow:
-1. The Legal Agent has determined if this is a financial promotion: {is_financial_promotion}.
+1. The Risk & Control Agent has determined if this is a financial promotion: {is_financial_promotion}.
2. If it IS a financial promotion, the final verdict MUST be 'Requires Manual Legal Review'. Your summary should state this clearly, explain that a separate manual legal review is required, and then summarize any other issues found by the other agents.
3. If it is NOT a financial promotion, follow the standard logic:
a. If ANY specialist agent reports a 'ragStatus' of 'Error', the final verdict MUST be 'Analysis Error'.
@@ -205,7 +205,7 @@ Now, provide your final status and summary as a JSON object.
This can be used as a fallback or for faster processing.
"""
- legal_review = reviews.get("Legal Agent")
+ legal_review = reviews.get("Risk & Control Agent")
# Check for financial promotion
if legal_review and legal_review.isFinancialPromotion:
diff --git a/backend/app/agents/legal_agent.py b/backend/app/agents/legal_agent.py
index 257bdfc..557dbd5 100755
--- a/backend/app/agents/legal_agent.py
+++ b/backend/app/agents/legal_agent.py
@@ -9,7 +9,7 @@ from app.services.reference_docs import ReferenceDocsService
class LegalAgent(BaseAgent):
"""Legal Agent - analyzes proofs for legal compliance using Gemini."""
- name = "Legal Agent"
+ name = "Risk & Control Agent"
def __init__(self, gemini_service: GeminiService, reference_docs: ReferenceDocsService):
"""
diff --git a/backend/app/main.py b/backend/app/main.py
index bec2a75..4cd1595 100755
--- a/backend/app/main.py
+++ b/backend/app/main.py
@@ -134,7 +134,7 @@ async def info(user: dict = Depends(get_current_user)):
return {
"status": "ready",
"user": user.get("name", "Unknown"),
- "agents": ["Legal Agent", "Brand Agent", "Channel Best Practices Agent", "Channel Tech Specs Agent"],
+ "agents": ["Risk & Control Agent", "Brand Agent", "Channel Best Practices Agent", "Channel Tech Specs Agent"],
"reference_docs": doc_summary,
}
return {"status": "initializing", "user": user.get("name", "Unknown")}
diff --git a/backend/app/services/analysis_service.py b/backend/app/services/analysis_service.py
index 8134872..27f8901 100755
--- a/backend/app/services/analysis_service.py
+++ b/backend/app/services/analysis_service.py
@@ -27,11 +27,11 @@ class AnalysisService:
"""
# Agent execution order
- AGENT_ORDER = ["Legal Agent", "Brand Agent", "Channel Best Practices Agent", "Channel Tech Specs Agent"]
+ AGENT_ORDER = ["Risk & Control Agent", "Brand Agent", "Channel Best Practices Agent", "Channel Tech Specs Agent"]
# Mapping from agent name to the key in AgentReview/previous_analysis dict
AGENT_REVIEW_KEY_MAP = {
- "Legal Agent": "legalAgentReview",
+ "Risk & Control Agent": "legalAgentReview",
"Brand Agent": "brandAgentReview",
"Channel Best Practices Agent": "channelBestPracticesAgentReview",
"Channel Tech Specs Agent": "channelTechSpecsAgentReview",
@@ -54,7 +54,7 @@ class AnalysisService:
# Initialize agents
self.agents = {
- "Legal Agent": LegalAgent(gemini_service, reference_docs),
+ "Risk & Control Agent": LegalAgent(gemini_service, reference_docs),
"Brand Agent": BrandAgent(gemini_service, reference_docs),
"Channel Best Practices Agent": ChannelBestPracticesAgent(gemini_service, reference_docs),
"Channel Tech Specs Agent": ChannelTechSpecsAgent(gemini_service, reference_docs),
@@ -230,7 +230,7 @@ class AnalysisService:
# Build the complete AgentReview
return AgentReview(
- legalAgentReview=reviews["Legal Agent"],
+ legalAgentReview=reviews["Risk & Control Agent"],
brandAgentReview=reviews["Brand Agent"],
channelBestPracticesAgentReview=reviews["Channel Best Practices Agent"],
channelTechSpecsAgentReview=reviews["Channel Tech Specs Agent"],
diff --git a/frontend/components/Analytics.tsx b/frontend/components/Analytics.tsx
index 2a72267..d1c66d6 100755
--- a/frontend/components/Analytics.tsx
+++ b/frontend/components/Analytics.tsx
@@ -9,7 +9,7 @@ import apiService, { AnalyticsResponse, AgencyAnalyticsItem } from '../services/
// Agent performance is still static for now - would need separate API
const agentPerformance = [
- { name: 'Legal Agent', passRate: 85, avgIssues: 1.2, trend: 'up' },
+ { name: 'Risk & Control Agent', passRate: 85, avgIssues: 1.2, trend: 'up' },
{ name: 'Brand Agent', passRate: 68, avgIssues: 2.5, trend: 'down' },
{ name: 'Channel Best Practices Agent', passRate: 92, avgIssues: 0.8, trend: 'up' },
{ name: 'Channel Tech Specs Agent', passRate: 71, avgIssues: 1.9, trend: 'stable' },
diff --git a/frontend/components/Campaigns.tsx b/frontend/components/Campaigns.tsx
index d3bb65d..9f1df6f 100755
--- a/frontend/components/Campaigns.tsx
+++ b/frontend/components/Campaigns.tsx
@@ -1056,7 +1056,7 @@ const AnalysisErrorModal: React.FC<{
if (!isOpen || !feedback) return null;
const agentEntries: { label: string; review: { ragStatus: string; feedback: string } }[] = [
- { label: 'Legal Agent', review: feedback.legalAgentReview },
+ { label: 'Risk & Control Agent', review: feedback.legalAgentReview },
{ label: 'Brand Agent', review: feedback.brandAgentReview },
{ label: 'Channel Best Practices Agent', review: feedback.channelBestPracticesAgentReview },
{ label: 'Channel Tech Specs Agent', review: feedback.channelTechSpecsAgentReview },
diff --git a/frontend/components/ChecksOverview.tsx b/frontend/components/ChecksOverview.tsx
index e02fe4e..bf59918 100755
--- a/frontend/components/ChecksOverview.tsx
+++ b/frontend/components/ChecksOverview.tsx
@@ -14,7 +14,7 @@ interface CheckDetail {
const specialistAgents: CheckDetail[] = [
{
- name: 'Legal Agent',
+ name: 'Risk & Control Agent',
icon: ,
role: 'Standards & Disclaimers',
description: 'Ensures compliance with all regulatory requirements.'
diff --git a/frontend/components/FeedbackReport.tsx b/frontend/components/FeedbackReport.tsx
index 8659e3b..858af61 100755
--- a/frontend/components/FeedbackReport.tsx
+++ b/frontend/components/FeedbackReport.tsx
@@ -871,7 +871,7 @@ export const FeedbackReport: React.FC<{
};
const agentReviews = [
- { title: 'Legal Agent', review: feedback.legalAgentReview },
+ { title: 'Risk & Control Agent', review: feedback.legalAgentReview },
{ title: 'Brand Agent', review: feedback.brandAgentReview },
{ title: 'Channel Best Practices Agent', review: feedback.channelBestPracticesAgentReview },
{ title: 'Channel Tech Specs Agent', review: feedback.channelTechSpecsAgentReview },
diff --git a/frontend/components/PDFReport.tsx b/frontend/components/PDFReport.tsx
index c94af27..ea82196 100755
--- a/frontend/components/PDFReport.tsx
+++ b/frontend/components/PDFReport.tsx
@@ -165,7 +165,7 @@ export const PDFReport: React.FC = ({ campaignName, proofs }) =>
const feedback: AgentReview = version.feedback;
const agentReviews = [
- { title: 'Legal Agent', review: feedback.legalAgentReview, icon: },
+ { title: 'Risk & Control Agent', review: feedback.legalAgentReview, icon: },
{ title: 'Brand Agent', review: feedback.brandAgentReview, icon: },
{ title: 'Channel Best Practices Agent', review: feedback.channelBestPracticesAgentReview, icon: },
{ title: 'Channel Tech Specs Agent', review: feedback.channelTechSpecsAgentReview, icon: },
diff --git a/frontend/components/Projects.tsx b/frontend/components/Projects.tsx
index 6d71986..2855e7c 100755
--- a/frontend/components/Projects.tsx
+++ b/frontend/components/Projects.tsx
@@ -490,7 +490,7 @@ const AnalysisErrorModal: React.FC<{
if (!isOpen || !feedback) return null;
const agentEntries: { label: string; review: { ragStatus: string; feedback: string } }[] = [
- { label: 'Legal Agent', review: feedback.legalAgentReview },
+ { label: 'Risk & Control Agent', review: feedback.legalAgentReview },
{ label: 'Brand Agent', review: feedback.brandAgentReview },
{ label: 'Channel Best Practices Agent', review: feedback.channelBestPracticesAgentReview },
{ label: 'Channel Tech Specs Agent', review: feedback.channelTechSpecsAgentReview },
diff --git a/frontend/components/StatusDashboard.tsx b/frontend/components/StatusDashboard.tsx
index 4917750..4127d02 100755
--- a/frontend/components/StatusDashboard.tsx
+++ b/frontend/components/StatusDashboard.tsx
@@ -19,7 +19,7 @@ interface StatusInfoProps {
// FIX: Storing components instead of instantiated elements to avoid React.cloneElement type issues.
const agentIcons: Record>> = {
- 'Legal Agent': LegalIcon,
+ 'Risk & Control Agent': LegalIcon,
'Brand Agent': BrandIcon,
'Channel Best Practices Agent': ChannelIcon,
'Channel Tech Specs Agent': ChannelIcon,
diff --git a/frontend/constants.ts b/frontend/constants.ts
index fc5554c..0216722 100755
--- a/frontend/constants.ts
+++ b/frontend/constants.ts
@@ -1,4 +1,4 @@
import type { AgentName } from './types';
-export const AGENT_NAMES: AgentName[] = ['Legal Agent', 'Brand Agent', 'Channel Best Practices Agent', 'Channel Tech Specs Agent'];
\ No newline at end of file
+export const AGENT_NAMES: AgentName[] = ['Risk & Control Agent', 'Brand Agent', 'Channel Best Practices Agent', 'Channel Tech Specs Agent'];
\ No newline at end of file
diff --git a/frontend/types.ts b/frontend/types.ts
index d700561..77a98cb 100755
--- a/frontend/types.ts
+++ b/frontend/types.ts
@@ -1,5 +1,5 @@
// Fix: Broke a circular dependency by defining the AgentName type directly in this file instead of importing it.
-export type AgentName = 'Legal Agent' | 'Brand Agent' | 'Channel Best Practices Agent' | 'Channel Tech Specs Agent';
+export type AgentName = 'Risk & Control Agent' | 'Brand Agent' | 'Channel Best Practices Agent' | 'Channel Tech Specs Agent';
// RBAC types
export type UserRole = 'super_admin' | 'oversight_admin' | 'agency_admin' | 'basic_user';