Lossless Changelog
component

Phase 3: Data Synthesis & Cross-Reference

Added the Synthesizer module to cross-reference data across all extractors, detect conflicts, identify data gaps, and generate a unified view of company metrics with confidence scores.

Changelog - 2025-11-26 (#7)

Phase 3: Data Synthesis & Cross-Reference

Overview

Added the Synthesizer module to cross-reference data across all extractors, detect conflicts, identify data gaps, and generate a unified view of company metrics with confidence scores.


New Feature: Dataroom Synthesizer

Purpose

Cross-reference extracted data to identify inconsistencies, missing information, and build a unified, confidence-scored view of company metrics.

Implementation

Created src/agents/dataroom/synthesizer.py (~450 lines):

PYTHON
def synthesize_dataroom(analysis: DataroomAnalysis) -> Dict[str, Any]:
    """Main entry point for dataroom synthesis."""

def detect_conflicts(analysis: DataroomAnalysis) -> List[DataConflict]:
    """Detect conflicts between data extracted from different sources."""

def identify_data_gaps(analysis: DataroomAnalysis) -> List[Dict[str, Any]]:
    """Identify missing critical information for investment analysis."""

def cross_reference_data(analysis: DataroomAnalysis) -> Dict[str, Any]:
    """Build cross-referenced unified view of company data."""

def generate_synthesis_report(...) -> str:
    """Generate a markdown synthesis report."""

Conflict Detection

Checks for inconsistencies between data sources:

Conflict TypeSources ComparedThreshold
ARR MismatchFinancial vs Traction>10% difference
Headcount MismatchFinancial vs Team>5 person difference
Customer CountTotal vs NamedCount mismatch
Ownership SumCap TableNot ~100%
Team ClassificationFounders vs LeadershipDuplicate names

Hydden Results

  • ARR Conflict (High): $3M (pitch deck) vs $58M (financial projections) - 94.8% diff

  • Customer Count (Low): 3 reported vs 4 named


Data Gap Identification

Identifies missing critical data for investment memos:

Critical (High Priority)

  • ARR/Revenue

  • Monthly Burn Rate

  • Runway (months)

  • Cap Table / Ownership

  • Customer Count

  • Current ARR

  • Founder Backgrounds

Important (Medium Priority)

  • Gross Margin

  • Option Pool Size

  • Customer Retention Rate

  • Competitive Landscape

  • Key Differentiators

Hydden Results

  • Critical Gaps: Burn rate, Runway

  • Medium Gaps: Gross margin, Retention rate


Cross-Reference Engine

Builds unified metrics with confidence scores:

JSON
{
  "company_metrics": {
    "arr": 57953000,
    "headcount": 17,
    "customer_count": 3,
    "founder_ownership_pct": 54.8,
    "competitor_count": 8
  },
  "confidence_scores": {
    "arr": "high",
    "headcount": "high",
    "customer_count": "high",
    "founder_ownership_pct": "high",
    "competitor_count": "medium"
  },
  "data_sources": {
    "arr": ["Financial Model"],
    "headcount": ["Team Document"],
    ...
  }
}

Confidence Levels:

  • 🟢 High: Primary source available (financial model, cap table)

  • 🟡 Medium: Secondary source only (pitch deck, battlecards)

  • 🔴 Low/None: No reliable source


Output Structure Update

The dataroom analyzer now outputs 7 numbered artifact files:

output/Company-v0.0.1/
├── 0-dataroom-inventory.json/md    # Document inventory
├── 1-competitive-analysis.json/md  # Competitive landscape
├── 2-cap-table.json/md             # Ownership structure
├── 3-financial-analysis.json/md    # Financial projections
├── 4-traction-analysis.json/md     # Customers & metrics
├── 5-team-analysis.json/md         # Team profiles
└── 6-synthesis-report.json/md      # Cross-reference & gaps

Synthesis Report Format

The markdown report includes:

  1. Executive Summary

    • Unified metrics table with confidence indicators

    • Data quality summary (gap/conflict counts)

  2. Data Conflicts

    • Each conflict with sources, values, and resolution

    • Severity indicators (🔴 high, 🟡 medium, 🟢 low)

  3. Data Gaps

    • Grouped by priority (high, medium, low)

    • Recommendations for filling gaps

  4. Cross-Reference Insights

    • Financial & traction alignment check

    • Headcount consistency check

    • Cap table completeness check


Integration Updates

analyze_dataroom() Updated

Now includes Phase 3 synthesis step:

  1. Scan documents

  2. Classify documents

  3. Run extractors

  4. Run synthesis (NEW)

  5. Save artifacts

save_dataroom_analysis_artifacts() Updated

  • Added synthesis_results parameter

  • Saves 6-synthesis-report.json with structured data

  • Saves 6-synthesis-report.md with human-readable report


Files Changed Summary

New Files (1)

FileSizePurpose
src/agents/dataroom/synthesizer.py~450 linesCross-reference, conflicts, gaps

Modified Files (1)

FileChangesPurpose
src/agents/dataroom/analyzer.py+30 linesIntegration with synthesizer

Phase 3 Complete

All Synthesis Features Done

  • Conflict detection (ARR, headcount, customers, ownership, team)

  • Data gap identification (critical + medium priority)

  • Cross-reference engine (unified metrics + confidence)

  • Synthesis report generation (markdown + JSON)


Full Hydden Test Results

Complete analysis in 281.0 seconds:

ArtifactKey Findings
Inventory20 documents classified
Competitive8 competitors
Cap Table54.8% founder ownership
Financial$60K → $62.6M ARR projections
Traction$3M ARR, 3 customers
Team2 founders, 4 leaders, 17 FTE
Synthesis2 conflicts, 4 gaps, 5 unified metrics

Usage

BASH
# Activate virtual environment
source .venv/bin/activate

# Run dataroom analyzer (now includes synthesis)
python -m src.agents.dataroom.analyzer "data/Secure-Inputs/Hydden Dataroom" "Hydden"

# Output includes:
# 🔄 Synthesizing dataroom data...
#    Checking for data conflicts...
#    Found 2 conflicts
#    Identifying data gaps...
#    Found 4 gaps (2 critical)
#    Cross-referencing data sources...
#    Unified 5 metrics
#    Generating synthesis report...

Next Steps: Phase 4 - Memo Integration

  • Generate memo section drafts from extracted data

  • Map extractor outputs to memo template sections

  • Integrate with main investment memo orchestrator

  • Auto-populate sections with dataroom findings


Contributors

Implementation by Claude Code (Anthropic) with user guidance.