MediaPulse
Agents/Agent Types

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

  1. Initialize: Load compliance rules, QA config

  2. Read Data: Query database for newsletter content, source data, and analysis results (independent of other agents)

  3. 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
  4. 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
  5. Compliance Check:

    • Verify required disclaimers present
    • Check for prohibited language (financial advice)
    • Verify data attribution
    • Check regulatory compliance
  6. Issue Aggregation:

    • Collect all issues from checks
    • Prioritize by severity
    • Generate recommendations
  7. Decision:

    • If critical issues: approved = false, requiresRevision = true
    • If only warnings: approved = true, add recommendations
    • If passed: approved = true
  8. Write Results: Store validation results and approval status in database

  9. Note on Retries: The QA Agent does not directly trigger content generation retries. It writes requiresRevision: true to 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.
  1. Return: Validation results

Sequence Diagram