from pydantic import BaseModel from datetime import datetime from typing import List, Optional from enum import Enum class InvestmentStage(str, Enum): SEED = "seed" SERIES_A = "series_a" SERIES_B = "series_b" SERIES_C = "series_c" GROWTH = "growth" LATE_STAGE = "late_stage" class SectorSchema(BaseModel): id: int name: str class Config: from_attributes = True class CompanySchema(BaseModel): id: int name: str industry: str location: str founded_year: Optional[int] website: Optional[str] created_at: Optional[datetime] updated_at: Optional[datetime] class Config: from_attributes = True class InvestorTeamMemberSchema(BaseModel): id: int name: str role: str email: str class Config: from_attributes = True class InvestorSchema(BaseModel): id: int name: str description: Optional[str] aum: int check_size_lower: int check_size_upper: int geographic_focus: str stage_focus: InvestmentStage number_of_investments: int created_at: Optional[datetime] updated_at: Optional[datetime] class Config: from_attributes = True class InvestorData(BaseModel): """Comprehensive investor data schema for LLM processing""" investor: InvestorSchema portfolio_companies: List[CompanySchema] = [] team_members: List[InvestorTeamMemberSchema] = [] sectors: List[SectorSchema] = [] class Config: from_attributes = True class InvestorList(BaseModel): investors: List[InvestorData]