sdlc-agent / src /tools /fill_product_design.py
Veeru-c's picture
initial commit
06bd253
#!/usr/bin/env python3
"""
Script to fill in the auto insurance product design document with fictional data
"""
import re
from datetime import datetime
def fill_document(content):
"""Fill in all placeholders with realistic fictional data"""
# Product name and basic info
content = content.replace("[To be determined]", "TokyoDrive Insurance")
content = content.replace("[Current Date]", datetime.now().strftime("%B %d, %Y"))
content = content.replace("[Your Name/Team]", "Product Development Team")
content = content.replace("[Date]", datetime.now().strftime("%B %d, %Y"))
content = content.replace("[Author]", "Product Development Team")
content = content.replace("[Approver Name/Title]", "Chief Product Officer")
# Remove guidance notes
content = re.sub(r'\*\*\[Guidance:.*?\]\*\*', '', content)
content = re.sub(r'\[Guidance:.*?\]', '', content)
# Executive Summary - Financial Projections
content = content.replace("| Policies Written | [X] | [Y] | [Z] |",
"| Policies Written | 5,000 | 25,000 | 60,000 |")
content = content.replace("| Premium Volume (¥) | [X]M | [Y]M | [Z]M |",
"| Premium Volume (¥) | 450M | 2,250M | 5,400M |")
content = content.replace("| Loss Ratio | [X]% | [Y]% | [Z]% |",
"| Loss Ratio | 72% | 68% | 65% |")
content = content.replace("| Combined Ratio | [X]% | [Y]% | [Z]% |",
"| Combined Ratio | 102% | 96% | 93% |")
content = content.replace("| Net Profit (¥) | [X]M | [Y]M | [Z]M |",
"| Net Profit (¥) | -9M | 90M | 378M |")
# Strategic Objectives
content = content.replace("Achieve [X]% market penetration", "Achieve 2.5% market penetration")
content = content.replace("Maintain loss ratio below [X]%", "Maintain loss ratio below 70%")
content = content.replace("Achieve customer satisfaction score of [X]", "Achieve customer satisfaction score of 4.5")
content = content.replace("[X]% online policy purchases", "75% online policy purchases")
content = content.replace("[X] repair shops", "150 repair shops")
# Market Size
content = content.replace("Approximately [X] million registered vehicles",
"Approximately 4.2 million registered vehicles")
# Vehicle Ownership Statistics
content = content.replace("| Total Registered Vehicles | [X] | As of [Date] |",
"| Total Registered Vehicles | 4,200,000 | As of 2024 |")
content = content.replace("| Passenger Cars | [X] | Percentage: [X]% |",
"| Passenger Cars | 3,360,000 | Percentage: 80% |")
content = content.replace("| Commercial Vehicles | [X] | Percentage: [X]% |",
"| Commercial Vehicles | 630,000 | Percentage: 15% |")
content = content.replace("| Motorcycles | [X] | Percentage: [X]% |",
"| Motorcycles | 168,000 | Percentage: 4% |")
content = content.replace("| Electric/Hybrid Vehicles | [X] | Percentage: [X]% |",
"| Electric/Hybrid Vehicles | 42,000 | Percentage: 1% |")
# Age Distribution (fictional but realistic)
age_data = """| 18-24 | 850,000 | 6.0% | 340,000 |
| 25-34 | 2,100,000 | 15.0% | 1,680,000 |
| 35-44 | 2,800,000 | 20.0% | 2,240,000 |
| 45-54 | 2,500,000 | 17.8% | 2,000,000 |
| 55-64 | 2,200,000 | 15.7% | 1,760,000 |
| 65+ | 3,597,594 | 25.6% | 1,800,000 |"""
content = re.sub(r'\| 18-24 \| \[X\] \| \[X\]% \| \[X\] \|.*?\| 65\+ \| \[X\] \| \[X\]% \| \[X\] \|',
age_data, content, flags=re.DOTALL)
# Income Levels
income_data = """| 0-3M | 1,200,000 | 16.2% | 35% |
| 3-5M | 2,200,000 | 29.6% | 52% |
| 5-7M | 2,000,000 | 27.0% | 68% |
| 7-10M | 1,500,000 | 20.2% | 78% |
| 10M+ | 521,340 | 7.0% | 85% |"""
content = re.sub(r'\| 0-3M \| \[X\] \| \[X\]% \| \[X\]% \|.*?\| 10M\+ \| \[X\] \| \[X\]% \| \[X\]% \|',
income_data, content, flags=re.DOTALL)
# Employment and Commuting
content = content.replace("- **Employment Rate**: [X]%", "- **Employment Rate**: 62.5%")
content = content.replace("- **Average Commute Distance**: [X] km", "- **Average Commute Distance**: 18 km")
content = content.replace(" - Private Vehicle: [X]%", " - Private Vehicle: 28%")
content = content.replace(" - Public Transport: [X]%", " - Public Transport: 65%")
content = content.replace(" - Other: [X]%", " - Other: 7%")
# Vehicle Type Distribution
content = content.replace("- **Sedans**: [X]%", "- **Sedans**: 45%")
content = content.replace("- **SUVs**: [X]%", "- **SUVs**: 25%")
content = content.replace("- **Compact Cars (Kei)**: [X]%", "- **Compact Cars (Kei)**: 18%")
content = content.replace("- **Luxury Vehicles**: [X]%", "- **Luxury Vehicles**: 8%")
content = content.replace("- **Commercial Vehicles**: [X]%", "- **Commercial Vehicles**: 4%")
# Vehicle Age Distribution
vehicle_age = """| 0-3 years | 28% | 2,800,000 |
| 4-7 years | 32% | 1,800,000 |
| 8-12 years | 25% | 1,200,000 |
| 13+ years | 15% | 600,000 |"""
content = re.sub(r'\| 0-3 years \| \[X\]% \| ¥\[X\] \|.*?\| 13\+ years \| \[X\]% \| ¥\[X\] \|',
vehicle_age, content, flags=re.DOTALL)
# Traffic Accident Statistics
accidents = """| 2020 | 45,230 | 89 | 52,450 | 38,200 |
| 2021 | 43,180 | 85 | 50,120 | 36,800 |
| 2022 | 47,650 | 92 | 54,890 | 39,500 |
| 2023 | 49,320 | 88 | 56,240 | 40,100 |"""
content = re.sub(r'\| 2020 \| \[X\] \| \[X\] \| \[X\] \| \[X\] \|.*?\| 2023 \| \[X\] \| \[X\] \| \[X\] \| \[X\] \|',
accidents, content, flags=re.DOTALL)
content = content.replace("- **Accidents per 1,000 Vehicles**: [X]", "- **Accidents per 1,000 Vehicles**: 11.7")
content = content.replace("- **Fatal Accidents per 100,000 Vehicles**: [X]", "- **Fatal Accidents per 100,000 Vehicles**: 2.1")
content = content.replace("- **Average Claim Amount**: ¥[X]", "- **Average Claim Amount**: ¥850,000")
content = content.replace("- **Average Claim Frequency**: [X]% of policies", "- **Average Claim Frequency**: 8.5% of policies")
# Accident Patterns
content = content.replace("- Peak Hours (7-9 AM, 5-7 PM): [X]% of accidents",
"- Peak Hours (7-9 AM, 5-7 PM): 42% of accidents")
content = content.replace("- Daytime (9 AM - 5 PM): [X]% of accidents",
"- Daytime (9 AM - 5 PM): 35% of accidents")
content = content.replace("- Nighttime (7 PM - 7 AM): [X]% of accidents",
"- Nighttime (7 PM - 7 AM): 23% of accidents")
content = content.replace("- Weekdays: [X]% of accidents", "- Weekdays: 72% of accidents")
content = content.replace("- Weekends: [X]% of accidents", "- Weekends: 28% of accidents")
content = content.replace("- Speeding: [X]%", "- Speeding: 18%")
content = content.replace("- Distracted Driving: [X]%", "- Distracted Driving: 24%")
content = content.replace("- Weather-Related: [X]%", "- Weather-Related: 12%")
content = content.replace("- Other: [X]%", "- Other: 46%")
# Geographic Risk Zones
risk_zones = """| High | Chiyoda, Chuo, Minato, Shibuya, Shinjuku | 14.2 per 1,000 vehicles | ¥1,200,000 |
| Medium | Meguro, Setagaya, Nakano, Suginami | 10.8 per 1,000 vehicles | ¥850,000 |
| Low | Nerima, Itabashi, Adachi, Outer wards | 8.5 per 1,000 vehicles | ¥650,000 |"""
content = re.sub(r'\| High \| \[List\] \| \[X\] per 1,000 vehicles \| ¥\[X\] \|.*?\| Low \| \[List\] \| \[X\] per 1,000 vehicles \| ¥\[X\] \|',
risk_zones, content, flags=re.DOTALL)
# Competitive Landscape
competitors = """| Tokio Marine Nichido | 18.5% | Strong brand, extensive network | Premium pricing |
| Sompo Japan | 15.2% | Comprehensive coverage, good service | Competitive |
| Mitsui Sumitomo | 12.8% | Digital innovation, competitive rates | Value-focused |"""
content = re.sub(r'\| \[Company A\] \| \[X\]% \| \[Strengths\] \| \[Strategy\] \|.*?\| \[Company C\] \| \[X\]% \| \[Strengths\] \| \[Strategy\] \|',
competitors, content, flags=re.DOTALL)
# Customer Segments
content = content.replace("**Size**: Approximately [X]% of Tokyo vehicle owners",
"**Size**: Approximately 32% of Tokyo vehicle owners", count=1)
content = content.replace("**Size**: Approximately [X]% of Tokyo vehicle owners",
"**Size**: Approximately 38% of Tokyo vehicle owners", count=1)
content = content.replace("**Size**: Approximately [X]% of Tokyo vehicle owners",
"**Size**: Approximately 18% of Tokyo vehicle owners", count=1)
content = content.replace("**Size**: Approximately [X]% of Tokyo vehicle owners",
"**Size**: Approximately 12% of Tokyo vehicle owners", count=1)
# Purchase Behavior
content = content.replace("- **Research Method**: [X]% online research, [X]% agent consultation",
"- **Research Method**: 68% online research, 32% agent consultation")
content = content.replace("- **Decision Factors**: Price ([X]%), Coverage ([X]%), Brand ([X]%), Service ([X]%)",
"- **Decision Factors**: Price (35%), Coverage (28%), Brand (22%), Service (15%)")
content = content.replace("- **Purchase Channel**: Online ([X]%), Agent ([X]%), Phone ([X]%)",
"- **Purchase Channel**: Online (55%), Agent (30%), Phone (15%)")
# Usage Patterns
content = content.replace("- **Annual Mileage**: Average [X] km/year",
"- **Annual Mileage**: Average 12,500 km/year")
content = content.replace("- **Primary Use**: Commuting ([X]%), Personal ([X]%), Business ([X]%)",
"- **Primary Use**: Commuting (45%), Personal (38%), Business (17%)")
content = content.replace("- **Parking**: Home garage ([X]%), Street parking ([X]%), Paid lot ([X]%)",
"- **Parking**: Home garage (42%), Street parking (28%), Paid lot (30%)")
# Premium Ranges
content = content.replace("**Premium Range**: ¥[X] - ¥[Y] per year",
"**Premium Range**: ¥45,000 - ¥85,000 per year", count=1)
content = content.replace("**Premium Range**: ¥[X] - ¥[Y] per year",
"**Premium Range**: ¥75,000 - ¥150,000 per year", count=1)
content = content.replace("**Premium Range**: ¥[X] - ¥[Y] per year",
"**Premium Range**: ¥180,000 - ¥350,000 per year", count=1)
# Digital Features
content = content.replace("- Complete online purchase in [X] minutes",
"- Complete online purchase in 8 minutes")
# Roadside Assistance
content = content.replace("- Towing (up to [X] km)", "- Towing (up to 50 km)")
content = content.replace("Coverage: Up to ¥[X] per incident",
"Coverage: Up to ¥500,000 per incident", count=1)
content = content.replace("- Coverage: Up to [X] days, ¥[X] per day",
"- Coverage: Up to 14 days, ¥8,000 per day")
content = content.replace("Coverage: Up to ¥[X] per incident",
"Coverage: Up to ¥200,000 per incident", count=1)
# Deductibles and Limits
content = content.replace("- **Deductible**: ¥[X] - ¥[Y] depending on tier",
"- **Deductible**: ¥50,000 - ¥200,000 depending on tier")
content = content.replace("- **Age Restrictions**: Some coverage may not apply to vehicles over [X] years",
"- **Age Restrictions**: Some coverage may not apply to vehicles over 15 years")
# Risk Factors
content = content.replace("- **Rush Hour Risk**: [X]% higher accident rate during peak hours",
"- **Rush Hour Risk**: 35% higher accident rate during peak hours")
content = content.replace("- **Rainy Season** (June-July): [X]% increase in accidents",
"- **Rainy Season** (June-July): 18% increase in accidents")
# Vehicle Type Risk - Average Claim Amounts
vehicle_claims = """| Compact (Kei) | 0.9x | ¥650,000 |
| Sedan | 1.0x | ¥850,000 |
| SUV | 1.1x | ¥1,100,000 |
| Luxury | 1.2x | ¥2,200,000 |
| Sports Car | 1.5x | ¥1,800,000 |
| Commercial | 1.3x | ¥950,000 |
| Motorcycle | 2.0x | ¥720,000 |"""
content = re.sub(r'\| Compact \(Kei\) \| 0\.9x \| ¥\[X\] \|.*?\| Motorcycle \| 2\.0x \| ¥\[X\] \|',
vehicle_claims, content, flags=re.DOTALL)
# Expense Loading
content = content.replace("- **Acquisition Costs**: [X]% of premium", "- **Acquisition Costs**: 12% of premium")
content = content.replace("- **Administrative Expenses**: [X]% of premium", "- **Administrative Expenses**: 8% of premium")
content = content.replace("- **Claims Handling**: [X]% of premium", "- **Claims Handling**: 5% of premium")
content = content.replace("- **Total Expense Ratio**: [X]% (target: 25-35%)", "- **Total Expense Ratio**: 30% (target: 25-35%)")
content = content.replace("- **Target Profit Margin**: [X]% (typically 5-10%)", "- **Target Profit Margin**: 7% (typically 5-10%)")
# Premium Examples
content = content.replace("- **Annual Premium**: ¥[X]", "- **Annual Premium**: ¥98,000", count=1)
content = content.replace("- **Annual Premium**: ¥[X]", "- **Annual Premium**: ¥125,000", count=1)
content = content.replace("- **Annual Premium**: ¥[X]", "- **Annual Premium**: ¥285,000", count=1)
# Low Mileage Discount
content = content.replace("| Low Mileage | 5-15% | Annual mileage < [X] km |",
"| Low Mileage | 5-15% | Annual mileage < 8,000 km |")
content = content.replace("| High Mileage | 5-15% | Annual mileage > [X] km |",
"| High Mileage | 5-15% | Annual mileage > 20,000 km |")
# Competitive Pricing
pricing = """| Basic | ¥65,000 | ¥72,000 | ¥68,000 | ¥70,000 |
| Standard | ¥125,000 | ¥138,000 | ¥132,000 | ¥135,000 |
| Premium | ¥285,000 | ¥320,000 | ¥305,000 | ¥310,000 |"""
content = re.sub(r'\| Basic \| ¥\[X\] \| ¥\[Y\] \| ¥\[Z\] \| ¥\[W\] \|.*?\| Premium \| ¥\[X\] \| ¥\[Y\] \| ¥\[Z\] \| ¥\[W\] \|',
pricing, content, flags=re.DOTALL)
# Regulatory
content = content.replace("- **Capital Requirements**: Minimum ¥[X] million",
"- **Capital Requirements**: Minimum ¥1,000 million")
content = content.replace("- **Cooling-Off Period**: [X] days to cancel after purchase",
"- **Cooling-Off Period**: 14 days to cancel after purchase")
# Service Levels
content = content.replace("- **Phone Response**: Answer within [X] seconds",
"- **Phone Response**: Answer within 30 seconds")
content = content.replace("- **Email Response**: Within [X] hours",
"- **Email Response**: Within 4 hours")
content = content.replace("- **Chat Response**: Within [X] minutes",
"- **Chat Response**: Within 2 minutes")
content = content.replace("- **Fast Processing**: Target [X] days for simple claims",
"- **Fast Processing**: Target 3 days for simple claims")
content = content.replace("- **Claims Processing**: [X] days for simple claims",
"- **Claims Processing**: 3 days for simple claims")
# Partners
content = content.replace("- **Partners**: [X] certified repair shops in Tokyo",
"- **Partners**: 150 certified repair shops in Tokyo")
# Acquisition Channels
acquisition = """| Online Search | All segments | 3.2% | ¥8,500 |
| Social Media | Young professionals | 2.8% | ¥12,000 |
| Referrals | All segments | 5.5% | ¥3,200 |
| Partners | Business owners | 4.1% | ¥15,000 |
| Agents | Families, seniors | 6.2% | ¥18,000 |"""
content = re.sub(r'\| Online Search \| All segments \| \[X\]% \| ¥\[X\] \|.*?\| Agents \| Families, seniors \| \[X\]% \| ¥\[X\] \|',
acquisition, content, flags=re.DOTALL)
# Financial Projections - Detailed
# Revenue by Tier
revenue_tier = """| Basic | ¥135M | ¥675M | ¥1,620M |
| Standard | ¥270M | ¥1,350M | ¥3,240M |
| Premium | ¥45M | ¥225M | ¥540M |"""
content = re.sub(r'\| Basic \| ¥\[X\]M \| ¥\[Y\]M \| ¥\[Z\]M \|.*?\| Premium \| ¥\[X\]M \| ¥\[Y\]M \| ¥\[Z\]M \|',
revenue_tier, content, flags=re.DOTALL)
# Loss Costs
loss_costs = """| Year 1 | ¥450M | 72% | ¥324M |
| Year 2 | ¥2,250M | 68% | ¥1,530M |
| Year 3 | ¥5,400M | 65% | ¥3,510M |"""
content = re.sub(r'\| Year 1 \| ¥\[X\]M \| \[Y\]% \| ¥\[Z\]M \|.*?\| Year 3 \| ¥\[X\]M \| \[Y\]% \| ¥\[Z\]M \|',
loss_costs, content, flags=re.DOTALL)
# Operating Expenses
expenses = """| Acquisition Costs | ¥54M | ¥270M | ¥648M |
| Administrative | ¥36M | ¥180M | ¥432M |
| Claims Handling | ¥22.5M | ¥112.5M | ¥270M |
| Technology | ¥18M | ¥45M | ¥108M |
| Marketing | ¥27M | ¥90M | ¥162M |"""
content = re.sub(r'\| Acquisition Costs \| ¥\[X\]M \| ¥\[Y\]M \| ¥\[Z\]M \|.*?\| Marketing \| ¥\[X\]M \| ¥\[Y\]M \| ¥\[Z\]M \|',
expenses, content, flags=re.DOTALL)
content = content.replace("| **Total Expenses** | **¥[X]M** | **¥[Y]M** | **¥[Z]M** |",
"| **Total Expenses** | **¥157.5M** | **¥697.5M** | **¥1,620M** |")
# Loss Ratios by Segment
segment_loss = """| Young Professionals | 78% | 74% | 70% |
| Families | 68% | 65% | 63% |
| Business Owners | 72% | 69% | 66% |
| Senior Drivers | 70% | 67% | 64% |"""
content = re.sub(r'\| Young Professionals \| \[X\]% \| \[Y\]% \| \[Z\]% \|.*?\| Senior Drivers \| \[X\]% \| \[Y\]% \| \[Z\]% \|',
segment_loss, content, flags=re.DOTALL)
content = content.replace("| **Overall** | **[X]%** | **[Y]%** | **[Z]%** |",
"| **Overall** | **72%** | **68%** | **65%** |")
# Loss Ratios by Coverage
coverage_loss = """| Liability | 65% | 62% | 60% |
| Comprehensive | 82% | 78% | 75% |
| Personal Injury | 70% | 67% | 64% |"""
content = re.sub(r'\| Liability \| \[X\]% \| \[Y\]% \| \[Z\]% \|.*?\| Personal Injury \| \[X\]% \| \[Y\]% \| \[Z\]% \|',
coverage_loss, content, flags=re.DOTALL)
# Expense Ratios
expense_ratios = """| Acquisition | 12% | 12% | 12% |
| Administrative | 8% | 8% | 8% |
| Claims Handling | 5% | 5% | 5% |
| Technology | 4% | 2% | 2% |"""
content = re.sub(r'\| Acquisition \| \[X\]% \| \[Y\]% \| \[Z\]% \|.*?\| Technology \| \[X\]% \| \[Y\]% \| \[Z\]% \|',
expense_ratios, content, flags=re.DOTALL)
content = content.replace("| **Total Expense Ratio** | **[X]%** | **[Y]%** | **[Z]%** |",
"| **Total Expense Ratio** | **29%** | **27%** | **27%** |")
# Combined Ratios
combined = """| Year 1 | 72% | 29% | 101% |
| Year 2 | 68% | 27% | 95% |
| Year 3 | 65% | 27% | 92% |"""
content = re.sub(r'\| Year 1 \| \[X\]% \| \[Y\]% \| \[Z\]% \|.*?\| Year 3 \| \[X\]% \| \[Y\]% \| \[Z\]% \|',
combined, content, flags=re.DOTALL)
# Net Profit
profit = """| Year 1 | ¥450M | ¥481.5M | ¥-31.5M | -7.0% |
| Year 2 | ¥2,250M | ¥2,227.5M | ¥22.5M | 1.0% |
| Year 3 | ¥5,400M | ¥5,130M | ¥270M | 5.0% |"""
content = re.sub(r'\| Year 1 \| ¥\[X\]M \| ¥\[Y\]M \| ¥\[Z\]M \| \[W\]% \|.*?\| Year 3 \| ¥\[X\]M \| ¥\[Y\]M \| ¥\[Z\]M \| \[W\]% \|',
profit, content, flags=re.DOTALL)
# Break-Even
content = content.replace("- **Break-Even Policies**: [X] policies", "- **Break-Even Policies**: 18,500 policies")
content = content.replace("- **Break-Even Premium Volume**: ¥[Y]M", "- **Break-Even Premium Volume**: ¥1,665M")
content = content.replace("- **Expected Time to Break-Even**: [Z] months", "- **Expected Time to Break-Even**: 14 months")
# Sensitivity Analysis
content = content.replace("- Higher policy count: [X]% above base", "- Higher policy count: 20% above base")
content = content.replace("- Lower loss ratio: [Y]% below target", "- Lower loss ratio: 5% below target")
content = content.replace("- Result: Profit of ¥[Z]M", "- Result: Profit of ¥450M", count=1)
content = content.replace("- Result: Profit of ¥[X]M", "- Result: Profit of ¥270M")
content = content.replace("- Lower policy count: [X]% below base", "- Lower policy count: 15% below base")
content = content.replace("- Higher loss ratio: [Y]% above target", "- Higher loss ratio: 8% above target")
content = content.replace("- Result: Loss of ¥[Z]M", "- Result: Loss of ¥180M")
# Success Metrics
content = content.replace("- [X] policies written", "- 5,000 policies written", count=1)
content = content.replace("- [Y]% customer satisfaction", "- 4.3% customer satisfaction", count=1)
content = content.replace("- [Z]% online purchase rate", "- 68% online purchase rate", count=1)
content = content.replace("- Combined ratio < [X]%", "- Combined ratio < 105%", count=1)
content = content.replace("- [X] policies written (cumulative)", "- 30,000 policies written (cumulative)")
content = content.replace("- Market share of [Y]%", "- Market share of 0.7%")
content = content.replace("- Customer retention rate of [Z]%", "- Customer retention rate of 82%")
content = content.replace("- Combined ratio < [X]%", "- Combined ratio < 95%", count=1)
content = content.replace("- Customer satisfaction > [Y]%", "- Customer satisfaction > 4.5")
content = content.replace("- Market share of [Z]%", "- Market share of 1.4%")
# Milestones
milestones = """| FSA License Approval | Month 8 | [ ] |
| Platform Launch | Month 6 | [ ] |
| First 1,000 Policies | Month 7 | [ ] |
| Break-Even | Month 14 | [ ] |
| 10,000 Policies | Month 12 | [ ] |
| Profitability | Month 18 | [ ] |"""
content = re.sub(r'\| FSA License Approval \| Month \[X\] \| \[ \] \|.*?\| Profitability \| Month \[X\] \| \[ \] \|',
milestones, content, flags=re.DOTALL)
# Human Resources
hr = """| Management | 8 | 12 | 15 |
| Underwriting | 12 | 20 | 28 |
| Claims | 15 | 25 | 35 |
| Customer Service | 20 | 35 | 50 |
| Technology | 10 | 15 | 20 |
| Marketing | 8 | 12 | 15 |"""
content = re.sub(r'\| Management \| \[X\] \| \[Y\] \| \[Z\] \|.*?\| Marketing \| \[X\] \| \[Y\] \| \[Z\] \|',
hr, content, flags=re.DOTALL)
content = content.replace("| **Total** | **[X]** | **[Y]** | **[Z]** |",
"| **Total** | **73** | **119** | **163** |")
# Capital Requirements
content = content.replace("- Initial capital: ¥[X]M", "- Initial capital: ¥1,000M")
content = content.replace("- Operating capital: ¥[Y]M", "- Operating capital: ¥500M")
content = content.replace("- Reserve requirements: ¥[Z]M", "- Reserve requirements: ¥1,200M")
content = content.replace("- **Total Capital Needed**: ¥[W]M", "- **Total Capital Needed**: ¥2,700M")
content = content.replace("- **Minimum Capital**: ¥[X]M (FSA requirement)",
"- **Minimum Capital**: ¥1,000M (FSA requirement)")
content = content.replace("- **Solvency Margin**: Maintain [X]% above minimum",
"- **Solvency Margin**: Maintain 20% above minimum")
# Reinsurance Partners
reinsurance = """- Tokio Marine Re: Catastrophic coverage, excess of loss
- Swiss Re: Quota share (20%), stop loss protection
- Munich Re: Large claim excess coverage"""
content = re.sub(r'- \[Reinsurer A\]: \[Coverage type\].*?- \[Reinsurer C\]: \[Coverage type\]',
reinsurance, content, flags=re.DOTALL)
return content
if __name__ == "__main__":
# Read the template
with open("docs/tokyo_auto_insurance_product_design.md", "r", encoding="utf-8") as f:
content = f.read()
# Fill in the data
filled_content = fill_document(content)
# Write the filled version
with open("docs/tokyo_auto_insurance_product_design_filled.md", "w", encoding="utf-8") as f:
f.write(filled_content)
print("✓ Document filled with fictional data")
print("✓ Saved to: docs/tokyo_auto_insurance_product_design_filled.md")