Lossless Changelog
component

Team Extractor - Phase 2 Complete!

Added the Team Extractor, completing all Phase 2 extractors (5/5). The dataroom analyzer now extracts comprehensive structured data from investment datarooms.

Changelog - 2025-11-26 (#5)

Team Extractor - Phase 2 Complete!

Overview

Added the Team Extractor, completing all Phase 2 extractors (5/5). The dataroom analyzer now extracts comprehensive structured data from investment datarooms.


New Feature: Team Extractor

Purpose

Extract founder profiles, leadership team, headcount, advisors, and board members from pitch decks and team documents.

Implementation

Created src/agents/dataroom/extractors/team_extractor.py (~550 lines):

PYTHON
def extract_team_data(
    documents: List[Dict[str, Any]],
    use_llm: bool = True
) -> Optional[TeamData]:
    """Extract team data from classified documents."""

def extract_from_pdf(file_path: Path, doc_type: str, use_llm: bool = True) -> Optional[Dict[str, Any]]:
    """Extract team data from a PDF document."""

def extract_from_spreadsheet(file_path: Path, use_llm: bool = True) -> Optional[Dict[str, Any]]:
    """Extract team data from a spreadsheet (CSV/Excel)."""

def extract_from_text(file_path: Path, use_llm: bool = True) -> Optional[Dict[str, Any]]:
    """Extract team data from a text file."""

Extraction Approach

Three-stage extraction:

  1. Rule-based parsing - Regex patterns for name/title combinations, headcount, LinkedIn URLs

  2. Table extraction - pdfplumber for org charts and team tables

  3. LLM enhancement - Claude Sonnet for detailed background extraction

Data extracted:

  • Founders (name, title, LinkedIn, previous companies, roles, education, achievements, expertise, years experience)

  • Leadership team (same structure as founders)

  • Total headcount

  • Headcount by department

  • Advisors

  • Board members

Testing Results (Hydden Dataroom)

FieldValue
Founders2 (Jai Dargan - CEO, Paul Harper - CTO)
Leadership4 (COO, CCO, Founding Engineer, Principal Architect)
Total Headcount17
LocationsUSA, UK, India (offices: NYC, DC, Austin)
Domain ExpertiseIdentity and Access Management, Enterprise Security
Notable AchievementBuilt and scaled unicorn IAM companies

Phase 2 Complete - All Extractors

The dataroom analyzer now outputs 6 numbered artifact files:

output/Company-v0.0.1/
├── 0-dataroom-inventory.json/md    # Document inventory & classification
├── 1-competitive-analysis.json/md  # Competitive landscape (battlecards)
├── 2-cap-table.json/md             # Ownership structure
├── 3-financial-analysis.json/md    # Financial projections
├── 4-traction-analysis.json/md     # Customers & traction metrics
└── 5-team-analysis.json/md         # Team & leadership profiles

Extractor Summary

ExtractorDocumentsKey Outputs
Competitivebattlecards, competitive docsCompetitors, threat levels, differentiators, SWOT
Cap Tablecap table PDFs/spreadsheetsShareholders, ownership %, option pool, SAFEs
FinancialCSV/Excel financial modelsARR, revenue, projections, burn rate, runway
Tractionpitch decks, customer listsCustomer count, ARR, retention, pipeline, partnerships
Teampitch decks, team biosFounders, leadership, headcount, advisors, board

New Report Formatter

Added format_team_report() to analyzer.py:

  • Founder profiles with backgrounds, education, achievements

  • Leadership team table

  • Organization headcount by department

  • Advisors and board members

  • Extraction notes


Integration Updates

_run_extractors() Updated

Now calls team extractor for document types:

  • team_bios

  • pitch_deck

_extract_key_facts() Updated

Now extracts team facts:

  • Founder count and names

  • Notable prior companies

  • Leadership count

  • Total headcount

  • Advisor count

  • Board size


Bug Fix

Fixed format_team_report() crash when headcount_by_department contains None values - now filters out invalid entries before sorting.


Files Changed Summary

New Files (1)

FileSizePurpose
src/agents/dataroom/extractors/team_extractor.py~550 linesPDF/text team parsing

Modified Files (2)

FileChangesPurpose
src/agents/dataroom/extractors/__init__.py+2 linesExport team extractor
src/agents/dataroom/analyzer.py+200 linesIntegration, formatter, key facts

Phase 2 Complete

All Extractors Done

  • Competitive Extractor - Battlecard synthesis

  • Cap Table Extractor - Ownership structure

  • Financial Extractor - Projections & metrics

  • Traction Extractor - Customers & revenue

  • Team Extractor - Founders & leadership

Next: Phase 3 - Data Synthesis & Memo Integration

  • Cross-reference data between extractors

  • Identify conflicts and data gaps

  • Generate memo section drafts from extracted data

  • Integrate with main investment memo orchestrator


Full Hydden Test Results

Complete analysis in 282.6 seconds:

ArtifactKey Findings
Inventory20 documents classified
Competitive8 competitors identified
Cap Table5 shareholders, 54.8% founder ownership, $4.15M raised
Financial$60K (Jun 2025) → $62.6M (Dec 2029) ARR projections
Traction$3M ARR, 3 enterprise customers, 2 tech partnerships
Team2 founders (CEO, CTO), 4 leaders, 17 FTE

Usage

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

# Run dataroom analyzer
python -m src.agents.dataroom.analyzer "data/Secure-Inputs/Hydden Dataroom" "Hydden"

# Output:
# 📁 Scanning dataroom...
#    Found 20 documents
# 🏷️  Classifying documents...
#    Classified 20 documents
# 🔍 Extracting competitive data from 9 documents...
#    ✓ Found 8 competitors
# 📊 Extracting cap table data from 1 documents...
#    ✓ Found 5 shareholders
# 💰 Extracting financial data from 1 documents...
#    ✓ Found financial projections
# 📈 Extracting traction data from 2 documents...
#    ✓ Found: $3,000,000 ARR, $2,026 pipeline
# 👥 Extracting team data from 2 documents...
#    ✓ Found: 2 founders, 4 leaders, 17 total headcount
# ✓ Analysis complete in 282.6s

Contributors

Implementation by Claude Code (Anthropic) with user guidance.