Quality Assurance Agent
ID: quality-assurance
Purpose
Validate newsletter content for accuracy, quality, compliance, and completeness before delivery.
Inputs
interface QualityAssuranceInput {
newsletterId: string; // Required: Newsletter identifier
jobId?: string; // Optional: Job ID for tracking this run
}Configurations
Configuration is stored in AgentConfig with identifier quality-assurance and the following structure:
{
factChecking: {
enabled: true,
strictness: 'high' | 'medium' | 'low',
verifyNumbers: true,
verifyDates: true,
verifyQuotes: true,
crossReferenceSources: true
},
quality: {
minScore: 0.7, // 0-1 scale
checkReadability: true,
checkCompleteness: true,
checkConsistency: true,
checkGrammar: true
},
compliance: {
disclaimers: {
required: true,
template: string
},
financialAdvice: {
prohibited: true,
checkLanguage: true
},
dataAttribution: {
required: true,
format: string
}
},
ai: {
factCheckModel: 'gpt-4',
qualityModel: 'gpt-4',
temperature: 0.2
}
}Outputs
{
agentId: 'quality-assurance',
agentVersion: string, // Semantic version (e.g., "1.2.3") of the agent that generated this output
newsletterId: string,
timestamp: Date,
executionTime: number,
validation: {
passed: boolean,
score: number, // 0-1 overall quality score
checks: {
factChecking: {
passed: boolean,
score: number,
issues: Array<{
section: string,
claim: string,
issue: string,
severity: 'critical' | 'warning' | 'info',
suggestedFix?: string
}>
},
quality: {
passed: boolean,
score: number,
metrics: {
readability: number,
completeness: number,
consistency: number,
grammar: number
},
issues: Array<{
type: string,
description: string,
severity: 'critical' | 'warning' | 'info'
}>
},
compliance: {
passed: boolean,
issues: Array<{
rule: string,
violation: string,
severity: 'critical' | 'warning',
requiredFix: string
}>
}
}
},
recommendations: Array<{
priority: 'high' | 'medium' | 'low',
section: string,
issue: string,
fix: string
}>,
approved: boolean,
requiresRevision: boolean
}Process
-
Initialize: Load compliance rules, QA config
-
Read Data: Query database for newsletter content, source data, and analysis results (independent of other agents)
-
Fact-Checking:
- Extract all factual claims from newsletter
- Cross-reference with source data (news articles, market data)
- Verify numbers (prices, metrics, dates)
- Check quotes and attributions
- Use AI to verify complex claims
- Flag discrepancies
-
Quality Assessment:
- Readability: Check sentence length, complexity
- Completeness: Ensure all required sections present
- Consistency: Check for contradictions, style consistency
- Grammar: Basic grammar/spelling check
- Calculate overall quality score
-
Compliance Check:
- Verify required disclaimers present
- Check for prohibited language (financial advice)
- Verify data attribution
- Check regulatory compliance
-
Issue Aggregation:
- Collect all issues from checks
- Prioritize by severity
- Generate recommendations
-
Decision:
- If critical issues:
approved = false,requiresRevision = true - If only warnings:
approved = true, add recommendations - If passed:
approved = true
- If critical issues:
-
Write Results: Store validation results and approval status in database
-
Note on Retries: The QA Agent does not directly trigger content generation retries. It writes
requiresRevision: trueto the database. The Scheduler/Orchestrator (or a separate retry mechanism) monitors QA results and can enqueue a Content Generation retry job if needed.
Note:
- Multiple instances of the same agent version can run in parallel for horizontal scaling.
- Only one version of this agent type can be active in production at a time.
- The orchestrator distributes jobs across available agent instances using load balancing.
- Return: Validation results