File size: 24,997 Bytes
46f2cb3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
#!/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")