Skip to content

Content Categories

import { Aside, Badge } from ‘@astrojs/starlight/components’;

Content Categories give Arbitex policy rules semantic context about the subject matter of an AI conversation. Where DLP rules detect what kind of data is present (PII, credentials, financial account numbers), Content Categories detect what topic or domain the conversation is about (medical advice, legal strategy, financial analysis).

Combining DLP findings with category context enables richer enforcement:

IF category = "medical/clinical-advice" AND user.group = "general-employees"
THEN action = block, reason = "Medical advice outside approved personas"
IF category = "financial/investment-research" AND dlp.finding = "material-nonpublic"
THEN action = block + alert, reason = "Potential insider trading risk"

The Arbitex content category system organizes topics into 8 top-level domains with 25 subcategories. Classification is performed by the Tier 3 DeBERTa model (the same model used for DLP classification).

DomainSubcategoriesPrimary Use Cases
medical4Clinical advice, drug information, diagnostic support, mental health
legal3Contract review, litigation strategy, regulatory compliance
financial4Investment research, M&A analysis, trading signals, tax advice
hr3Compensation data, performance reviews, hiring decisions
security3Vulnerability research, exploit development, security tooling
political3Electoral content, lobbying, policy advocacy
personal3Relationship advice, personal health, religious/spiritual topics
technical2Code generation, architecture design
Subcategory IDLabelDescription
medical/clinical-adviceClinical AdviceDiagnosis, treatment recommendations, clinical decision support
medical/drug-informationDrug InformationMedication dosing, interactions, pharmacology
medical/mental-healthMental HealthTherapy, psychiatric conditions, crisis support
medical/public-healthPublic HealthEpidemiology, vaccination, disease surveillance
Subcategory IDLabelDescription
legal/contract-reviewContract ReviewContract drafting, clause analysis, legal obligations
legal/litigationLitigation StrategyCase strategy, discovery, settlement negotiations
legal/regulatoryRegulatory ComplianceRegulatory requirements, filings, compliance programs
Subcategory IDLabelDescription
financial/investment-researchInvestment ResearchEquity analysis, market research, investment recommendations
financial/ma-analysisM&A AnalysisDeal structuring, due diligence, valuation
financial/tradingTrading SignalsMarket timing, trading strategies, price predictions
financial/taxTax AdviceTax planning, filing strategy, cross-border tax
Subcategory IDLabelDescription
hr/compensationCompensationSalary bands, bonus structure, equity plans
hr/performancePerformance ReviewsEmployee evaluations, PIPs, termination decisions
hr/hiringHiring DecisionsCandidate screening, interview scoring, offer decisions
Subcategory IDLabelDescription
security/vulnerability-researchVulnerability ResearchCVE analysis, security research, threat modeling
security/exploit-developmentExploit DevelopmentExploit PoC, attack tooling, offensive security
security/security-toolingSecurity ToolingPen testing tools, SIEM queries, detection engineering
Subcategory IDLabelDescription
political/electoralElectoral ContentVoting, candidates, election administration
political/lobbyingLobbyingGovernment relations, advocacy campaigns
political/policyPolicy AdvocacyPolicy positions, regulatory advocacy
Subcategory IDLabelDescription
personal/relationshipsRelationshipsRomantic advice, family dynamics, interpersonal conflict
personal/healthPersonal HealthNon-clinical health topics, wellness, fitness
personal/spiritualReligious / SpiritualReligious practices, spiritual counseling
Subcategory IDLabelDescription
technical/code-generationCode GenerationWriting, reviewing, or debugging code
technical/architectureArchitecture DesignSystem design, infrastructure planning

Categories follow a two-level hierarchy: domain/subcategory. Policy rules can match at either level:

  • Domain-level match: category.startsWith("medical") — matches all medical subcategories
  • Subcategory match: category == "medical/clinical-advice" — matches exact subcategory only
# Policy rule using domain-level match
- name: "Block all medical advice for general employees"
conditions:
- field: content.category
operator: starts_with
value: "medical"
- field: user.groups
operator: not_contains
value: "approved-medical-ai-users"
action: block
reason: "Medical AI use restricted to approved users"
# Policy rule using exact subcategory
- name: "Flag exploit development content"
conditions:
- field: content.category
operator: equals
value: "security/exploit-development"
action: flag
severity: high
reason: "Potential offensive security use"

Each classification result includes a confidence score (0.0–1.0). Policy conditions can filter by minimum confidence to reduce false positives:

conditions:
- field: content.category
operator: equals
value: "financial/investment-research"
- field: content.category_confidence
operator: gte
value: 0.75

The default confidence threshold for category-based policy conditions is 0.70. Conversations below threshold are treated as uncategorized.


When enable_content_categories is enabled, the following condition fields become available in the Policy Engine rule builder:

FieldTypeDescription
content.categorystringTop predicted category (e.g., "medical/clinical-advice")
content.category_domainstringDomain portion only (e.g., "medical")
content.category_confidencefloatClassification confidence score (0.0–1.0)
content.category_scoresmap<string,float>Scores for all categories above 0.05 threshold
content.is_uncategorizedboolTrue if top score < configured threshold
OperatorApplicable FieldsDescription
equalscategory, category_domainExact match
not_equalscategory, category_domainExclude specific category
starts_withcategoryDomain-level match (e.g., "medical")
incategory, category_domainMatch any of a list of values
not_incategory, category_domainExclude any of a list
gte / ltecategory_confidenceConfidence threshold filter

Use Case 1: Restrict Medical Content by Role

Section titled “Use Case 1: Restrict Medical Content by Role”

Scenario: A healthcare company deploys Arbitex as a productivity assistant. Clinical staff are allowed to use the medical AI persona; general employees are not.

rules:
- name: "Medical content — general employees blocked"
priority: 100
conditions:
- field: content.category_domain
operator: equals
value: "medical"
- field: user.groups
operator: not_contains
value: "clinical-staff"
action: block
message: "Medical AI assistance is available to clinical staff only. Contact your administrator to request access."
- name: "Clinical advice — require step-up auth"
priority: 90
conditions:
- field: content.category
operator: equals
value: "medical/clinical-advice"
- field: user.groups
operator: contains
value: "clinical-staff"
- field: user.mfa_verified
operator: equals
value: false
action: require_mfa
reason: "Clinical advice requires MFA step-up"

Use Case 2: Financial Content with DLP Combination

Section titled “Use Case 2: Financial Content with DLP Combination”

Scenario: A financial services firm wants to prevent AI use for investment research when material non-public information (MNPI) is detected in the conversation.

rules:
- name: "Investment research + MNPI — block and alert"
priority: 200
conditions:
- field: content.category
operator: equals
value: "financial/investment-research"
- field: dlp.findings
operator: contains_type
value: "material-nonpublic-information"
action: block
alert:
severity: critical
channels: ["compliance-team", "legal-team"]
reason: "Potential MNPI in investment research context"
- name: "M&A analysis — restrict to deal team"
priority: 150
conditions:
- field: content.category
operator: equals
value: "financial/ma-analysis"
- field: user.groups
operator: not_contains
value: "deal-team"
action: block
reason: "M&A AI analysis restricted to active deal team members"

Use Case 3: Allow Technical Content, Restrict Exploit Development

Section titled “Use Case 3: Allow Technical Content, Restrict Exploit Development”

Scenario: A technology company wants to allow general code generation but restrict exploit development content.

rules:
- name: "Allow code generation broadly"
priority: 50
conditions:
- field: content.category
operator: equals
value: "technical/code-generation"
action: allow
- name: "Flag exploit development"
priority: 300
conditions:
- field: content.category
operator: equals
value: "security/exploit-development"
- field: user.groups
operator: not_contains
value: "security-research-team"
action: flag
severity: high
reason: "Exploit development content outside security research team"

The DeBERTa Tier 3 model provides category classification with the following performance characteristics (based on internal evaluation corpus):

MetricValueNotes
Top-1 accuracy~87%Correct subcategory predicted
Top-3 accuracy~96%Correct category in top 3 predictions
Average latency45–80msGPU inference, p50
P99 latency~200msUnder normal load
False positive rate~4%At default 0.70 threshold
uncategorized rate~12%General/conversational content

Content Categories are gated behind the enable_content_categories org-level feature flag:

Terminal window
# Enable for your organization (admin API)
curl -X PUT https://api.arbitex.example.com/api/admin/org/feature-flags \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enable_content_categories": true}'
  • DeBERTa Tier 3 service must be running (GPU node required)
  • Minimum GPU memory: 10 GB VRAM (A10G or equivalent)
  • DeBERTa model must be trained or fine-tuned for the Arbitex category taxonomy (model ID: arbitex-deberta-v3-categories-v1)

See Kubernetes Deployment for GPU node pool configuration.

Category classification decisions are recorded in the audit log with the following fields:

{
"event_type": "content_category_classified",
"request_id": "req_abc123",
"category": "financial/investment-research",
"category_confidence": 0.89,
"category_scores": {
"financial/investment-research": 0.89,
"financial/trading": 0.06,
"financial/ma-analysis": 0.03
},
"policy_rule_triggered": "investment-research-restrict",
"action_taken": "block"
}

The following capabilities are planned for the Content Categories GA release:

FeatureStatusTarget
8-domain / 25-subcategory taxonomyIn developmentQ2 2026
Policy Engine integrationIn developmentQ2 2026
Custom category fine-tuningPlannedQ3 2026
Category-level audit dashboardPlannedQ3 2026
Per-group category allowlistsPlannedQ3 2026
Multi-label classification (multiple categories per conversation)ResearchQ4 2026