# Generated by Django 5.2.16 on 2026-08-15 13:50 import django.db.models.deletion import uuid from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('graph', '0004_unique_champion_graph_version'), ] operations = [ migrations.CreateModel( name='CompanyMandate', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('objective', models.TextField()), ('constraints', models.JSONField(blank=True, default=dict)), ('optimization_targets', models.JSONField(blank=True, default=list)), ('max_validation_capital', models.DecimalField(decimal_places=2, default=50, max_digits=10)), ('target_net_new_cash', models.DecimalField(decimal_places=2, default=500, max_digits=10)), ('target_window_days', models.PositiveIntegerField(default=30)), ('metadata', models.JSONField(blank=True, default=dict)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CompanyProposal', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('title', models.CharField(max_length=255)), ('description', models.TextField()), ('problem', models.TextField()), ('target_customer', models.TextField()), ('proposed_solution', models.TextField()), ('business_model', models.TextField()), ('pricing_hypothesis', models.TextField()), ('acquisition_strategy', models.TextField()), ('validation_plan', models.TextField()), ('capital_requested', models.DecimalField(decimal_places=2, default=0, max_digits=10)), ('time_to_first_dollar_estimate', models.CharField(max_length=120)), ('expected_margin', models.CharField(max_length=120)), ('build_complexity', models.CharField(max_length=80)), ('market_evidence', models.JSONField(blank=True, default=list)), ('differentiation', models.TextField()), ('major_risks', models.JSONField(blank=True, default=list)), ('confidence', models.FloatField(default=0.0)), ('status', models.CharField(choices=[('DRAFT', 'Draft'), ('SUBMITTED', 'Submitted'), ('UNDER_DILIGENCE', 'Under Diligence'), ('REVISE', 'Revise'), ('FUNDED_RECOMMENDED', 'Funded Recommended'), ('WATCHLIST', 'Watchlist'), ('REJECTED', 'Rejected')], default='DRAFT', max_length=32)), ('pitch', models.JSONField(blank=True, default=dict)), ('metadata', models.JSONField(blank=True, default=dict)), ('mandate', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='company_proposals', to='ventures.companymandate')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CompanyCapabilityRequirement', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('category', models.CharField(max_length=120)), ('status', models.CharField(choices=[('AVAILABLE', 'Available'), ('PARTIAL', 'Partial'), ('MISSING', 'Missing')], max_length=32)), ('rationale', models.TextField(blank=True)), ('priority', models.CharField(choices=[('BEFORE_VALIDATION', 'Before Validation'), ('BEFORE_FIRST_CUSTOMER', 'Before First Customer'), ('BEFORE_SCALING', 'Before Scaling')], default='BEFORE_SCALING', max_length=32)), ('evidence', models.JSONField(blank=True, default=dict)), ('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='capability_requirements', to='ventures.companyproposal')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CompanyBoardReview', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('observations', models.JSONField(blank=True, default=dict)), ('strengths', models.JSONField(blank=True, default=list)), ('weaknesses', models.JSONField(blank=True, default=list)), ('key_assumptions', models.JSONField(blank=True, default=list)), ('required_revisions', models.JSONField(blank=True, default=list)), ('recommendation', models.CharField(max_length=80)), ('revised_pitch', models.JSONField(blank=True, default=dict)), ('metadata', models.JSONField(blank=True, default=dict)), ('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='board_reviews', to='ventures.companyproposal')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ICDiligence', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('status', models.CharField(default='INITIAL_PITCH', max_length=32)), ('rounds', models.JSONField(blank=True, default=list)), ('red_team_challenge', models.JSONField(blank=True, default=dict)), ('final_response', models.JSONField(blank=True, default=dict)), ('metadata', models.JSONField(blank=True, default=dict)), ('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ic_diligence', to='ventures.companyproposal')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ICDecision', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('decision', models.CharField(choices=[('FUND_RECOMMENDED', 'Fund Recommended'), ('CONDITIONAL_FUND', 'Conditional Fund'), ('REVISE_AND_RESUBMIT', 'Revise And Resubmit'), ('WATCHLIST', 'Watchlist'), ('PIVOT', 'Pivot'), ('REJECT', 'Reject')], max_length=32)), ('component_scores', models.JSONField(blank=True, default=dict)), ('composite_score', models.FloatField(default=0.0)), ('probability_500_within_30_days', models.FloatField(default=0.0)), ('initial_tranche', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), ('validation_condition', models.TextField(blank=True)), ('evidence_required', models.JSONField(blank=True, default=list)), ('recommended_allocation', models.JSONField(blank=True, default=dict)), ('kill_criteria', models.JSONField(blank=True, default=list)), ('next_decision_point', models.TextField(blank=True)), ('metadata', models.JSONField(blank=True, default=dict)), ('diligence', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='decision', to='ventures.icdiligence')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ICQuestion', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('question', models.TextField()), ('category', models.CharField(max_length=80)), ('evidence_required', models.BooleanField(default=True)), ('round_name', models.CharField(default='Diligence Round 1', max_length=80)), ('metadata', models.JSONField(blank=True, default=dict)), ('diligence', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='questions', to='ventures.icdiligence')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='ICResponse', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('answer', models.TextField()), ('evidence', models.JSONField(blank=True, default=list)), ('uncertainty', models.TextField(blank=True)), ('pitch_changes', models.JSONField(blank=True, default=dict)), ('metadata', models.JSONField(blank=True, default=dict)), ('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='responses', to='ventures.icquestion')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='PortfolioCapabilityGap', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('available', models.JSONField(blank=True, default=list)), ('partial', models.JSONField(blank=True, default=list)), ('missing', models.JSONField(blank=True, default=list)), ('ranked_missing', models.JSONField(blank=True, default=list)), ('report', models.TextField(blank=True)), ('metadata', models.JSONField(blank=True, default=dict)), ('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='capability_gap_reports', to='ventures.companyproposal')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='VentureArtifact', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('artifact_type', models.CharField(max_length=80)), ('name', models.CharField(max_length=255)), ('content', models.JSONField(blank=True, default=dict)), ('readable', models.TextField(blank=True)), ('generated_by', models.CharField(blank=True, max_length=120)), ('graph_run', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='venture_artifacts', to='graph.graphrun')), ('mandate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='artifacts', to='ventures.companymandate')), ('proposal', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='artifacts', to='ventures.companyproposal')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='VentureThesis', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('title', models.CharField(max_length=255)), ('thesis', models.TextField()), ('similarity_fingerprint', models.CharField(blank=True, max_length=128)), ('related_theses', models.JSONField(blank=True, default=list)), ('competitive_theses', models.JSONField(blank=True, default=list)), ('portfolio_visibility', models.JSONField(blank=True, default=dict)), ('metadata', models.JSONField(blank=True, default=dict)), ('mandate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='theses', to='ventures.companymandate')), ], options={ 'abstract': False, }, ), migrations.AddField( model_name='companyproposal', name='thesis', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='company_proposals', to='ventures.venturethesis'), ), ]