Dataroom Analyzer Agent System & Export Improvements
Introduced a new multi-agent dataroom analyzer system for processing investment datarooms, plus improvements to trademark handling and export versioning.
Changelog - 2025-11-26 (#1)
Dataroom Analyzer Agent System & Export Improvements
Overview
Introduced a new multi-agent dataroom analyzer system for processing investment datarooms, plus improvements to trademark handling and export versioning.
New Feature: Dataroom Analyzer
Purpose
Analyze investment datarooms containing diverse document types (pitch decks, financials, legal docs, competitive analysis, etc.) and produce structured inventory with intelligent classification.
Architecture
Created new module at src/agents/dataroom/ with 5 files:
src/agents/dataroom/
├── __init__.py # Package exports
├── analyzer.py # Main orchestrator (8.9 KB)
├── dataroom_state.py # TypedDict schemas (11 KB)
├── document_scanner.py # Directory scanning (6.7 KB)
├── document_classifier.py # 3-stage classification (17 KB)
└── extractors/ # Placeholder for Phase 2
└── __init__.pyThree-Stage Classification System
The classifier uses a hierarchical approach for maximum accuracy:
Stage 1: Directory-Based (Highest Confidence)
Parses directory names like
"1 1_0 Executive Summary"or"4 4_0 GTM_Competitive Overview"Strips numeric prefixes and normalizes separators
Maps to document types with 85-90% confidence
Stage 2: Filename Pattern Matching
Regex patterns for common naming conventions
Examples:
"cap.*table"→ cap_table,"battlecard"→ competitive_analysisConfidence based on match specificity (60-85%)
Stage 3: LLM Content Classification (Optional)
Uses Claude Sonnet for uncertain documents
Extracts content samples (first 2000 chars)
Only invoked when earlier stages have <70% confidence
Document Type Taxonomy
Priority 1 (Critical):
pitch_deck- Investor presentations, executive summariescompetitive_analysis- Battlecards, competitor comparisons, market mapsfinancial_statements- P&L, balance sheets, historical financialsfinancial_projections- Operating models, forecasts, budgetscap_table- Ownership structure, equity breakdown
Priority 2 (Important):
term_sheet- Investment terms, SAFE notesteam_bios- Founder/leadership backgroundscustomer_list- Notable customers, case studiestraction_metrics- KPIs, growth data
Priority 3 (Supporting):
product_documentation- Architecture, specs, roadmapsmarketing_collateral- Datasheets, brochureslegal_document- Corporate docs, agreementsinvestor_update- Board materials, governance
TypedDict Schemas
Defined 11 structured schemas in dataroom_state.py:
DocumentInventoryItem- Individual document metadataFinancialData- Income statement, balance sheet, metricsCapTableData- Shareholders, options pool, SAFEsCompetitiveData- Competitors, positioning, SWOTTeamData- Founders, leadership, advisorsTractionData- Customers, revenue, pipelineLegalDocData- Term sheets, investment termsDataroomAnalysis- Main analysis output container
Output Artifacts
Follows project conventions with versioned output:
output/Hydden-v0.0.1/
├── 0-dataroom-analysis.json # Structured inventory (14 KB)
└── 0-dataroom-analysis.md # Human-readable report (4.3 KB)Markdown Report Includes:
Document inventory summary by type
Detailed document list with confidence indicators (🟢/🟡/🔴)
File sizes, page counts, classification reasoning
Data gaps (missing document types)
Processing notes
Usage
# CLI usage
python -m src.agents.dataroom.analyzer "path/to/dataroom" "Company Name"
# Programmatic usage
from src.agents.dataroom import analyze_dataroom
analysis = analyze_dataroom("path/to/dataroom", "Company Name")Testing Results
Tested on Hydden dataroom (20 documents):
Classification accuracy: 100% (all 20 documents correctly typed)
High confidence: 20/20 documents (100%)
Processing time: 0.1 seconds
Data gaps identified: Missing team_bios, financial_statements
Improvement: Trademark Path Handling
Problem
Trademark paths in company JSON files were being malformed when using absolute paths:
# Before (broken)
Solution
Updated src/agents/trademark_enrichment.py to properly handle:
HTTP/HTTPS URLs: Pass through unchanged
Absolute paths: Convert to relative from project root
Relative paths: Prepend
../../correctly for output directory navigation
# Now supports clean relative paths in data/*.json
"trademark_light": "data/Secure-Inputs/trademark__OWM--Light-Mode.svg"Files Modified
src/agents/trademark_enrichment.py(+15 lines)
Improvement: Export Auto-Versioning
Problem
Running export multiple times would overwrite the same HTML file.
Solution
Added automatic versioning to cli/export_branded.py:
Detects if output file exists
Appends
.1,.2, etc. to filenameSupports 4-segment versioning (e.g.,
OWM-v0.0.2.1.html)
# First export
OWM-v0.0.2.html
# Subsequent exports
OWM-v0.0.2.1.html
OWM-v0.0.2.2.htmlFiles Modified
cli/export_branded.py(+11 lines)
Planning Document
Created comprehensive planning document for the dataroom analyzer system:
context-vigilance/Dataroom-Analyzer-Agent-Plan.mdIncludes architecture, classification strategies, implementation phases
Updated based on real Hydden dataroom analysis
Files Changed Summary
New Files (6)
| File | Size | Purpose |
src/agents/dataroom/__init__.py | 774 B | Package exports |
src/agents/dataroom/analyzer.py | 8.9 KB | Main orchestrator |
src/agents/dataroom/dataroom_state.py | 11 KB | TypedDict schemas |
src/agents/dataroom/document_scanner.py | 6.7 KB | Directory scanning |
src/agents/dataroom/document_classifier.py | 17 KB | 3-stage classification |
src/agents/dataroom/extractors/__init__.py | ~100 B | Placeholder |
Modified Files (2)
| File | Changes | Purpose |
src/agents/trademark_enrichment.py | +15 lines | Fix path handling |
cli/export_branded.py | +11 lines | Auto-versioning |
Documentation (1)
| File | Size | Purpose |
context-vigilance/Dataroom-Analyzer-Agent-Plan.md | ~15 KB | Design document |
Next Steps (Phase 2)
The dataroom analyzer foundation is complete. Future phases:
Document Extractors - Build type-specific extractors:
competitive_extractor.py- Parse battlecards, synthesize competitive landscapefinancial_extractor.py- Extract P&L, projections, metricscap_table_extractor.py- Parse ownership structure
Data Synthesis - Cross-document fact extraction and conflict resolution
Workflow Integration - Connect to main memo generation pipeline
Testing & Validation
Dataroom Analyzer
✅ Scans directories recursively
✅ Handles numbered directory patterns (
N N_0 Category Name)✅ Classifies with 3-stage confidence system
✅ Outputs to versioned
output/directory✅ Generates both JSON and markdown artifacts
✅ Identifies data gaps
Export Improvements
✅ Trademark relative paths work correctly
✅ Auto-versioning prevents overwrites
✅ Both light and dark mode exports working
Contributors
Implementation by Claude Code (Anthropic) with user guidance.