MediaPulse
Project Planning

Milestone 4 - Basic Analysis & Enhanced Content

Summary

Add basic analysis capabilities and improve content generation with insights.

Timeline

Weeks 9-10

Goal

Build the plugin-based analysis system infrastructure and implement initial analysis plugins (sentiment and event/context). Enhance content generation to dynamically include insights from available analysis plugins.

Deliverables

Analysis Agent (Plugin System Foundation)

  • Agent Versioning:
    • Reads active version from AgentVersionDeployment table during initialization
    • Includes agentVersion field in all outputs
    • Version information stored in AgentVersion table
  • Agent Registration:
    • Registers agent type metadata via Agent Registry API (POST /api/registry/register/)
    • Registers instance via Agent Registry API (POST /api/register/) when spawned by orchestrator
    • Reports heartbeat via Agent Registry API (POST /api/heartbeat/) with current load and status
  • Plugin System Infrastructure:
    • Analysis plugin interface definition
    • Plugin registry system (AnalysisTypeRegistry table) - stores plugin metadata in database
    • Dynamic plugin loading mechanism:
      • Queries AnalysisTypeRegistry for enabled plugins
      • Maps registry IDs to code locations (convention: plugins/{pluginId}/index.ts)
      • Dynamically imports plugin code from codebase (not from database)
      • Validates plugin implements AnalysisPlugin interface
    • Plugin configuration system (loaded from AgentConfig table)
    • Generic analysis result storage structure
  • Initial Analysis Plugins (code in apps/analysis-agent/src/plugins/):
    • Sentiment Analysis Plugin (plugins/sentiment/):
      • AI-powered sentiment analysis of news articles
      • Aggregate sentiment score (positive/negative/neutral)
      • Simple sentiment trend (improving/declining/stable)
      • Registered in AnalysisTypeRegistry table
    • Basic Event/Context Analysis Plugin (plugins/event/):
      • Identify external events mentioned in media (natural disasters, political changes, regulatory updates)
      • Basic relevance scoring for events
      • Simple impact assessment (high/medium/low)
      • Registered in AnalysisTypeRegistry table
  • ✅ Analysis result storage via Agent Data API:
    • Writes analysis results via POST /api/analysis-agent/ endpoint
    • Generic storage structure supporting any plugin output
    • Store analysis results in database with plugin metadata
    • Link to source data
    • Includes agentVersion in all outputs
  • ✅ Simple insight extraction:
    • Cross-plugin insight identification
    • Identify top 3 insights from all analysis plugins
    • Priority scoring (basic - based on analysis confidence scores and cross-plugin relevance)

Content Generation Agent (Enhanced)

  • Agent Versioning (already implemented in Milestone 2, enhanced here):
    • Reads active version from AgentVersionDeployment table
    • Includes agentVersion field in all outputs
  • Agent Registration (already implemented in Milestone 2, enhanced here):
    • Continues to register and report heartbeat
  • ✅ Dynamic section generation system:
    • Section mapping configuration for analysis plugins
    • Dynamic section resolution based on available analysis results
    • Conditional section rendering (only show sections with results)
    • Fallback to basic content structure if no analysis results are available
  • ✅ Enhanced newsletter structure:
    • Executive summary (aggregates all analysis insights)
    • Key insights section (from all analysis plugins)
    • Dynamic analysis sections (sentiment, event/context based on available plugins)
    • News summary with sentiment indicators
  • ✅ Improved prompts:
    • Include analysis results from all plugins in prompts
    • Generate actionable insights across analysis types
    • Plugin-aware prompt construction
  • ✅ Better formatting:
    • Structured sections with dynamic content
    • Improved HTML template (basic styling)
    • Basic template system for plugin-specific sections (simple string interpolation, advanced templating in later milestones)
  • ✅ Writes newsletter via Agent Data API:
    • Uses POST /api/content-generation/ endpoint (already implemented in Milestone 2)
    • Includes agentVersion in all outputs

Database Updates

  • ✅ Add AnalysisTypeRegistry table for plugin registration:
    • Stores plugin metadata (id, name, version, enabled status, configSchema, outputSchema, sectionTemplate)
    • Plugin implementation code must exist in codebase (apps/analysis-agent/src/plugins/{pluginId}/)
    • Database registry controls which plugins are active, but does not store executable code
  • ✅ Add generic analysis result storage (supports any plugin output structure):
    • Stores analysis results with plugin type reference
    • Links to source data via foreign keys
    • Flexible JSON structure for plugin-specific results
  • ✅ Link analysis results to newsletters:
    • Many-to-many relationship between analysis results and newsletters
    • Allows multiple analysis runs to contribute to a single newsletter
  • ✅ Add plugin configuration storage in AgentConfig:
    • Plugin-specific settings (e.g., sentiment thresholds, event relevance scores)
    • Per-ticker plugin enablement flags

Hermes Orchestrator (Update)

  • ✅ Newsletter pipeline enhancements:
    • Checks data freshness before triggering analysis
    • Can trigger immediate data collection if data is stale (> 4 hours old) via HTTP endpoint
    • Invokes Analysis Agent HTTP endpoint after data freshness check
    • Tracks job execution in AgentJobExecution table

Task Timeline

Limitations (Acceptable for This Milestone)

  • Plugin system supports basic plugin interface (advanced features in later milestones)
  • Only two initial plugins: sentiment and basic event/context analysis
  • No competitive analysis plugin yet
  • Simple insight extraction (cross-plugin insights are basic)
  • Basic event identification only
  • Section templates are simple (advanced templating in later milestones)

Success Criteria

  • ✅ Agent versioning is functional for Analysis Agent (agent reads active version, includes in outputs)
  • ✅ Agent registration is functional for Analysis Agent (agent registers type and instance, reports heartbeat)
  • ✅ Plugin system infrastructure is functional
  • ✅ Analysis plugins can be registered in AnalysisTypeRegistry table and loaded dynamically from codebase
  • ✅ Plugin code exists in codebase (apps/analysis-agent/src/plugins/) and is loaded by convention
  • ✅ Analysis agent processes collected data using registered plugins
  • ✅ Sentiment analysis plugin calculates and stores sentiment scores via Agent Data API
  • ✅ Event/context analysis plugin identifies and assesses events via Agent Data API
  • ✅ All analysis outputs include agentVersion field
  • ✅ Content generation dynamically includes sections for available analysis plugins
  • ✅ Newsletters show sentiment and event/context information
  • ✅ Insights are relevant and actionable
  • ✅ New analysis plugins can be added via database registration (infrastructure ready)

Next Steps

After this milestone, newsletters include basic analysis. Milestone 5 will add query strategy to improve data collection quality and discover entities.