In this Module 2 project for the Ready Tensor AAIDC course, I built a multi-agent system called Cross Publication Insight Assistant. The goal was to support exploratory insight across multiple GitHub repositories by automatically detecting patterns and trends, comparing implementations, and responding to user queries. The project is rooted in the need to derive deeper, grounded insights from disparate sources of implementation, whether for research, technical audit, or strategy.
This system aligns with the courseβs emphasis on agent coordination, orchestration frameworks (LangGraph), and tool-augmented intelligence. It demonstrates practical utility in analyzing large sets of AI/ML projects by generating grounded, useful insights for developers, researchers, or technical managers. By leveraging LangGraph orchestration, custom agents, and integrated tools, the system automates trend discovery, comparison, fact-checking, and summarization across GitHub repositories. It provides useful answers to technical queries while allowing optional human-in-the-loop (HITL) participation.
Manual repository analysis is often laborious, inconsistent, and error-prone. Developers and researchers frequently need to:
Compare implementations
Spot trends in tooling and techniques
Identify gaps or innovations
Get summarized, grounded insight
This system automates these high-effort processes, answering questions like:
βHow does Repo A differ from Repo B?β
βWhich of these projects uses LangGraph?β
βWhat dominant trends emerge from these LLM projects?β
The system uses a set of modular, cooperative agents, each with a defined role. These agents communicate via a state machine built with LangGraph. The architecture promotes robustness, traceability, and easy extension.
Agent | Role |
---|---|
Project Analyzer | Parses each repo and generates a metadata-rich summary |
Trend Aggregator | Detects dominant themes using LLM-backed techniques with semantic fallback |
Comparison Agent | Highlights differences and similarities between projects |
Aggregate Query Agent | Responds to user queries using map-reduce across repo states |
Fact Checker | Verifies claims in final outputs against the actual repo content |
Summarization Agent | Generates a clean, final summary using all verified inputs |
Agents can operate asynchronously and allow HITL input before summarization if desired.
LLMs (OpenAI / Local): Used for summarization, comparison, trend analysis
SentenceTransformers: For semantic fallback in trend detection
LangGraph: Manages agent state transitions and flow
Custom Tools: Including a repo parser and comparison utilities
HITL Module: Optional user intervention for fine-tuning
. βββ agents/ # All agent definitions β βββ project_analyzer.py β βββ llm_trend_agent.py β βββ trend_aggregator.py β βββ comparison_agent.py β βββ fact_checker.py β βββ summarize_agent.py β βββ tools/ # Supporting tools/utilities β βββ semantic_trend_detector.py β βββ repo_parser.py β βββ comparison_tool.py β βββ hitl_intervention.py β βββ orchestrator/ β βββ orchestrator.py # LangGraph state orchestrator β βββ config/ β βββ config.yaml # LLM and model settings β βββ prompts/ # Custom prompt templates β βββ utils/ # Logging, config loader, HITL logic, etc. βββ main.py # CLI entrypoint βββ README.md βββ LICENSE.md βββ requirements.in βββ requirements.txt βββ .env # Local environment variables βββ .env-example # Sample .env template
Type | Description |
---|---|
Aggregate | Responds to user-defined prompts using trend aggregation (e.g. β% using LangGraphβ) |
Compare | Highlights differences across selected repositories |
Find + Summarize (Planned) | Retrieve repositories matching user-defined filters (e.g. RAG-based filtering) |
While the system is functional and accurate in its current form, the next phase of development will focus on:
Evaluating LLM outputs for consistency and hallucination rate
Measuring summarization quality using ROUGE/BLEU metrics
Benchmarking trend detection accuracy across multiple repo sets
Comparisons with baseline single-agent approaches (e.g. one-shot summarization) will also be explored to demonstrate improved utility through modularity.
from langgraph.graph import StateGraph, END from agents.project_analyzer import run as analyze_project from agents.aggregate_query_agent import run as aggregate_query_run ... class CrossPublicationInsightOrchestrator: def __init__(self, user_query: str = ""): self.graph = StateGraph(dict) self.graph.add_node("analyze", analyze_project) ... self.graph.set_entry_point("analyze") self.executor = self.graph.compile() def run(self, input_data: dict): return self.executor.invoke(input_data)
The project is actively maintained and built with extensibility in mind. Future versions will include:
API-first interface with session state
Evaluation dashboards
Modular RAG enhancements for project retrieval
Detailed information can be found in the repository readme here: Cross Publication Insight Assistant
This project is provided under the MIT License. You are free to use, modify, and distribute the codebase for both commercial and non-commercial purposes, provided that the original license terms are included. Refer to the LICENSE file in the Github Repository
Cross Publication Insight Assistant for more information.
Thank you for reading!