prebuilt.startup.pitchdeck.models¶

Pitch deck models for the Haive framework.

This module provides comprehensive data models for creating, managing, and generating pitch decks using AI agents. The models are designed to be composable, serializable, and extensible, following Haive’s dynamic architecture principles.

The models support: - Complete pitch deck structure with slides and sections - Content generation tracking and versioning - Agent collaboration metadata - Validation and quality scoring - Export to various formats

Attributes¶

Classes¶

AgentMetadata

Metadata about agent contributions to content generation.

ChartData

Data structure for charts and visualizations.

ContentStatus

Status of content generation.

DataPoint

Represents a single data point that can be used in slides.

DesignStyle

Visual design styles for the pitch deck.

ExportFormat

Supported export formats for pitch decks.

FinancialMetrics

Financial metrics and projections.

FinancialSlideContent

Specialized content for financial slides.

PitchDeck

Complete pitch deck model.

PitchDeckMetadata

Metadata about the pitch deck.

PitchDeckTemplate

Template for creating pitch decks.

QualityMetrics

Metrics for assessing pitch deck quality.

Slide

A single slide in the pitch deck.

SlideContent

Base content for a slide with common fields.

SlideRevision

Tracks revisions to a slide.

SlideType

Types of slides commonly found in pitch decks.

TeamMember

Information about a team member.

TeamSlideContent

Specialized content for team slides.

Module Contents¶

class prebuilt.startup.pitchdeck.models.AgentMetadata(/, **data: Any)¶

Bases: pydantic.BaseModel

Metadata about agent contributions to content generation.

Tracks which agents contributed to what content for auditing and improvement.

action: str = None¶
agent_id: str = None¶
agent_type: str = None¶
confidence_score: float = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

reasoning: str | None = None¶
timestamp: datetime.datetime = None¶
tool_calls: list[str] = None¶
class prebuilt.startup.pitchdeck.models.ChartData(/, **data: Any)¶

Bases: pydantic.BaseModel

Data structure for charts and visualizations.

classmethod validate_data_points(v)¶

Ensure we have at least one data point.

chart_type: Literal['bar', 'line', 'pie', 'scatter', 'area', 'combo'] = None¶
colors: list[str] | None = None¶
data_points: list[DataPoint] = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

title: str = None¶
x_axis_label: str | None = None¶
y_axis_label: str | None = None¶
class prebuilt.startup.pitchdeck.models.ContentStatus¶

Bases: str, enum.Enum

Status of content generation.

APPROVED = 'approved'¶
GENERATED = 'generated'¶
GENERATING = 'generating'¶
PENDING = 'pending'¶
REJECTED = 'rejected'¶
REVIEWING = 'reviewing'¶
REVISION_NEEDED = 'revision_needed'¶
class prebuilt.startup.pitchdeck.models.DataPoint(/, **data: Any)¶

Bases: pydantic.BaseModel

Represents a single data point that can be used in slides.

This is useful for financial data, metrics, market statistics, etc.

confidence: float = None¶
property formatted_value: str¶

Get formatted value with unit.

label: str = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

source: str | None = None¶
timestamp: datetime.datetime | None = None¶
unit: str | None = None¶
value: float | int | str = None¶
class prebuilt.startup.pitchdeck.models.DesignStyle¶

Bases: str, enum.Enum

Visual design styles for the pitch deck.

BOLD = 'bold'¶
CORPORATE = 'corporate'¶
CREATIVE = 'creative'¶
ELEGANT = 'elegant'¶
MINIMAL = 'minimal'¶
MODERN = 'modern'¶
PLAYFUL = 'playful'¶
TECHNICAL = 'technical'¶
class prebuilt.startup.pitchdeck.models.ExportFormat¶

Bases: str, enum.Enum

Supported export formats for pitch decks.

GOOGLE_SLIDES = 'google_slides'¶
HTML = 'html'¶
KEYNOTE = 'keynote'¶
MARKDOWN = 'markdown'¶
PDF = 'pdf'¶
PPTX = 'pptx'¶
class prebuilt.startup.pitchdeck.models.FinancialMetrics(/, **data: Any)¶

Bases: pydantic.BaseModel

Financial metrics and projections.

validate_metrics()¶

Validate financial metrics relationships.

burn_rate: DataPoint | None = None¶
customer_acquisition_cost: DataPoint | None = None¶
gross_margin: float | None = None¶
lifetime_value: DataPoint | None = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

revenue_current: DataPoint | None = None¶
revenue_projected: list[DataPoint] = None¶
runway_months: float | None = None¶
class prebuilt.startup.pitchdeck.models.FinancialSlideContent(/, **data: Any)¶

Bases: SlideContent

Specialized content for financial slides.

expense_breakdown: ChartData | None = None¶
financial_metrics: FinancialMetrics | None = None¶
key_assumptions: list[str] = None¶
projections_timeline: str = None¶
revenue_chart: ChartData | None = None¶
class prebuilt.startup.pitchdeck.models.PitchDeck(/, **data: Any)¶

Bases: pydantic.BaseModel

Complete pitch deck model.

This is the main model that contains all slides and orchestrates the pitch deck creation process.

add_slide(slide: Slide[SlideContent], position: int | None = None) None¶

Add a slide to the deck.

calculate_completion_percentage() float¶

Calculate how complete the deck is.

export_config(format: ExportFormat) dict[str, Any]¶

Generate export configuration for the specified format.

Returns configuration that can be used by export agents.

get_next_slide_to_generate() Slide[SlideContent] | None¶

Get the next slide that needs generation.

get_slide_by_type(slide_type: SlideType) Slide[SlideContent] | None¶

Get the first slide of a given type.

get_slides_by_status(status: ContentStatus) list[Slide[SlideContent]]¶

Get all slides with a specific status.

to_review_format() dict[str, Any]¶

Convert deck to a format suitable for review.

Returns a simplified version for review agents or humans.

validate_deck()¶

Validate deck structure and update indices.

agent_contributions: list[AgentMetadata] = None¶
created_at: datetime.datetime = None¶
deck_id: str = None¶
generation_config: dict[str, Any] = None¶
metadata: PitchDeckMetadata = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

quality_metrics: QualityMetrics | None = None¶
slides: list[Slide[SlideContent]] = None¶
status: ContentStatus = None¶
updated_at: datetime.datetime = None¶
class prebuilt.startup.pitchdeck.models.PitchDeckMetadata(/, **data: Any)¶

Bases: pydantic.BaseModel

Metadata about the pitch deck.

brand_colors: dict[str, str] | None = None¶
company_name: str = None¶
confidential: bool = None¶
design_style: DesignStyle = None¶
font_preferences: dict[str, str] | None = None¶
funding_amount_sought: DataPoint | None = None¶
industry: str = None¶
language: str = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stage: Literal['idea', 'pre_seed', 'seed', 'series_a', 'series_b', 'series_c', 'later'] = None¶
tagline: str | None = None¶
target_audience: list[str] = None¶
use_of_funds: list[dict[str, Any]] = None¶
valuation: DataPoint | None = None¶
version: str = None¶
class prebuilt.startup.pitchdeck.models.PitchDeckTemplate(/, **data: Any)¶

Bases: pydantic.BaseModel

Template for creating pitch decks.

Defines the structure and requirements for a type of pitch deck.

create_deck_scaffold(metadata: PitchDeckMetadata) PitchDeck¶

Create a new pitch deck scaffold from this template.

best_for_stage: list[str] = None¶
color_schemes: list[dict[str, str]] = None¶
default_design_style: DesignStyle = None¶
description: str = None¶
industries: list[str] = None¶
max_slides: int = None¶
min_slides: int = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str = None¶
required_slide_types: list[SlideType] = None¶
slide_templates: list[dict[str, Any]] = None¶
template_id: str = None¶
class prebuilt.startup.pitchdeck.models.QualityMetrics(/, **data: Any)¶

Bases: pydantic.BaseModel

Metrics for assessing pitch deck quality.

get_improvement_areas() list[str]¶

Identify areas needing improvement.

clarity_score: float = None¶
completeness_score: float = None¶
data_credibility_score: float = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

property overall_score: float¶

Calculate overall quality score.

storytelling_score: float = None¶
visual_appeal_score: float = None¶
class prebuilt.startup.pitchdeck.models.Slide(/, **data: Any)¶

Bases: pydantic.BaseModel, Generic[TContent]

A single slide in the pitch deck.

Generic over content type to allow specialized slide content while maintaining type safety.

add_agent_contribution(agent_metadata: AgentMetadata) None¶

Track agent contribution to this slide.

update_timestamp()¶

Update timestamp when model is modified.

validate_content() list[str]¶

Validate slide content and return any issues.

Override in subclasses for specific validation rules.

agent_metadata: list[AgentMetadata] = None¶
animation_style: str | None = None¶
color_scheme: dict[str, str] | None = None¶
content: TContent = None¶
created_at: datetime.datetime = None¶
layout: str = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

order: int = None¶
quality_score: float | None = None¶
revisions: list[SlideRevision] = None¶
slide_id: str = None¶
slide_type: SlideType = None¶
status: ContentStatus = None¶
title: str = None¶
updated_at: datetime.datetime = None¶
class prebuilt.startup.pitchdeck.models.SlideContent(/, **data: Any)¶

Bases: pydantic.BaseModel

Base content for a slide with common fields.

This can be extended for specific slide types with additional fields.

classmethod validate_headline(v)¶

Ensure headline is not too long.

body_text: str | None = None¶
bullet_points: list[str] = None¶
call_to_action: str | None = None¶
charts: list[ChartData] = None¶
headline: str = None¶
icons: list[str] = None¶
images: list[str] = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

speaker_notes: str | None = None¶
subheadline: str | None = None¶
class prebuilt.startup.pitchdeck.models.SlideRevision(/, **data: Any)¶

Bases: pydantic.BaseModel

Tracks revisions to a slide.

agent_metadata: AgentMetadata | None = None¶
changes_made: list[str] = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

previous_content: SlideContent | None = None¶
reason: str | None = None¶
revision_id: str = None¶
timestamp: datetime.datetime = None¶
class prebuilt.startup.pitchdeck.models.SlideType¶

Bases: str, enum.Enum

Types of slides commonly found in pitch decks.

APPENDIX = 'appendix'¶
BUSINESS_MODEL = 'business_model'¶
CALL_TO_ACTION = 'call_to_action'¶
COMPETITION = 'competition'¶
COMPETITIVE_ADVANTAGE = 'competitive_advantage'¶
CUSTOM = 'custom'¶
FINANCIALS = 'financials'¶
FUNDRAISING = 'fundraising'¶
GO_TO_MARKET = 'go_to_market'¶
MARKET_SIZE = 'market_size'¶
PROBLEM = 'problem'¶
ROADMAP = 'roadmap'¶
SOLUTION = 'solution'¶
TEAM = 'team'¶
TITLE = 'title'¶
TRACTION = 'traction'¶
class prebuilt.startup.pitchdeck.models.TeamMember(/, **data: Any)¶

Bases: pydantic.BaseModel

Information about a team member.

bio: str = None¶
expertise: list[str] = None¶
key_achievements: list[str] = None¶
linkedin_url: str | None = None¶
model_config¶

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str = None¶
photo_url: str | None = None¶
role: str = None¶
class prebuilt.startup.pitchdeck.models.TeamSlideContent(/, **data: Any)¶

Bases: SlideContent

Specialized content for team slides.

advisors: list[TeamMember] = None¶
culture_values: list[str] = None¶
hiring_plans: list[str] = None¶
organizational_structure: str | None = None¶
team_members: list[TeamMember] = None¶
prebuilt.startup.pitchdeck.models.FinancialSlide¶
prebuilt.startup.pitchdeck.models.StandardSlide¶
prebuilt.startup.pitchdeck.models.TContent¶
prebuilt.startup.pitchdeck.models.TMetrics¶
prebuilt.startup.pitchdeck.models.TeamSlide¶