sushilideaclan01 commited on
Commit
b3adf58
·
1 Parent(s): da4a2eb

added auto insurance niche

Browse files
data/auto_insurance.py ADDED
@@ -0,0 +1,738 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Auto Insurance - Complete Psychological Arsenal
3
+ All strategies: fear, urgency, savings, authority, loss aversion, etc.
4
+ Updated with winning ad patterns from high-converting creative analysis.
5
+ """
6
+
7
+ # ============================================================================
8
+ # SECTION 1: PSYCHOLOGICAL STRATEGIES
9
+ # ============================================================================
10
+
11
+ STRATEGIES = {
12
+ # ------------------------------------------------------------------------
13
+ # Winning Strategies (High-Converting Patterns)
14
+ # ------------------------------------------------------------------------
15
+
16
+ "accusation_opener": {
17
+ "name": "Accusation Opener",
18
+ "description": "Direct accusation triggers immediate loss aversion - 'OVERPAYING?' style",
19
+ "hooks": [
20
+ "OVERPAYING?",
21
+ "Still Overpaying For Car Insurance?",
22
+ "Wasting $847/year On Auto Insurance?",
23
+ "Are You Being Overcharged?",
24
+ "Paying Too Much? Most Drivers Are.",
25
+ "Your Insurance Company Is Overcharging You",
26
+ "Stop Getting Ripped Off On Car Insurance",
27
+ "You're Probably Paying Double",
28
+ "Why Are You Still Paying Full Price?",
29
+ "Being Overcharged Without Knowing It?",
30
+ "Throwing Money Away Every Month?",
31
+ "Your Premium Is Too High. Here's Proof.",
32
+ ],
33
+ "visual_styles": [
34
+ "person holding insurance bill, frustrated expression, accusatory",
35
+ "frustrated driver looking at renewal notice, red 'OVERPAYING?' text",
36
+ "money flying away from car, loss visualization",
37
+ "comparison of high vs low price with red X on high price",
38
+ "person counting money with worried expression",
39
+ "wallet being emptied at gas station, coins and bills falling out",
40
+ ],
41
+ },
42
+
43
+ "curiosity_gap": {
44
+ "name": "Curiosity Gap",
45
+ "description": "Open loop with 'THIS' or 'Instead' demands click - highest CTR pattern",
46
+ "hooks": [
47
+ "Drivers Are Ditching Their Auto Insurance & Doing This Instead",
48
+ "Thousands of drivers are dropping their insurance after THIS",
49
+ "Drivers Over 50 Are Switching To THIS",
50
+ "What Smart Drivers Know About Car Insurance",
51
+ "The Secret Insurance Companies Don't Want You To Know",
52
+ "Everyone's Switching. Here's Why.",
53
+ "This Is Why Your Neighbors Pay Less",
54
+ "What 2,437 Drivers In Your Area Just Discovered",
55
+ "The Loophole Drivers Are Using",
56
+ "They Found Something Better. Have You?",
57
+ "After Seeing THIS, You'll Never Overpay Again",
58
+ "One Simple Change Saves Thousands",
59
+ ],
60
+ "visual_styles": [
61
+ "driver looking at odometer or dashboard, candid documentary",
62
+ "collage with driver's license and insurance card",
63
+ "person reading document with surprised expression",
64
+ "group of drivers with knowing expressions",
65
+ "person pointing at hidden information, reveal moment",
66
+ "before/after document comparison with circled numbers",
67
+ ],
68
+ },
69
+
70
+ "specific_price_anchor": {
71
+ "name": "Specific Price Anchor",
72
+ "description": "Oddly specific prices ($47.33 not $50) create instant believability",
73
+ "hooks": [
74
+ "Car Insurance for as low as $29/month",
75
+ "Auto Insurance with coverage as low as $29/month",
76
+ "$67.33/month For Full Coverage",
77
+ "Pay Just $37/month Instead of $150+",
78
+ "Locked In At $42/month",
79
+ "Full Protection For $1.25/day",
80
+ "Coverage From $29/month",
81
+ "$57/month Beats Your Current Rate",
82
+ "Most Drivers Qualify For $39/month",
83
+ "Switch And Pay Just $63/month",
84
+ "Rates Starting At $27.50/month",
85
+ ],
86
+ "visual_styles": [
87
+ "giant price number $29 in teal/bold color, age buttons below",
88
+ "clean white background, price dominant, age selector: 18-35, 36-55, 56+",
89
+ "BLACK FRIDAY style with specific price and gold balloons",
90
+ "price comparison showing crossed-out high price, new low price",
91
+ "calculator interface showing specific savings number",
92
+ "insurance card or policy showing exact monthly amount",
93
+ ],
94
+ },
95
+
96
+ "before_after_proof": {
97
+ "name": "Before/After Proof",
98
+ "description": "Specific savings numbers with visual proof creates social proof",
99
+ "hooks": [
100
+ "WAS: $1,842 → NOW: $647",
101
+ "How I Dropped My Premium By $1,195/year",
102
+ "Paid $2,200. Now Pay $756.",
103
+ "From $167/month To $57/month",
104
+ "Cut My Bill In Half. Here's How.",
105
+ "Saved $1,147 In 5 Minutes",
106
+ "Before: $2,400/year After: $780/year",
107
+ "My Friend Showed Me How To Save $900",
108
+ "Real Savings: $1,356 Less Per Year",
109
+ "Went From Overpaying To Saving Big",
110
+ "The 5-Minute Switch That Saved Me $1,200",
111
+ ],
112
+ "visual_styles": [
113
+ "real driver 30-55 holding document with circled numbers, testimonial",
114
+ "before/after price bar: red 'WAS' vs green 'NOW'",
115
+ "split screen: old bill vs new bill with circles",
116
+ "person giving thumbs up with savings numbers visible",
117
+ "calculator or phone showing savings calculation",
118
+ "happy driver reviewing lower insurance bill in car",
119
+ ],
120
+ },
121
+
122
+ "quiz_interactive": {
123
+ "name": "Quiz/Interactive",
124
+ "description": "Quiz format drives engagement and self-selection",
125
+ "hooks": [
126
+ "What Year Is Your Car?",
127
+ "Tap Your Age To Calculate Your New Rate",
128
+ "Answer 3 Questions. See Your Rate.",
129
+ "How Many Miles Do You Drive?",
130
+ "Check Your Eligibility In 60 Seconds",
131
+ "Take The 30-Second Quiz",
132
+ "Select Your Age Bracket",
133
+ "When Did You Last Shop For Insurance?",
134
+ "Find Your New Rate - 2 Questions",
135
+ "See If You Qualify For Lower Rates",
136
+ "Quick Quiz: How Much Can You Save?",
137
+ "Select Your State To See Rates",
138
+ ],
139
+ "visual_styles": [
140
+ "iPhone Notes app dark mode with checkboxes: 2010 or older, 2010-2020, 2020+",
141
+ "age selector buttons: 18-35 (yellow), 36-55 (blue), 56+ (red)",
142
+ "quiz interface with multiple choice options",
143
+ "clean UI with 'Tap below to see your rate'",
144
+ "interactive calculator mockup",
145
+ "state selection dropdown or map interface",
146
+ ],
147
+ },
148
+
149
+ "authority_transfer": {
150
+ "name": "Authority Transfer",
151
+ "description": "Transfer trust from government/institutions - highest trust pattern",
152
+ "hooks": [
153
+ "State Farm & GEICO Competitors Bring Savings!",
154
+ "Sponsored by Major Insurance Providers",
155
+ "Government Program For Safe Drivers",
156
+ "New State Program Cuts Insurance Costs",
157
+ "Federal Assistance For Drivers Over 50",
158
+ "Official: Safe Drivers Qualify For Reduced Rates",
159
+ "State-Approved Savings Program",
160
+ "DMV-Verified Rate Reduction",
161
+ "Senior Drivers: New Benefit Available",
162
+ "Good Drivers: Check Eligibility",
163
+ "Official Notice: Rate Reduction Program",
164
+ "State Insurance Commission Announces Savings",
165
+ ],
166
+ "visual_styles": [
167
+ "official seal, government document aesthetic",
168
+ "driver's license with official badge background",
169
+ "official letterhead style with seal and formal typography",
170
+ "state capitol building with official banner",
171
+ "government form aesthetic with checkboxes",
172
+ "DMV or insurance commission seal visible",
173
+ ],
174
+ },
175
+
176
+ "identity_targeting": {
177
+ "name": "Identity Targeting",
178
+ "description": "Direct demographic callout creates instant self-selection",
179
+ "hooks": [
180
+ "Drivers Won't Have To Pay More Than $39 A Month",
181
+ "Drivers Over 50: Check Your Eligibility",
182
+ "Safe drivers over the age of 50...",
183
+ "If You're 50+ And Drive, Read This",
184
+ "Attention: Drivers Born Before 1975",
185
+ "For Drivers 55 And Older",
186
+ "65+ Drivers: New Rate Available",
187
+ "Baby Boomers: Insurance Relief Is Here",
188
+ "Retired Drivers: Special Program",
189
+ "If You Drive And You're Over 50...",
190
+ "Senior Citizen Auto Insurance Rates",
191
+ "Safe Drivers Turning 65 This Year",
192
+ ],
193
+ "visual_styles": [
194
+ "four diverse driver faces in portrait style, dignified, relatable",
195
+ "real senior driver in their car, trustworthy",
196
+ "driver looking at camera, confident expression",
197
+ "multiple drivers of different ages, inclusive",
198
+ "senior holding insurance card, testimonial style",
199
+ "mature hands on steering wheel or holding keys",
200
+ ],
201
+ },
202
+
203
+ "insider_secret": {
204
+ "name": "Insider Secret",
205
+ "description": "Exclusivity and hidden knowledge framing",
206
+ "hooks": [
207
+ "The Easiest Way To Cut Car Insurance Bills",
208
+ "What Insurance Companies Don't Want You To Know",
209
+ "The Loophole That Saves Thousands",
210
+ "Former Agent Reveals Industry Secret",
211
+ "The Trick Your Insurance Company Hides",
212
+ "Why Insiders Pay 40% Less",
213
+ "The One Thing That Cuts Your Premium In Half",
214
+ "What They Don't Tell You About Auto Insurance",
215
+ "Insurance Industry Insider Speaks Out",
216
+ "The Secret Smart Drivers Use",
217
+ "Hidden Discount Most People Miss",
218
+ "The Backdoor To Lower Rates",
219
+ ],
220
+ "visual_styles": [
221
+ "person whispering or revealing secret, documentary candid",
222
+ "document being unveiled or revealed",
223
+ "insider/whistleblower aesthetic, anonymous feel",
224
+ "magnifying glass over insurance policy",
225
+ "hidden text being exposed or highlighted",
226
+ "person looking over shoulder, sharing secret",
227
+ ],
228
+ },
229
+
230
+ # ------------------------------------------------------------------------
231
+ # Core Psychological Strategies
232
+ # ------------------------------------------------------------------------
233
+
234
+ "fear_based": {
235
+ "name": "Fear-Based",
236
+ "description": "Trigger fear of accidents, tickets, and worst-case scenarios",
237
+ "hooks": [
238
+ "One accident could bankrupt you",
239
+ "Are you one fender-bender away from financial ruin?",
240
+ "Uninsured? One ticket costs $5,000+",
241
+ "Driving without coverage is illegal",
242
+ "What if you hit someone tomorrow?",
243
+ "Medical bills from one crash: $250,000",
244
+ "Your family could lose everything",
245
+ "Lawsuit from one accident could take your house",
246
+ "Can you afford a $50,000 hospital bill?",
247
+ "Police are cracking down on uninsured drivers",
248
+ "The average car accident costs $57,000",
249
+ "Are you gambling with your family's future?",
250
+ ],
251
+ "visual_styles": [
252
+ "car accident scene with vintage film grain, documentary footage",
253
+ "damaged car on roadside with old VHS quality",
254
+ "police lights flashing, aged documentary photography",
255
+ "worried driver after minor accident, candid shot",
256
+ "tow truck removing damaged vehicle, old news footage aesthetic",
257
+ "hospital bills on dashboard, vintage feel",
258
+ ],
259
+ },
260
+
261
+ "urgency_scarcity": {
262
+ "name": "Urgency & Scarcity",
263
+ "description": "Create time pressure and limited availability",
264
+ "hooks": [
265
+ "Rates increasing in 48 hours",
266
+ "Last chance for 2024 pricing",
267
+ "Only 23 spots left at this rate",
268
+ "Offer expires midnight",
269
+ "Insurers are RAISING rates in your area",
270
+ "Lock in before it's too late",
271
+ "Price hike coming January 1st",
272
+ "Limited-time discount ending soon",
273
+ "Your quote expires in 24 hours",
274
+ "Enrollment window closing",
275
+ "Act now or pay 30% more next month",
276
+ "Final warning: rates going up",
277
+ ],
278
+ "visual_styles": [
279
+ "countdown timer graphic, urgent red colors",
280
+ "calendar with deadline circled",
281
+ "clock showing almost midnight",
282
+ "red URGENT stamp on documents",
283
+ "limited time banner, expiring offer",
284
+ ],
285
+ },
286
+
287
+ "social_proof_fomo": {
288
+ "name": "Social Proof & FOMO",
289
+ "description": "Show others are doing it, create fear of missing out",
290
+ "hooks": [
291
+ "2,437 drivers in your area switched THIS WEEK",
292
+ "Your neighbors are saving. Are you?",
293
+ "Join 3.7 million smart drivers",
294
+ "Why is everyone switching?",
295
+ "The #1 choice for drivers in 2024",
296
+ "9 out of 10 drivers recommend this",
297
+ "Everyone in your neighborhood is saving. Except you?",
298
+ "Don't be the last one overpaying",
299
+ "Over 1 million claims paid this year",
300
+ "Rated #1 by Consumer Reports",
301
+ "The insurance your neighbors trust",
302
+ "Smart drivers are making the switch",
303
+ ],
304
+ "visual_styles": [
305
+ "happy drivers in neighborhood, protected",
306
+ "map showing covered drivers in area",
307
+ "crowd of satisfied customers",
308
+ "testimonial collage of happy drivers",
309
+ "5-star rating badges, trust indicators",
310
+ ],
311
+ },
312
+
313
+ "guilt_shame": {
314
+ "name": "Guilt & Shame",
315
+ "description": "Trigger guilt about family responsibility",
316
+ "hooks": [
317
+ "Can you look your family in the eye without coverage?",
318
+ "Your kids are counting on you",
319
+ "Don't let them down",
320
+ "Responsible drivers don't gamble with their family's future",
321
+ "What will you tell your kids after an accident?",
322
+ "A real parent protects their family",
323
+ "Your spouse trusts you to keep them safe",
324
+ "Failure to protect is a choice",
325
+ "They're depending on you. Don't fail them.",
326
+ "Would your family forgive you?",
327
+ "Every mile without coverage is a risk to your family",
328
+ "What kind of driver are you?",
329
+ ],
330
+ "visual_styles": [
331
+ "parent looking worried with kids in backseat",
332
+ "family photo with protective imagery",
333
+ "father looking at damaged car, regret",
334
+ "mother with child, concerned expression",
335
+ "car seat in damaged vehicle, emotional impact",
336
+ ],
337
+ },
338
+
339
+ "greed_savings": {
340
+ "name": "Greed & Savings",
341
+ "description": "Appeal to desire to save money and get more",
342
+ "hooks": [
343
+ "You're overpaying by $1,147/year",
344
+ "Stop throwing money away",
345
+ "Get $500 back instantly",
346
+ "Why pay more for less?",
347
+ "Save up to 45% on your premium",
348
+ "Free quote reveals your savings",
349
+ "Most drivers can save $900+",
350
+ "You're leaving money on the table",
351
+ "Switch and save in 5 minutes",
352
+ "Same coverage. Half the price.",
353
+ "Get more coverage for less money",
354
+ "Stop wasting money on overpriced insurance",
355
+ ],
356
+ "visual_styles": [
357
+ "stack of cash, money savings",
358
+ "piggy bank overflowing with coins",
359
+ "comparison chart showing savings",
360
+ "happy driver reviewing lower bills in car",
361
+ "calculator showing big savings number",
362
+ "wallet with money, financial freedom",
363
+ ],
364
+ },
365
+
366
+ "authority_trust": {
367
+ "name": "Authority & Trust",
368
+ "description": "Leverage expert credibility and insider knowledge",
369
+ "hooks": [
370
+ "Former agent reveals the truth",
371
+ "Industry insider secret exposed",
372
+ "A+ rated, 75 years trusted",
373
+ "Backed by major insurers",
374
+ "Exposed: The coverage gap trap",
375
+ "Insurance agent confessions",
376
+ "The dirty secret of cheap policies",
377
+ "What your agent isn't telling you",
378
+ "BBB accredited with zero complaints",
379
+ "Trusted by millions of drivers",
380
+ "Licensed in all 50 states",
381
+ ],
382
+ "visual_styles": [
383
+ "professional insurance agent, trustworthy",
384
+ "A+ rating badge, gold seal",
385
+ "official documents, certificates",
386
+ "expert in business attire",
387
+ "trust badges, security icons",
388
+ "newspaper headline style, exposed",
389
+ ],
390
+ },
391
+
392
+ "loss_aversion": {
393
+ "name": "Loss Aversion",
394
+ "description": "Emphasize what they stand to lose",
395
+ "hooks": [
396
+ "Everything you've worked for - GONE after one crash",
397
+ "Average accident costs $57,000 in damages",
398
+ "You can't get back what's already lost",
399
+ "Your savings. Your car. Your future. Gone.",
400
+ "One lawsuit could take everything",
401
+ "Imagine losing it all tomorrow",
402
+ "The average accident destroys years of savings",
403
+ "Your life's work, wiped out in seconds",
404
+ "What would you do if sued for $250,000?",
405
+ "Some things can never be replaced",
406
+ "Everything you own could be at risk",
407
+ "Your assets, your peace of mind, your security",
408
+ ],
409
+ "visual_styles": [
410
+ "before/after accident comparison",
411
+ "damaged car in lot, total loss",
412
+ "family photo with worried expression",
413
+ "empty driveway where car used to be",
414
+ "lawsuit papers on dashboard",
415
+ "bank account with zero balance",
416
+ ],
417
+ },
418
+
419
+ "anchoring": {
420
+ "name": "Anchoring",
421
+ "description": "Compare high value to low cost",
422
+ "hooks": [
423
+ "Coverage worth $100,000 for just $37/month",
424
+ "Compared to losing everything, $1.25/day is nothing",
425
+ "Full protection for less than your coffee habit",
426
+ "Your car is worth $30K. Protection is $29/month.",
427
+ "Accident cost: $50,000. Coverage cost: $42/month.",
428
+ "Insurance: $35/month. Lawsuit: $250,000.",
429
+ "Skip one lunch a week. Protect everything you own.",
430
+ "The cost of not having insurance: everything",
431
+ "$1.00/day protects $100,000 in assets",
432
+ "Cheaper than your streaming subscription",
433
+ ],
434
+ "visual_styles": [
435
+ "scale comparing cost vs value",
436
+ "coffee cup vs car comparison",
437
+ "small price tag vs big protection",
438
+ "simple math equation graphic",
439
+ "price comparison infographic",
440
+ ],
441
+ },
442
+
443
+ "simplicity": {
444
+ "name": "Simplicity & Ease",
445
+ "description": "Emphasize how easy it is to get covered",
446
+ "hooks": [
447
+ "Get covered in 3 minutes",
448
+ "One click. Full protection.",
449
+ "No paperwork. No hassle.",
450
+ "Quote in 60 seconds",
451
+ "The easiest insurance you'll ever buy",
452
+ "Set it and forget it protection",
453
+ "Online in minutes, protected for years",
454
+ "Skip the agent. Save time and money.",
455
+ "Apply from your phone",
456
+ "Instant quote, instant coverage",
457
+ "The lazy driver's insurance solution",
458
+ "Why is getting insurance still this hard? (It isn't anymore)",
459
+ ],
460
+ "visual_styles": [
461
+ "person on phone in car, relaxed",
462
+ "simple 3-step process graphic",
463
+ "checkmark, done, complete icons",
464
+ "happy person with phone showing quote",
465
+ "clean, minimal interface screenshot",
466
+ ],
467
+ },
468
+
469
+ "comparison_envy": {
470
+ "name": "Comparison & Envy",
471
+ "description": "Compare to others who are better protected",
472
+ "hooks": [
473
+ "Your coworker pays less and gets more coverage",
474
+ "Why are smart drivers switching?",
475
+ "They're protected. Why aren't you?",
476
+ "Same car. Same record. Half the premium.",
477
+ "What do they know that you don't?",
478
+ "Your friend just saved $900. Your turn.",
479
+ "Your colleague's claim was covered. Would yours be?",
480
+ "Everyone's switching. What are you waiting for?",
481
+ "Don't be the only unprotected driver",
482
+ "Your neighbor's accident was covered. Would yours be?",
483
+ ],
484
+ "visual_styles": [
485
+ "two cars side by side, one protected",
486
+ "neighbor comparison graphic",
487
+ "protected driver vs exposed driver",
488
+ "happy driver vs worried driver",
489
+ "community showing coverage differences",
490
+ ],
491
+ },
492
+
493
+ "transformation": {
494
+ "name": "Transformation & Peace",
495
+ "description": "Show the transformation from worry to peace",
496
+ "hooks": [
497
+ "From worried to worry-free in 5 minutes",
498
+ "Drive confidently knowing you're covered",
499
+ "Finally, peace of mind on the road",
500
+ "Stop worrying. Start driving.",
501
+ "Imagine never worrying about accidents again",
502
+ "The weight off your shoulders",
503
+ "From stressed to blessed",
504
+ "Drive your life. We'll protect your car.",
505
+ "Worry-free driving starts here",
506
+ "Breathe easy. You're protected.",
507
+ ],
508
+ "visual_styles": [
509
+ "relaxed driver on peaceful road",
510
+ "person driving peacefully",
511
+ "before/after: worried vs happy driver",
512
+ "open road, secure feeling",
513
+ "family enjoying road trip, not worrying",
514
+ ],
515
+ },
516
+ }
517
+
518
+ # ============================================================================
519
+ # SECTION 2: HIGH-CONVERTING VISUAL LIBRARY
520
+ # ============================================================================
521
+
522
+ PROTECTION_SAFETY_VISUALS = [
523
+ "driver confidently behind wheel, daylight",
524
+ "car parked safely in driveway, protected",
525
+ "parent with kids buckled safely in backseat",
526
+ "calm driving while storm clouds in distance",
527
+ "hands on steering wheel, confident grip",
528
+ "car + checkmark overlay, protected",
529
+ ]
530
+
531
+ ACCIDENT_FEAR_VISUALS = [
532
+ "half image: safe car / damaged car",
533
+ "minor fender bender, manageable damage",
534
+ "cracked windshield close-up",
535
+ "dented bumper on roadside",
536
+ "flat tire by highway",
537
+ "damaged car blurred in background, intact one sharp",
538
+ ]
539
+
540
+ FAMILY_SAFETY_VISUALS = [
541
+ "parents with kids in car seats, secure",
542
+ "child buckled in backseat safely",
543
+ "family loading car for road trip",
544
+ "parent checking mirrors with kids inside",
545
+ "multi-generational family in SUV",
546
+ ]
547
+
548
+ FIRST_TIME_DRIVER_VISUALS = [
549
+ "teenager holding new driver's license",
550
+ "new driver with keys, excited",
551
+ "first car purchase, proud moment",
552
+ "SOLD sign outside dealership",
553
+ "young driver + nervous parent",
554
+ ]
555
+
556
+ VEHICLE_ASSET_VISUALS = [
557
+ "beautiful car at sunset",
558
+ "clean driveway + new car parked",
559
+ "car with subtle price tag icon",
560
+ "car loan documents overlay",
561
+ "before/after car detailing shots",
562
+ ]
563
+
564
+ PROBLEM_RISK_VISUALS = [
565
+ "minor fender bender damage",
566
+ "cracked windshield repair",
567
+ "tire blowout on highway",
568
+ "hail damage on hood",
569
+ "parking lot door ding",
570
+ "weather damage to vehicle",
571
+ ]
572
+
573
+ RELIEF_VISUALS = [
574
+ "sunlight after rain over car",
575
+ "driver relaxing after safe arrival",
576
+ "family safe after road trip",
577
+ "car with insurance card visible",
578
+ "coffee in car, peaceful morning commute",
579
+ ]
580
+
581
+ FINANCIAL_VISUALS = [
582
+ "official-looking insurance documents",
583
+ "phone with insurance app open",
584
+ "car + savings icon",
585
+ "insurance card on dashboard",
586
+ "calculator + paperwork in car",
587
+ ]
588
+
589
+ COMPARISON_CHOICE_VISUALS = [
590
+ "insured vs uninsured driver split",
591
+ "cheap insurance vs proper coverage",
592
+ "umbrella over car vs rain",
593
+ "shield vs hazard symbol",
594
+ ]
595
+
596
+ MINIMAL_SYMBOLIC_VISUALS = [
597
+ "simple car icon + shield",
598
+ "line-art car with lock",
599
+ "car inside protective bubble",
600
+ "steering wheel with checkmark",
601
+ "key + car silhouette",
602
+ ]
603
+
604
+ LIFESTYLE_VISUALS = [
605
+ "morning commute, peaceful drive",
606
+ "weekend road trip with family",
607
+ "car parked at scenic overlook",
608
+ "daily routine, coffee and drive",
609
+ "highway aerial shot, traffic flow",
610
+ ]
611
+
612
+ TEXT_FIRST_VISUALS = [
613
+ "text overlay: 'This driver is insured. Are you?'",
614
+ "text overlay: 'Most drivers are underinsured.'",
615
+ "text overlay: 'Hope is not a plan.'",
616
+ "text overlay: 'One accident can change everything.'",
617
+ ]
618
+
619
+ SEASONAL_VISUALS = [
620
+ "rain driving (wet road safety)",
621
+ "summer heat (breakdown risk)",
622
+ "winter snow conditions",
623
+ "road trip season",
624
+ ]
625
+
626
+ HIGH_CONVERTING_VISUAL_LIBRARY = (
627
+ PROTECTION_SAFETY_VISUALS +
628
+ ACCIDENT_FEAR_VISUALS +
629
+ FAMILY_SAFETY_VISUALS +
630
+ FIRST_TIME_DRIVER_VISUALS +
631
+ VEHICLE_ASSET_VISUALS +
632
+ PROBLEM_RISK_VISUALS +
633
+ RELIEF_VISUALS +
634
+ FINANCIAL_VISUALS +
635
+ COMPARISON_CHOICE_VISUALS +
636
+ MINIMAL_SYMBOLIC_VISUALS +
637
+ LIFESTYLE_VISUALS +
638
+ TEXT_FIRST_VISUALS +
639
+ SEASONAL_VISUALS
640
+ )
641
+
642
+ # ============================================================================
643
+ # SECTION 3: CREATIVE ELEMENTS
644
+ # ============================================================================
645
+
646
+ CREATIVE_DIRECTIONS = [
647
+ "accusatory", # Direct accusation style
648
+ "curiosity-driven", # Open loop/secret style
649
+ "price-focused", # Price anchor emphasis
650
+ "proof-based", # Evidence/testimonial style
651
+ "quiz-interactive", # Interactive/engagement style
652
+ "authority-backed", # Authority/trust transfer
653
+ "identity-targeted", # Demographic callout
654
+ "insider-reveal", # Exclusive/hidden knowledge
655
+ "urgent", # Time-sensitive urgency
656
+ ]
657
+
658
+ VISUAL_MOODS = [
659
+ "documentary-candid", # Documentary photography style
660
+ "vintage-authentic", # Vintage/retro aesthetic
661
+ "proof-testimonial", # Testimonial/evidence style
662
+ "ui-screenshot", # Native app interface style
663
+ "official-institutional", # Official/document style
664
+ "warm-nostalgic", # Warm, nostalgic tones
665
+ "raw-unpolished", # Raw, unpolished UGC feel
666
+ "news-expose", # News/editorial style
667
+ ]
668
+
669
+ COPY_TEMPLATES = [
670
+ {
671
+ "structure": "hook_then_cta",
672
+ "format": "{hook}\n\n{supporting_text}\n\n👉 {cta}",
673
+ },
674
+ {
675
+ "structure": "question_answer",
676
+ "format": "{question}\n\n{answer}\n\n{cta}",
677
+ },
678
+ {
679
+ "structure": "stat_hook",
680
+ "format": "⚠️ {statistic}\n\n{explanation}\n\n{cta}",
681
+ },
682
+ {
683
+ "structure": "story_hook",
684
+ "format": "{story_opening}\n\n{story_middle}\n\n{cta}",
685
+ },
686
+ ]
687
+
688
+ CTAS = [
689
+ "Check Your Eligibility",
690
+ "See If You Qualify",
691
+ "Check Eligibility Now",
692
+ "Tap To See Your Rate",
693
+ "Calculate Your Savings",
694
+ "Get Your Free Quote",
695
+ "See Your New Rate",
696
+ "Find Out How Much You Can Save",
697
+ "Click To See Your Savings",
698
+ "Get Protected Now",
699
+ "Start Saving Today",
700
+ "Don't Miss This",
701
+ "Claim Your Rate",
702
+ "Drivers: Check Your Rate",
703
+ "See Driver Rates",
704
+ "50+: Get Your Quote",
705
+ ]
706
+
707
+ # ============================================================================
708
+ # SECTION 4: AGGREGATED DATA
709
+ # ============================================================================
710
+
711
+ STRATEGY_NAMES = list(STRATEGIES.keys())
712
+
713
+ ALL_HOOKS = []
714
+ for strategy in STRATEGIES.values():
715
+ ALL_HOOKS.extend(strategy["hooks"])
716
+
717
+ ALL_VISUAL_STYLES = []
718
+ for strategy in STRATEGIES.values():
719
+ ALL_VISUAL_STYLES.extend(strategy["visual_styles"])
720
+ ALL_VISUAL_STYLES.extend(HIGH_CONVERTING_VISUAL_LIBRARY)
721
+
722
+ # ============================================================================
723
+ # SECTION 5: DATA EXPORT
724
+ # ============================================================================
725
+
726
+ def get_niche_data():
727
+ """Return all auto insurance data for the generator."""
728
+ return {
729
+ "niche": "auto_insurance",
730
+ "strategies": STRATEGIES,
731
+ "all_hooks": ALL_HOOKS,
732
+ "all_visual_styles": ALL_VISUAL_STYLES,
733
+ "strategy_names": STRATEGY_NAMES,
734
+ "creative_directions": CREATIVE_DIRECTIONS,
735
+ "visual_moods": VISUAL_MOODS,
736
+ "copy_templates": COPY_TEMPLATES,
737
+ "ctas": CTAS,
738
+ }
data/frameworks.py CHANGED
@@ -365,6 +365,7 @@ def get_frameworks_for_niche(niche: str, count: int = 3) -> List[Dict[str, Any]]
365
  niche_preferences = {
366
  "home_insurance": ["testimonial", "problem_solution", "authority", "before_after", "lifestyle"],
367
  "glp1": ["before_after", "testimonial", "lifestyle", "authority", "problem_solution"],
 
368
  }
369
 
370
  # Get preferred frameworks or use all
 
365
  niche_preferences = {
366
  "home_insurance": ["testimonial", "problem_solution", "authority", "before_after", "lifestyle"],
367
  "glp1": ["before_after", "testimonial", "lifestyle", "authority", "problem_solution"],
368
+ "auto_insurance": ["testimonial", "problem_solution", "authority", "before_after", "comparison"],
369
  }
370
 
371
  # Get preferred frameworks or use all
data/triggers.py CHANGED
@@ -132,6 +132,7 @@ def get_triggers_for_niche(niche: str) -> List[Dict[str, Any]]:
132
  niche_triggers = {
133
  "home_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
134
  "glp1": ["transformation", "pride", "social_proof", "authority", "relief"],
 
135
  }
136
  trigger_keys = niche_triggers.get(niche_lower, list(PSYCHOLOGICAL_TRIGGERS.keys())[:5])
137
  return [{"key": k, **PSYCHOLOGICAL_TRIGGERS[k]} for k in trigger_keys if k in PSYCHOLOGICAL_TRIGGERS]
 
132
  niche_triggers = {
133
  "home_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
134
  "glp1": ["transformation", "pride", "social_proof", "authority", "relief"],
135
+ "auto_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
136
  }
137
  trigger_keys = niche_triggers.get(niche_lower, list(PSYCHOLOGICAL_TRIGGERS.keys())[:5])
138
  return [{"key": k, **PSYCHOLOGICAL_TRIGGERS[k]} for k in trigger_keys if k in PSYCHOLOGICAL_TRIGGERS]
data/visuals.py CHANGED
@@ -110,6 +110,12 @@ NICHE_VISUAL_GUIDANCE: Dict[str, Dict[str, Any]] = {
110
  "age_guidance": "Show people aged 30-50 primarily. Avoid defaulting to elderly/senior citizens. Target audience is middle-aged adults, not seniors.",
111
  "color_preference": "health",
112
  },
 
 
 
 
 
 
113
  }
114
 
115
  def get_color_palette(trigger: str) -> Dict[str, str]:
 
110
  "age_guidance": "Show people aged 30-50 primarily. Avoid defaulting to elderly/senior citizens. Target audience is middle-aged adults, not seniors.",
111
  "color_preference": "health",
112
  },
113
+ "auto_insurance": {
114
+ "subjects": ["driver with car", "family near vehicle", "car owner looking confident", "person reviewing insurance documents"],
115
+ "props": ["insurance papers", "car keys", "vehicle", "smartphone with app", "documents"],
116
+ "avoid": ["car accidents", "crashes", "damaged vehicles prominently", "stressed expressions"],
117
+ "color_preference": "trust",
118
+ },
119
  }
120
 
121
  def get_color_palette(trigger: str) -> Dict[str, str]:
frontend/components/generation/BatchForm.tsx CHANGED
@@ -56,6 +56,7 @@ export const BatchForm: React.FC<BatchFormProps> = ({
56
  options={[
57
  { value: "home_insurance", label: "Home Insurance" },
58
  { value: "glp1", label: "GLP-1" },
 
59
  ]}
60
  error={errors.niche?.message}
61
  {...register("niche")}
 
56
  options={[
57
  { value: "home_insurance", label: "Home Insurance" },
58
  { value: "glp1", label: "GLP-1" },
59
+ { value: "auto_insurance", label: "Auto Insurance" },
60
  ]}
61
  error={errors.niche?.message}
62
  {...register("niche")}
frontend/components/generation/ExtensiveForm.tsx CHANGED
@@ -87,7 +87,8 @@ export const ExtensiveForm: React.FC<ExtensiveFormProps> = ({
87
  options={[
88
  { value: "home_insurance", label: "Home Insurance" },
89
  { value: "glp1", label: "GLP-1" },
90
- { value: "others", label: "Others" },
 
91
  ]}
92
  error={errors.niche?.message}
93
  {...register("niche")}
 
87
  options={[
88
  { value: "home_insurance", label: "Home Insurance" },
89
  { value: "glp1", label: "GLP-1" },
90
+ { value: "auto_insurance", label: "Auto Insurance" },
91
+ { value: "others", label: "Others (Custom)" },
92
  ]}
93
  error={errors.niche?.message}
94
  {...register("niche")}
frontend/components/generation/GenerationForm.tsx CHANGED
@@ -122,6 +122,7 @@ export const GenerationForm: React.FC<GenerationFormProps> = ({
122
  options={[
123
  { value: "home_insurance", label: "Home Insurance" },
124
  { value: "glp1", label: "GLP-1" },
 
125
  ]}
126
  error={errors.niche?.message}
127
  {...register("niche")}
 
122
  options={[
123
  { value: "home_insurance", label: "Home Insurance" },
124
  { value: "glp1", label: "GLP-1" },
125
+ { value: "auto_insurance", label: "Auto Insurance" },
126
  ]}
127
  error={errors.niche?.message}
128
  {...register("niche")}
main.py CHANGED
@@ -110,8 +110,8 @@ if os.path.exists(frontend_static_path):
110
  # Request/Response schemas
111
  class GenerateRequest(BaseModel):
112
  """Request schema for ad generation."""
113
- niche: Literal["home_insurance", "glp1"] = Field(
114
- description="Target niche: home_insurance or glp1"
115
  )
116
  num_images: int = Field(
117
  default=1,
@@ -143,8 +143,8 @@ class GenerateRequest(BaseModel):
143
 
144
  class GenerateBatchRequest(BaseModel):
145
  """Request schema for batch ad generation."""
146
- niche: Literal["home_insurance", "glp1"] = Field(
147
- description="Target niche: home_insurance or glp1"
148
  )
149
  count: int = Field(
150
  default=5,
@@ -225,7 +225,7 @@ class BatchResponse(BaseModel):
225
  # Matrix-based schemas
226
  class MatrixGenerateRequest(BaseModel):
227
  """Request for angle × concept matrix generation."""
228
- niche: Literal["home_insurance", "glp1"] = Field(
229
  description="Target niche"
230
  )
231
  angle_key: Optional[str] = Field(
@@ -276,7 +276,7 @@ class RefineCustomRequest(BaseModel):
276
  type: Literal["angle", "concept"] = Field(
277
  description="Whether this is an angle or concept"
278
  )
279
- niche: Literal["home_insurance", "glp1"] = Field(
280
  description="Target niche for context"
281
  )
282
  goal: Optional[str] = Field(
@@ -316,7 +316,7 @@ class RefineCustomResponse(BaseModel):
316
  # Motivator generation (angle + concept context)
317
  class MotivatorGenerateRequest(BaseModel):
318
  """Request to generate motivators from niche + angle + concept."""
319
- niche: Literal["home_insurance", "glp1"] = Field(description="Target niche")
320
  angle: Dict[str, Any] = Field(
321
  description="Angle context: name, trigger, example (and optional key, category)"
322
  )
@@ -505,7 +505,7 @@ async def health():
505
 
506
  @app.get("/api/trends/{niche}")
507
  async def get_trends(
508
- niche: Literal["home_insurance", "glp1"],
509
  username: str = Depends(get_current_user)
510
  ):
511
  """
@@ -545,7 +545,7 @@ async def get_trends(
545
 
546
  @app.get("/api/trends/angles/{niche}")
547
  async def get_trending_angles(
548
- niche: Literal["home_insurance", "glp1"],
549
  username: str = Depends(get_current_user)
550
  ):
551
  """
@@ -1512,7 +1512,7 @@ async def list_image_models():
1512
 
1513
 
1514
  @app.get("/strategies/{niche}")
1515
- async def get_strategies(niche: Literal["home_insurance", "glp1"]):
1516
  """
1517
  Get available psychological strategies for a niche.
1518
 
 
110
  # Request/Response schemas
111
  class GenerateRequest(BaseModel):
112
  """Request schema for ad generation."""
113
+ niche: Literal["home_insurance", "glp1", "auto_insurance"] = Field(
114
+ description="Target niche: home_insurance, glp1, or auto_insurance"
115
  )
116
  num_images: int = Field(
117
  default=1,
 
143
 
144
  class GenerateBatchRequest(BaseModel):
145
  """Request schema for batch ad generation."""
146
+ niche: Literal["home_insurance", "glp1", "auto_insurance"] = Field(
147
+ description="Target niche: home_insurance, glp1, or auto_insurance"
148
  )
149
  count: int = Field(
150
  default=5,
 
225
  # Matrix-based schemas
226
  class MatrixGenerateRequest(BaseModel):
227
  """Request for angle × concept matrix generation."""
228
+ niche: Literal["home_insurance", "glp1", "auto_insurance"] = Field(
229
  description="Target niche"
230
  )
231
  angle_key: Optional[str] = Field(
 
276
  type: Literal["angle", "concept"] = Field(
277
  description="Whether this is an angle or concept"
278
  )
279
+ niche: Literal["home_insurance", "glp1", "auto_insurance"] = Field(
280
  description="Target niche for context"
281
  )
282
  goal: Optional[str] = Field(
 
316
  # Motivator generation (angle + concept context)
317
  class MotivatorGenerateRequest(BaseModel):
318
  """Request to generate motivators from niche + angle + concept."""
319
+ niche: Literal["home_insurance", "glp1", "auto_insurance"] = Field(description="Target niche")
320
  angle: Dict[str, Any] = Field(
321
  description="Angle context: name, trigger, example (and optional key, category)"
322
  )
 
505
 
506
  @app.get("/api/trends/{niche}")
507
  async def get_trends(
508
+ niche: Literal["home_insurance", "glp1", "auto_insurance"],
509
  username: str = Depends(get_current_user)
510
  ):
511
  """
 
545
 
546
  @app.get("/api/trends/angles/{niche}")
547
  async def get_trending_angles(
548
+ niche: Literal["home_insurance", "glp1", "auto_insurance"],
549
  username: str = Depends(get_current_user)
550
  ):
551
  """
 
1512
 
1513
 
1514
  @app.get("/strategies/{niche}")
1515
+ async def get_strategies(niche: Literal["home_insurance", "glp1", "auto_insurance"]):
1516
  """
1517
  Get available psychological strategies for a niche.
1518
 
services/generator.py CHANGED
@@ -56,7 +56,7 @@ except ImportError:
56
  print("Note: Trend monitor service not available.")
57
 
58
  # Data module imports
59
- from data import home_insurance, glp1
60
  from services.matrix import matrix_service
61
  from data.frameworks import get_frameworks_for_niche, get_framework_hook_examples, get_all_frameworks
62
  from data.containers import (
@@ -78,6 +78,7 @@ from data.visuals import (
78
  NICHE_DATA = {
79
  "home_insurance": home_insurance.get_niche_data,
80
  "glp1": glp1.get_niche_data,
 
81
  }
82
 
83
  # Age brackets for identity targeting (proven high-CTR pattern)
 
56
  print("Note: Trend monitor service not available.")
57
 
58
  # Data module imports
59
+ from data import home_insurance, glp1, auto_insurance
60
  from services.matrix import matrix_service
61
  from data.frameworks import get_frameworks_for_niche, get_framework_hook_examples, get_all_frameworks
62
  from data.containers import (
 
78
  NICHE_DATA = {
79
  "home_insurance": home_insurance.get_niche_data,
80
  "glp1": glp1.get_niche_data,
81
+ "auto_insurance": auto_insurance.get_niche_data,
82
  }
83
 
84
  # Age brackets for identity targeting (proven high-CTR pattern)
services/trend_monitor.py CHANGED
@@ -19,6 +19,11 @@ NICHE_KEYWORDS = {
19
  "GLP-1", "Ozempic", "Wegovy", "Mounjaro", "Zepbound",
20
  "weight loss", "diabetes", "semaglutide", "tirzepatide",
21
  "weight loss drug", "obesity treatment"
 
 
 
 
 
22
  ]
23
  }
24
 
 
19
  "GLP-1", "Ozempic", "Wegovy", "Mounjaro", "Zepbound",
20
  "weight loss", "diabetes", "semaglutide", "tirzepatide",
21
  "weight loss drug", "obesity treatment"
22
+ ],
23
+ "auto_insurance": [
24
+ "auto insurance", "car insurance", "vehicle insurance",
25
+ "driving safety", "accident rates", "insurance premiums",
26
+ "car insurance rates", "driver discounts", "vehicle coverage"
27
  ]
28
  }
29