Skip to main content

Vertical Specialists

Domain-specific AI agents with specialized prompts, tools, compliance checking, and model configurations.

Overview

The Vertical Specialist System provides domain-specific AI agents that extend the base APIAgent with:

  • Domain-Specific System Prompts - Jinja2 templates tailored to each vertical's expertise
  • Specialized Tools - Domain tools like code search, legal case lookup, or PubMed search
  • Compliance Checking - Automated checks against frameworks like OWASP, HIPAA, SOX, GDPR
  • Fine-Tuned Model Support - Optional HuggingFace models and LoRA adapters

Available Verticals

VerticalIDExpertise AreasCompliance Frameworks
Software EngineeringsoftwareCode Review, Security Analysis, Architecture DesignOWASP, CWE
LegallegalContract Analysis, Regulatory Compliance, Risk AssessmentGDPR, CCPA, HIPAA
HealthcarehealthcareClinical Documentation, Medical Research, HIPAA ComplianceHIPAA, HITECH, FDA 21 CFR Part 11
AccountingaccountingFinancial Statement Analysis, Audit & Assurance, SOX ComplianceSOX, GAAP, PCAOB
ResearchresearchResearch Methodology, Statistical Analysis, Literature ReviewIRB, CONSORT, PRISMA

Quick Start

Python SDK

from aragora.verticals import VerticalRegistry

# Create a vertical specialist
software_agent = VerticalRegistry.create_specialist(
"software",
name="code-reviewer-1",
model="claude-sonnet-4",
)

# Generate a response
response = await software_agent.respond(
task="Review this code for security vulnerabilities",
prompt_context={"code": code_to_review}
)

# Perform code review
review_results = await software_agent.review_code(
code=code_to_review,
language="python",
focus_areas=["security", "quality"]
)

REST API

# List available verticals
curl http://localhost:8080/api/verticals

# Get vertical configuration
curl http://localhost:8080/api/verticals/software

# Suggest best vertical for a task
curl "http://localhost:8080/api/verticals/suggest?task=review+this+contract"

# Create a specialist agent
curl -X POST http://localhost:8080/api/verticals/software/agent \
-H "Content-Type: application/json" \
-d '{"name": "reviewer-1", "model": "claude-sonnet-4"}'

# Run a vertical-specific debate
curl -X POST http://localhost:8080/api/verticals/legal/debate \
-H "Content-Type: application/json" \
-d '{"topic": "Review this NDA for risks", "rounds": 3}'

Vertical Details

Software Engineering Specialist

Expert in software development, code review, security analysis, and architecture design.

Expertise Areas:

  • Code Review
  • Security Analysis
  • Architecture Design
  • Performance Optimization
  • Testing Strategy
  • API Design
  • Database Design
  • DevOps & CI/CD
  • Technical Documentation

Tools:

ToolDescription
code_searchSearch codebase for patterns or symbols
security_scanRun security analysis on code
dependency_checkCheck for vulnerable dependencies
github_lookupLook up GitHub issues or PRs

Compliance Frameworks:

  • OWASP Top 10 (2021) - A01-A10 vulnerability checks
  • CWE - Common Weakness Enumeration (CWE-20, CWE-78, CWE-79, CWE-89, CWE-200, CWE-502)

Security Patterns Detected:

  • SQL Injection
  • Command Injection
  • Cross-Site Scripting (XSS)
  • Hardcoded Secrets

Usage Example:

software_specialist = VerticalRegistry.create_specialist("software", name="reviewer")

# Review code for security issues
review = await software_specialist.review_code(
code=source_code,
language="python",
focus_areas=["security", "quality", "performance"]
)

# Check compliance
violations = await software_specialist.check_compliance(source_code)

Expert in contract analysis, compliance review, and regulatory matters.

Expertise Areas:

  • Contract Analysis
  • Regulatory Compliance
  • Risk Assessment
  • Legal Research
  • Document Review
  • Due Diligence
  • Privacy Law
  • Intellectual Property
  • Employment Law

Tools:

ToolDescription
case_searchSearch legal case databases (Westlaw/Lexis/CourtListener)
statute_lookupLook up statutes and regulations
contract_compareCompare contract versions

Compliance Frameworks:

  • GDPR - Data processing, consent, rights, transfers, breach notification
  • CCPA - Disclosure, opt-out, deletion, nondiscrimination
  • HIPAA - Privacy, security, breach notification (enforced)

Clause Patterns Detected:

  • Indemnification clauses
  • Limitation of liability
  • Termination provisions
  • Confidentiality clauses
  • Intellectual property terms

Usage Example:

legal_specialist = VerticalRegistry.create_specialist("legal", name="contract-reviewer")

# Analyze a contract
analysis = await legal_specialist.analyze_contract(
contract_text=contract_content,
focus_areas=["indemnification", "termination", "confidentiality"]
)

# Check for GDPR compliance
violations = await legal_specialist.check_compliance(
contract_content,
framework="GDPR"
)

Healthcare Specialist

Expert in clinical analysis, medical research, and health informatics.

Expertise Areas:

  • Clinical Documentation
  • Medical Research
  • Health Informatics
  • HIPAA Compliance
  • Drug Interactions
  • Clinical Trials
  • Patient Safety
  • Healthcare Analytics
  • Medical Coding

Tools:

ToolDescription
pubmed_searchSearch PubMed for medical literature
drug_lookupLook up drug information and interactions
icd_lookupLook up ICD-10 codes
clinical_guidelinesSearch clinical practice guidelines

Compliance Frameworks:

  • HIPAA - Privacy Rule, Security Rule, Breach Notification, Minimum Necessary (enforced)
  • HITECH - Breach notification, EHR incentives, enforcement (enforced)
  • FDA 21 CFR Part 11 - Electronic records, signatures, audit trails

PHI Detection: The healthcare specialist automatically detects Protected Health Information (PHI) using HIPAA Safe Harbor patterns:

  • Names, dates, phone numbers, email addresses
  • Social Security Numbers, Medical Record Numbers
  • Physical addresses

Usage Example:

healthcare_specialist = VerticalRegistry.create_specialist("healthcare", name="clinical-reviewer")

# Analyze a clinical document
analysis = await healthcare_specialist.analyze_clinical_document(
document_text=clinical_note,
document_type="clinical_note"
)

# Check de-identification status
deidentification = await healthcare_specialist.check_deidentification(document_content)

Accounting & Finance Specialist

Expert in financial analysis, audit, compliance, and accounting standards.

Expertise Areas:

  • Financial Statement Analysis
  • Audit & Assurance
  • SOX Compliance
  • Tax Planning
  • Internal Controls
  • Revenue Recognition
  • Cost Accounting
  • Financial Reporting
  • Regulatory Compliance

Tools:

ToolDescription
sec_filingsSearch SEC filings and documents
gaap_lookupLook up GAAP accounting standards (licensed FASB proxy)
ratio_calculatorCalculate financial ratios
tax_referenceLook up tax regulations and rates (IRS proxy)

Compliance Frameworks:

  • SOX - Section 302, 404, 802, 906 (enforced)
  • GAAP - Revenue recognition, fair value, leases, disclosure (enforced)
  • PCAOB - AS 2201, AS 3101, AS 2110

Financial Ratios Supported:

  • Current Ratio, Quick Ratio
  • Debt to Equity, Return on Equity
  • Gross Margin, Net Margin

Fraud Indicators Detected:

  • Management override, circumvention
  • Unusual transactions or adjustments
  • Significant related party transactions
  • Aggressive accounting practices

Usage Example:

accounting_specialist = VerticalRegistry.create_specialist("accounting", name="auditor")

# Analyze financial statements
analysis = await accounting_specialist.analyze_financial_statement(
statement_text=financial_data,
statement_type="income_statement"
)

# Review internal controls
control_review = await accounting_specialist.review_internal_controls(
control_description=control_documentation
)

# Calculate financial ratios
ratios = await accounting_specialist.invoke_tool("ratio_calculator", {
"current_assets": 1000000,
"current_liabilities": 500000,
"revenue": 5000000,
"net_income": 750000
})

Research Specialist

Expert in research methodology, literature analysis, and scientific writing.

Expertise Areas:

  • Literature Review
  • Research Methodology
  • Statistical Analysis
  • Scientific Writing
  • Peer Review
  • Research Ethics
  • Data Analysis
  • Citation Analysis
  • Meta-Analysis

Tools:

ToolDescription
arxiv_searchSearch arXiv for preprints
pubmed_searchSearch PubMed for medical literature
semantic_scholarSearch Semantic Scholar for papers
citation_checkVerify citations and check for retractions

Compliance Frameworks:

  • IRB - Informed consent, minimal risk, privacy, vulnerable populations (enforced)
  • CONSORT (2010) - Randomization, blinding, outcomes, sample size, flow diagram
  • PRISMA (2020) - Search strategy, selection, synthesis, bias assessment

Methodology Patterns Detected:

  • Study designs (RCT, cohort, case-control, meta-analysis)
  • Statistical methods (t-test, ANOVA, chi-square, regression)
  • Sampling approaches (random, convenience, stratified)
  • Bias indicators (selection, confirmation, publication)

Citation Styles Detected:

  • APA, MLA, Chicago
  • DOI extraction

Usage Example:

research_specialist = VerticalRegistry.create_specialist("research", name="methodology-reviewer")

# Analyze research methodology
methodology = await research_specialist.analyze_methodology(paper_text)

# Analyze citations
citations = await research_specialist.analyze_citations(paper_text)

# Check IRB compliance
violations = await research_specialist.check_compliance(
paper_text,
framework="IRB"
)

API Reference

Endpoints

MethodEndpointDescription
GET/api/verticalsList all available verticals
GET/api/verticals/:idGet vertical configuration
GET/api/verticals/:id/toolsGet tools for a vertical
GET/api/verticals/:id/complianceGet compliance frameworks
GET/api/verticals/suggest?task=...Suggest best vertical for task
POST/api/verticals/:id/agentCreate specialist agent instance
POST/api/verticals/:id/debateRun vertical-specific debate

Request/Response Examples

List Verticals:

GET /api/verticals

Response:
{
"verticals": [
{
"vertical_id": "software",
"display_name": "Software Engineering Specialist",
"description": "Expert in software development...",
"expertise_areas": ["Code Review", "Security Analysis", ...],
"tools": ["code_search", "security_scan", ...],
"compliance_frameworks": ["OWASP", "CWE"],
"default_model": "claude-sonnet-4"
},
...
],
"total": 5
}

Create Debate with Specialist:

POST /api/verticals/legal/debate
Content-Type: application/json

{
"topic": "Review this SaaS agreement for risks",
"rounds": 3,
"consensus": "weighted",
"model": "claude-sonnet-4",
"additional_agents": [
{"type": "anthropic-api", "role": "critic"},
{"type": "openai-api", "role": "synthesizer"}
]
}

Response:
{
"debate_id": "dbt_abc123",
"vertical_id": "legal",
"topic": "Review this SaaS agreement for risks",
"consensus_reached": true,
"final_answer": "...",
"confidence": 0.87,
"participants": ["legal-specialist", "anthropic-critic", "openai-synthesizer"]
}

Configuration

VerticalConfig Schema

@dataclass
class VerticalConfig:
vertical_id: str # Unique identifier
display_name: str # Human-readable name
description: str # Description of capabilities

domain_keywords: List[str] # Keywords for auto-detection
expertise_areas: List[str] # Areas of expertise

system_prompt_template: str # Jinja2 template for system prompt

tools: List[ToolConfig] # Domain tools
compliance_frameworks: List[ComplianceConfig] # Compliance checks

model_config: ModelConfig # Model settings

version: str = "1.0.0"
author: Optional[str] = None
tags: List[str] = []

Loading from YAML

# verticals/custom_vertical.yaml
vertical_id: custom
display_name: Custom Vertical
description: Custom domain specialist

domain_keywords:
- custom
- domain

expertise_areas:
- Area 1
- Area 2

system_prompt_template: |
You are a custom specialist with expertise in:
{% for area in expertise_areas %}
- {{ area }}
{% endfor %}

tools:
- name: custom_tool
description: Custom tool description
enabled: true
connector_type: custom

compliance_frameworks:
- framework: CUSTOM
version: "1.0"
level: warning
rules: ["rule1", "rule2"]

model_config:
primary_model: claude-sonnet-4
temperature: 0.3
config = VerticalConfig.from_yaml("verticals/custom_vertical.yaml")

Compliance Levels

LevelBehavior
advisoryLog suggestions only
warningWarn on violations (default)
enforcedBlock output on violations
from aragora.verticals.config import ComplianceLevel

# Check if blocking is required
violations = await specialist.check_compliance(content)
should_block = specialist.should_block_on_compliance(violations)

Creating Custom Verticals

1. Define Configuration

from aragora.verticals.config import (
VerticalConfig, ToolConfig, ComplianceConfig,
ComplianceLevel, ModelConfig
)

CUSTOM_CONFIG = VerticalConfig(
vertical_id="custom",
display_name="Custom Specialist",
description="Expert in custom domain",
domain_keywords=["custom", "domain"],
expertise_areas=["Area 1", "Area 2"],
system_prompt_template="...",
tools=[
ToolConfig(name="custom_tool", description="..."),
],
compliance_frameworks=[
ComplianceConfig(
framework="CUSTOM",
level=ComplianceLevel.WARNING,
rules=["rule1"],
),
],
model_config=ModelConfig(
primary_model="claude-sonnet-4",
temperature=0.3,
),
)

2. Implement Specialist Class

from aragora.verticals.base import VerticalSpecialistAgent
from aragora.verticals.registry import VerticalRegistry

@VerticalRegistry.register(
"custom",
config=CUSTOM_CONFIG,
description="Custom domain specialist",
)
class CustomSpecialist(VerticalSpecialistAgent):

async def _execute_tool(self, tool, parameters):
if tool.name == "custom_tool":
return await self._custom_tool(parameters)
return {"error": f"Unknown tool: {tool.name}"}

async def _custom_tool(self, parameters):
# Implement tool logic
return {"result": "..."}

async def _check_framework_compliance(self, content, framework):
if framework.framework == "CUSTOM":
return await self._check_custom_compliance(content, framework)
return []

async def _generate_response(self, task, system_prompt, context=None, **kwargs):
# Generate response using the model
return Message(
role="assistant",
content="...",
agent=self.name,
)

3. Use the Custom Vertical

# Import triggers registration
from my_verticals.custom import CustomSpecialist

# Create specialist instance
agent = VerticalRegistry.create_specialist(
"custom",
name="custom-agent-1",
model="claude-sonnet-4",
)

Best Practices

  1. Choose the Right Vertical - Use VerticalRegistry.get_for_task(description) to auto-select the best vertical
  2. Configure Compliance Appropriately - Use enforced for critical regulations, warning for best practices
  3. Audit Tool Calls - Use agent.get_tool_call_history() for compliance auditing
  4. Add Disclaimers - Each specialist includes appropriate disclaimers (e.g., "not legal advice")
  5. Combine with General Agents - Use specialists alongside general agents in debates for diverse perspectives

See Also