from docx import Document
from docx.shared import Pt, RGBColor, Inches, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

# ─── Colors ───
PINK   = RGBColor(0xE8, 0x19, 0x5A)
VIOLET = RGBColor(0x7C, 0x3A, 0xED)
TEAL   = RGBColor(0x08, 0x91, 0xB2)
AMBER  = RGBColor(0xD9, 0x77, 0x06)
GREEN  = RGBColor(0x05, 0x96, 0x69)
BLUE   = RGBColor(0x25, 0x63, 0xEB)
DARK   = RGBColor(0x11, 0x18, 0x27)
BODY   = RGBColor(0x37, 0x41, 0x51)
GRAY   = RGBColor(0x6B, 0x72, 0x80)
WHITE  = RGBColor(0xFF, 0xFF, 0xFF)
BORDER = RGBColor(0xE5, 0xE7, 0xEB)

doc = Document()

for section in doc.sections:
    section.top_margin    = Cm(2.0)
    section.bottom_margin = Cm(2.0)
    section.left_margin   = Cm(2.5)
    section.right_margin  = Cm(2.5)

def set_cell_bg(cell, hex_color):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), hex_color)
    tcPr.append(shd)

def add_paragraph(text='', bold=False, italic=False, size=11, color=None,
                  align=WD_ALIGN_PARAGRAPH.LEFT, space_before=0, space_after=6):
    p = doc.add_paragraph()
    p.alignment = align
    p.paragraph_format.space_before = Pt(space_before)
    p.paragraph_format.space_after  = Pt(space_after)
    if text:
        run = p.add_run(text)
        run.bold = bold
        run.italic = italic
        run.font.size = Pt(size)
        run.font.color.rgb = color or DARK
    return p

def add_h1(text):
    p = add_paragraph(text, bold=True, size=20, color=DARK, space_before=12, space_after=4)
    p.alignment = WD_ALIGN_PARAGRAPH.LEFT
    return p

def add_h2(text, color=PINK):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(8)
    p.paragraph_format.space_after  = Pt(4)
    r = p.add_run(text)
    r.bold = True
    r.font.size = Pt(14)
    r.font.color.rgb = color
    return p

def add_page_break():
    doc.add_page_break()

def set_cell_bg(cell, hex_color):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), hex_color)
    tcPr.append(shd)

def add_cat_banner(emoji, eyebrow, title, desc, bg_hex='FFF0F6'):
    table = doc.add_table(rows=1, cols=1)
    table.style = 'Table Grid'
    cell = table.cell(0, 0)
    set_cell_bg(cell, bg_hex)
    p = cell.paragraphs[0]
    p.paragraph_format.space_before = Pt(4)
    p.paragraph_format.space_after  = Pt(4)
    p.alignment = WD_ALIGN_PARAGRAPH.LEFT
    r_ey = p.add_run(eyebrow.upper() + '\n')
    r_ey.bold = True
    r_ey.font.size = Pt(8)
    r_ey.font.color.rgb = GRAY
    r_t = p.add_run(emoji + '  ' + title + '\n')
    r_t.bold = True
    r_t.font.size = Pt(16)
    r_t.font.color.rgb = DARK
    r_d = p.add_run(desc)
    r_d.font.size = Pt(10)
    r_d.font.color.rgb = BODY
    doc.add_paragraph().paragraph_format.space_after = Pt(4)
    return table

def add_prompt_card(num, title, tags, prompt_text):
    table = doc.add_table(rows=1, cols=1)
    table.style = 'Table Grid'
    outer = table.cell(0, 0)
    set_cell_bg(outer, 'FFFFFF')
    p = outer.paragraphs[0]
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after  = Pt(2)
    r_num = p.add_run(f'{num}  ')
    r_num.bold = True
    r_num.font.size = Pt(10)
    r_num.font.color.rgb = PINK
    r_t = p.add_run(title + '\n')
    r_t.bold = True
    r_t.font.size = Pt(11)
    r_t.font.color.rgb = DARK
    r_tags = p.add_run('  '.join([f'[{t}]' for t in tags]) + '\n')
    r_tags.font.size = Pt(8)
    r_tags.font.color.rgb = VIOLET
    r_lbl = p.add_run('COPY & PASTE:\n')
    r_lbl.bold = True
    r_lbl.font.size = Pt(8)
    r_lbl.font.color.rgb = GRAY
    r_pt = p.add_run(prompt_text)
    r_pt.font.size = Pt(10)
    r_pt.font.color.rgb = BODY
    sp = doc.add_paragraph()
    sp.paragraph_format.space_after = Pt(6)

def add_tip_box(label, text):
    table = doc.add_table(rows=1, cols=1)
    table.style = 'Table Grid'
    cell = table.cell(0, 0)
    set_cell_bg(cell, 'FFF5F8')
    p = cell.paragraphs[0]
    p.paragraph_format.space_before = Pt(4)
    p.paragraph_format.space_after  = Pt(4)
    r_l = p.add_run(label + '\n')
    r_l.bold = True
    r_l.font.size = Pt(9)
    r_l.font.color.rgb = PINK
    r_t = p.add_run(text)
    r_t.font.size = Pt(10)
    r_t.font.color.rgb = BODY
    doc.add_paragraph().paragraph_format.space_after = Pt(6)


# ══════════════════════════════
# COVER PAGE
# ══════════════════════════════
add_paragraph('EXPANDED EDITION — 100 PROMPTS', bold=True, size=9, color=PINK,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=8)
add_paragraph('THE AGENCY OWNER\'S ULTIMATE SHORTCUT', bold=False, size=9, color=GRAY,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=8)

# Big title
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p.paragraph_format.space_before = Pt(40)
p.paragraph_format.space_after  = Pt(4)
r1 = p.add_run('GHL Agency\n')
r1.bold = True
r1.font.size = Pt(36)
r1.font.color.rgb = DARK
r2 = p.add_run('Starter Prompt Pack')
r2.bold = True
r2.font.size = Pt(36)
r2.font.color.rgb = PINK

add_paragraph(
    '100 ready-to-use ChatGPT prompts for GHL agencies — covering lead gen, follow-up, '
    'onboarding, ad copy, client retention, social media, sales closing, and email marketing.',
    size=12, color=BODY, align=WD_ALIGN_PARAGRAPH.CENTER, space_before=10, space_after=16
)

# Stats row
table = doc.add_table(rows=1, cols=3)
table.style = 'Table Grid'
table.alignment = WD_ALIGN_PARAGRAPH.CENTER
for i, (num, label) in enumerate([('100', 'PROMPTS'), ('8', 'CATEGORIES'), ('INFINITE', 'USES')]):
    cell = table.cell(0, i)
    set_cell_bg(cell, 'FFFFFF')
    p = cell.paragraphs[0]
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p.paragraph_format.space_before = Pt(8)
    p.paragraph_format.space_after  = Pt(2)
    r = p.add_run(num + '\n')
    r.bold = True
    r.font.size = Pt(24)
    r.font.color.rgb = PINK
    r2 = p.add_run(label)
    r2.bold = True
    r2.font.size = Pt(9)
    r2.font.color.rgb = GRAY

add_paragraph('', space_before=14, space_after=4)
cats = ['01 Lead Generation', '02 Follow-Up & Nurture', '03 Client Onboarding',
        '04 Ad Copy & Funnels', '05 Client Retention', '06 Social Media',
        '07 Sales & Closing', '08 Email Marketing']
add_paragraph('  ·  '.join(cats[:4]), size=9, color=GRAY,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=8, space_after=2)
add_paragraph('  ·  '.join(cats[4:]), size=9, color=GRAY,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=20)
add_paragraph('MelAI  HireAI  |  2026 Edition', bold=True, size=10, color=GRAY,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=40, space_after=0)

add_page_break()


# ══════════════════════════════
# HOW TO USE
# ══════════════════════════════
add_paragraph('GETTING STARTED', bold=True, size=9, color=PINK, space_before=0, space_after=4)
add_h1('How to Use This Prompt Pack')

steps = [
    ('01  Fill In the Brackets',
     'Every prompt has [placeholders]. Replace them with your niche, client name, offer, or specific details before running the prompt.'),
    ('02  Pick Your AI Tool',
     'Works with ChatGPT GPT-4o, Claude, or Gemini. ChatGPT GPT-4o gives the best copywriting output for marketing content.'),
    ('03  Iterate & Refine',
     'After the first output follow up: "Make it shorter", "More casual", "Add urgency", or "Write 3 variations."'),
    ('04  Build Your Swipe File',
     'Save every output that works into a Google Doc. After 90 days you\'ll have a library of proven copy to reuse forever.'),
]

for title, desc in steps:
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(4)
    p.paragraph_format.space_after  = Pt(2)
    r1 = p.add_run(title + '\n')
    r1.bold = True
    r1.font.size = Pt(11)
    r1.font.color.rgb = DARK
    r2 = p.add_run(desc)
    r2.font.size = Pt(10)
    r2.font.color.rgb = BODY

add_paragraph('', space_after=6)
add_tip_box(
    'POWER MOVE — Add This Before Any Prompt',
    '"You are an expert GHL marketing strategist for [niche] businesses. Write in a conversational, direct '
    'tone — no corporate language, no filler, no AI-sounding phrases."'
)
add_paragraph('Paste outputs directly into GHL:', bold=True, size=10, color=DARK, space_before=4, space_after=4)
add_paragraph('Email Templates  |  SMS Workflows  |  Funnel Pages  |  Chatbot Flows  |  Social Planner  |  SOPs',
              size=10, color=BODY, space_before=0, space_after=8)

add_page_break()

# ══════════════════════════════
# TABLE OF CONTENTS
# ══════════════════════════════
add_paragraph('NAVIGATION', bold=True, size=9, color=PINK, space_before=0, space_after=4)
add_h1('Table of Contents')

toc = [
    ('01', '🎯 Lead Generation',              '#1–#15',   'Cold DMs, email hooks, Facebook ad hooks, database reactivation, VSL scripts, podcast pitches'),
    ('02', '🔄 Follow-Up & Nurture',          '#16–#30',  'Speed-to-lead SMS, 5-day nurture, no-show recovery, objection handling, re-engagement'),
    ('03', '🤝 Client Onboarding',            '#31–#42',  'Welcome emails, kickoff agendas, GHL sub-account SOPs, escalation protocols'),
    ('04', '📢 Ad Copy & Sales Funnels',      '#43–#54',  'Facebook ads, landing pages, retargeting, Google Ads, YouTube pre-roll, SMS blast'),
    ('05', '📊 Client Retention',             '#55–#66',  'Monthly reports, QBRs, upsell emails, VIP notes, year-in-review, re-activation'),
    ('06', '📱 Social Media Content',         '#67–#78',  'LinkedIn, Instagram, TikTok, 30-day calendar, Twitter threads, YouTube scripts'),
    ('07', '💰 Sales & Closing Scripts',      '#79–#90',  'Discovery calls, objection handlers, proposals, contracts, post-signing welcome'),
    ('08', '📧 Email Marketing',              '#91–#100', 'Welcome sequences, story emails, launch sequences, CEO letter, curiosity emails'),
]

for num, title, prompts, desc in toc:
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(3)
    p.paragraph_format.space_after  = Pt(3)
    r_n = p.add_run(f'{num}  ')
    r_n.bold = True
    r_n.font.size = Pt(13)
    r_n.font.color.rgb = PINK
    r_t = p.add_run(title)
    r_t.bold = True
    r_t.font.size = Pt(12)
    r_t.font.color.rgb = DARK
    r_p = p.add_run(f'  ({prompts})\n')
    r_p.font.size = Pt(9)
    r_p.font.color.rgb = GRAY
    r_d = p.add_run(f'     {desc}')
    r_d.font.size = Pt(10)
    r_d.font.color.rgb = BODY

add_paragraph('', space_after=8)
add_tip_box(
    'Quick Start — First 15 Minutes',
    'Run Prompt #1 (Cold DM), then Prompt #12 (Speed-to-Lead SMS), then Prompt #31 (Welcome Email). '
    'Three working GHL assets — done.'
)

add_page_break()


# ══════════════════════════════
# CATEGORY 01 — LEAD GENERATION (#1–#15)
# ══════════════════════════════
add_cat_banner('🎯', 'Prompts #1–#15', 'Lead Generation',
    'Fill your pipeline. Cold outreach, hooks, ad copy, database reactivation, VSL scripts, and more.', 'FFF0F6')

prompts_cat01 = [
    ('#01', 'Cold Outreach DM — Instagram / Facebook',
     ['DM', '60 words max', 'Soft CTA'],
     'Write a 3-sentence cold DM for a [niche] business owner introducing my GHL-powered marketing agency. '
     'Feel human, not salesy, mention ONE pain point (slow lead response), end with a soft CTA asking if '
     'they\'re open to a quick chat. Under 60 words.'),
    ('#02', 'Cold Email Subject Lines — A/B Test Pack',
     ['Email', '10 subject lines', '3 angles'],
     'Write 10 cold email subject lines for a marketing agency targeting [niche] business owners. Make 5 curiosity-based, '
     '3 pain-point-based, and 2 results-based. Avoid spam words like "free" or "guaranteed". Goal: high open rates.'),
    ('#03', 'Lead Magnet Title Generator',
     ['Lead Magnets', '10 ideas', 'Fast results'],
     'Generate 10 irresistible lead magnet titles for [niche] business owners. Each should promise a specific, fast result. '
     'Format: [Number] + [Outcome] + [Timeframe]. Example: "5 Texts That Book Appointments in 24 Hours".'),
    ('#04', 'Facebook Ad Hook Pack',
     ['Facebook Ads', '7 hooks', '3 hook types'],
     'Write 7 scroll-stopping hooks for Facebook/Instagram ads targeting [niche] owners struggling to get leads. '
     'Mix question hooks, bold statement hooks, and story hooks. Each hook should grab attention in the first line.'),
    ('#05', 'LinkedIn Prospecting Message Sequence',
     ['LinkedIn', '3 messages', '3 days apart'],
     'Write a LinkedIn connection request + 2 follow-up messages (3 days apart each) targeting [niche] business owners. '
     'Goal: book a discovery call. Professional but conversational. No pitching in message 1.'),
    ('#06', 'VSL (Video Sales Letter) Script Outline',
     ['Video', '5 minutes', '6 sections'],
     'Create a 5-minute VSL script outline for a GHL agency targeting [niche] businesses. Include: Hook (30s), '
     'Pain Agitation (60s), Solution (60s), Social Proof (60s), Offer Breakdown (60s), CTA (30s).'),
    ('#07', 'Database Reactivation SMS Sequence',
     ['SMS', '3 messages', '160 chars each'],
     'Write a 3-message SMS sequence to reactivate cold leads in a [niche] business\'s old database. '
     'Message 1: Re-engage with curiosity. Message 2 (24hrs later): Soft offer. '
     'Message 3 (48hrs later): Final nudge with urgency. Each under 160 characters.'),
    ('#08', 'Google Business Profile Post',
     ['Google', 'Local SEO', 'Under 1500 chars'],
     'Write a Google Business Profile post for a [niche] business to attract local leads. Include a pain point, '
     'brief solution, social proof placeholder, and a CTA with a GHL booking link. Under 1500 characters. Conversational tone.'),
    ('#09', 'Referral Request Script (SMS)',
     ['SMS', 'Casual tone', 'Incentive included'],
     'Write a text message script for a [niche] business owner to send to satisfied clients asking for referrals. '
     'Casual, not pushy. Include a simple incentive mention. Should feel like a friend texting, not a corporation.'),
    ('#10', 'Niche Market Research Prompt',
     ['Research', 'Pain points', 'Messaging clarity'],
     'Act as a market researcher. For [niche] businesses in [location], identify: 1) Top 3 pain points getting clients, '
     '2) Objections to marketing services, 3) Their dream outcome, 4) The exact words they use to describe their problems.'),
    ('#11', 'Cold Video DM Script (Loom / Instagram Reel)',
     ['Video DM', '60 seconds', 'Soft CTA'],
     'Write a 60-second cold video DM script (for Loom or a short Instagram video) for a GHL agency reaching out to [niche] '
     'business owners. Structure: 0–10s personal intro (name + why you\'re reaching out), 10–40s identify one specific pain point '
     'they likely face (e.g., leads not responding, no follow-up system), 40–60s soft CTA — not "buy now", just "does this sound '
     'familiar? drop me a reply". Conversational, warm, and concise. No pitch. No hard sell.'),
    ('#12', 'Local Business Directory Outreach Email',
     ['Email', 'Google Maps lead', 'Personalized'],
     'Write a personalized cold outreach email to a [niche] business owner found on Google Maps. Reference their '
     'business name, location, and something specific from their Google reviews (placeholder). Introduce my GHL agency, '
     'mention one local-specific pain point, and offer a free 15-minute strategy call. Under 200 words. Feels hand-written, not mass-blasted.'),
    ('#13', 'Partnership / Referral Partner Outreach DM',
     ['DM', 'Complementary providers', 'Win-win framing'],
     'Write a short DM to a [complementary service provider, e.g. web designer / accountant / business coach] proposing a referral '
     'partnership. I run a GHL marketing agency for [niche] clients. Frame it as a win-win — I send them leads, they send me leads. '
     'No money changes hands. Keep it casual and under 80 words. End with a simple yes/no question.'),
    ('#14', 'Event & Webinar Follow-Up Email',
     ['Email', 'Post-event nurture', 'Warm lead'],
     'Write a follow-up email to someone who attended my free [workshop/webinar name] on [topic]. '
     'Thank them for attending, reference one key insight from the event (placeholder), ask one question to gauge their current '
     'situation, and invite them to a free 15-minute implementation call. Warm, conversational, not pushy. Under 250 words.'),
    ('#15', 'Podcast Pitch Email',
     ['Email', 'Guest pitch', 'Authority positioning'],
     'Write a podcast pitch email to the host of [podcast name], a show focused on [niche/topic]. Pitch myself as a guest — '
     'I am a GHL marketing agency owner who helps [niche] businesses [result]. Suggest 3 specific episode topic ideas. '
     'Keep it under 200 words. Sound like a peer reaching out, not a fan begging for airtime.'),
]

for p in prompts_cat01:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 02 — FOLLOW-UP & NURTURE (#16–#30)
# ══════════════════════════════
add_cat_banner('🔄', 'Prompts #16–#30', 'Follow-Up & Nurture Sequences',
    'Turn cold leads into booked calls. Speed-to-lead SMS, nurture emails, no-show recovery, and re-engagement.', 'F5F0FF')

prompts_cat02 = [
    ('#16', '5-Day Email Nurture Sequence',
     ['Email', '5 emails', 'Post lead magnet'],
     'Write a 5-day email nurture for leads who opted into my free lead magnet for [niche] businesses. '
     'Day 1: Deliver + warm welcome. Day 2: Pain story. Day 3: Educational value. '
     'Day 4: Social proof. Day 5: Soft discovery call pitch. Conversational, short paragraphs.'),
    ('#17', 'Speed-to-Lead SMS (Fires Within 60 Seconds)',
     ['SMS', '160 chars', 'GHL auto-response'],
     'Write a GHL SMS auto-response that fires within 60 seconds of a new Facebook ad lead. '
     'Greet by first name, reference the opt-in, ask one qualifying question, hint someone will follow up. Under 160 characters.'),
    ('#18', 'No-Show Follow-Up Sequence',
     ['SMS + Email', '3 steps', 'Same day to Day 3'],
     'Write a 3-step follow-up for leads who booked but did not show. Step 1 (same day): Empathetic reschedule text. '
     'Step 2 (next day): Email with value + reschedule link. Step 3 (Day 3): Final "breaking up" text with urgency. Match [niche] context.'),
    ('#19', 'Post-Discovery Call — "I Need to Think About It"',
     ['Email', 'Under 300 words', 'Objection handler'],
     'Write a follow-up email within 1 hour after a discovery call where the prospect said "I need to think about it." '
     'Recap their pain points (placeholders), reinforce ROI, address the hesitation, include soft next step. Under 300 words.'),
    ('#20', 'Appointment Reminder Sequence',
     ['SMS + Email', '3-part', '24h / 2h / 30min'],
     'Write a 3-part appointment reminder for a [niche] business: 1) 24 hours before (email + SMS), '
     '2) 2 hours before (SMS only), 3) 30 minutes before (SMS only). Keep SMS under 160 characters. Friendly, not robotic.'),
    ('#21', 'Lead Qualification Chatbot Script',
     ['GHL Chatbot', '5 questions', 'Button options'],
     'Create a 5-question chatbot flow to qualify leads for a [niche] business. Filter for: budget, timeline, '
     'problem severity, decision-maker status, location. Write 2-3 button answer options per question. '
     'Booking CTA for qualified leads; soft redirect for others.'),
    ('#22', 'Win-Back Email — Cold Leads (90+ Days)',
     ['Email', 'Re-engagement', 'Zero pressure'],
     'Write a re-engagement email for leads who went cold 90+ days ago in a [niche] GHL CRM. '
     'Include 3 subject line options. Body: brief, curious, zero pressure, one CTA. '
     'Should feel like a human checking in, not a system email.'),
    ('#23', 'Objection Handler — "Too Expensive"',
     ['Email + SMS', 'ROI reframe', 'Entry point offer'],
     'Write a follow-up (email + SMS version) for a prospect who said your services are too expensive. '
     'Reframe cost as investment with ROI placeholder, offer an alternative entry point (smaller package or payment plan). Do not be defensive.'),
    ('#24', 'Social Proof Email — Case Study Format',
     ['Email', 'Storytelling', 'Under 250 words'],
     'Write a short case study email for [niche] clients. Format: Client description then Problem then GHL solution then '
     'Results (placeholder numbers) then CTA. Under 250 words. Storytelling style, not corporate.'),
    ('#25', 'Referral Thank You + Subtle Upsell SMS',
     ['SMS', 'Under 160 chars', 'Warm + personal'],
     'Write an SMS after receiving a referral from an existing client. Thank them, mention a small reward placeholder, '
     'and subtly introduce one additional service. Warm and personal. Under 160 characters.'),
    ('#26', 'Post-Free-Trial Conversion Email',
     ['Email', 'SaaS / GHL snapshot', 'Upgrade CTA'],
     'Write a conversion email sent at the end of a free trial for a GHL snapshot or SaaS product. Remind them what they '
     'experienced, highlight the top 2-3 results or features they used, address the cost objection briefly, '
     'and give a clear upgrade CTA with a time-sensitive incentive. Under 300 words.'),
    ('#27', '"Last Chance" Urgency Email',
     ['Email', 'Ethical scarcity', 'Final in sequence'],
     'Write the final email in a follow-up sequence for a [niche] lead who has not responded. Use ethical scarcity — '
     'limited spots, end of promotional period, or a deadline for a bonus. Be direct and honest. Do not fake urgency. '
     'End with a clear choice: now or later with no pressure. Under 200 words.'),
    ('#28', 'Loom Video Follow-Up Script',
     ['Video script', '2 minutes', 'Personalized walkthrough'],
     'Write a 2-minute personalized Loom video script to send to a lead after initial contact. Structure: '
     '0-20s greet by name + reason for the video, 20-60s walk through their specific situation and what you noticed '
     '(reference their business/niche/problem — use [placeholders]), 60-90s show a quick example or insight relevant to them, '
     '90-120s soft CTA — reply, book a call, or just say yes/no. No screen needed — just face cam is fine.'),
    ('#29', 'WhatsApp / SMS Check-In (2-Week Follow-Up)',
     ['SMS / WhatsApp', 'Casual', '2-week re-touch'],
     'Write a casual WhatsApp or SMS message to send to a lead who showed interest 2 weeks ago but went quiet. '
     'Do NOT pitch. Just check in like a human would. Reference their situation briefly, ask one simple question, '
     'keep it under 60 words. Should feel like a friend touching base, not a sales robot.'),
    ('#30', 'Re-Engagement Poll SMS',
     ['SMS', 'Single question poll', 'Re-qualify cold lead'],
     'Write a single-question poll SMS to re-qualify a cold lead who has not responded in 30+ days. '
     'Example format: "Hey [Name] — quick question: [simple yes/no or option A/B question about their situation]. '
     'Reply A or B." Goal is to get any response to restart the conversation. Under 160 characters.'),
]

for p in prompts_cat02:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 03 — CLIENT ONBOARDING (#31–#42)
# ══════════════════════════════
add_cat_banner('🤝', 'Prompts #31–#42', 'Client Onboarding',
    'Impress from day one. Welcome emails, kickoff agendas, SOPs, escalation protocols, and milestone moments.', 'F0FCFF')

prompts_cat03 = [
    ('#31', 'Welcome Email — New Client',
     ['Email', 'Under 300 words', '7-day preview'],
     'Write a warm, professional welcome email for a new client joining my GHL agency. Include: what they can expect '
     'in the first 7 days, dedicated point of contact, how to reach us, and a link to their onboarding form. '
     'Excited but confident tone. Under 300 words.'),
    ('#32', 'Client Onboarding Questionnaire',
     ['Form', 'Brand + Goals', 'Tech access'],
     'Create a comprehensive onboarding questionnaire for a new [niche] client at my GHL agency. Cover: business background, '
     'target customer, current marketing, brand voice, competitors, 30/60/90-day goals, login credentials needed, and communication preferences.'),
    ('#33', 'Kickoff Call Agenda — 60 Minutes',
     ['Agenda', '6 sections', 'Time-blocked'],
     'Write a 60-minute kickoff call agenda for a new [niche] client. Sections: intro/rapport (5 min), questionnaire review (15 min), '
     'goal alignment (10 min), tech setup walkthrough (15 min), workflow review (10 min), Q&A (5 min). Add talking points for each section.'),
    ('#34', 'SOP: GHL Sub-Account Setup',
     ['SOP', 'Team-ready', 'Step-by-step'],
     'Write a step-by-step SOP for setting up a new GHL sub-account for a [niche] client. Include: account creation, '
     'branding setup, pipeline creation, calendar/booking setup, automation triggers, and integration checklist. '
     'Written for a team member to follow without supervision.'),
    ('#35', 'Client Communication Policy Document',
     ['Document', 'Under 400 words', 'Policy'],
     'Write a "Client Communication Policy" document for new agency clients. Cover: response times, communication channels, '
     'revision policy, monthly reporting schedule, escalation process, and office hours. Firm but friendly tone. Under 400 words.'),
    ('#36', '30-Day Onboarding Checklist (Client-Facing)',
     ['Checklist', 'Week-by-week', 'Client vs Agency'],
     'Create a client-facing 30-day onboarding checklist for a GHL agency. Week 1: Setup & Access. Week 2: Campaign Launch. '
     'Week 3: First Optimization. Week 4: First Report + Review. Separate what the CLIENT does vs. what the AGENCY handles.'),
    ('#37', 'Tech Stack Access Request Email',
     ['Email', 'Access request', 'Security reassurance'],
     'Write an email requesting all tech access needed to set up a new client\'s GHL account. List what\'s needed '
     '(Facebook Ads Manager, Google Business, website access, etc.) with clear instructions for each. '
     'Reassure them about security. Friendly, confident tone.'),
    ('#38', 'Expectation-Setting Email — Week 1',
     ['Email', 'Timelines', 'Transparent'],
     'Write a "Setting Expectations" email to send after the kickoff call. Cover: realistic timelines for results, '
     'what success looks like in month 1 vs. month 3, what we need from the client to succeed, and how to avoid common pitfalls. '
     'Confident and transparent.'),
    ('#39', 'Monthly Strategy Call Agenda (30-Minute)',
     ['Agenda', 'Monthly recurring', 'Results-focused'],
     'Write a recurring monthly strategy call agenda for an ongoing GHL agency client. Time-blocked for 30 minutes. '
     'Sections: results recap + key metrics (10 min), wins and learnings (5 min), next month\'s focus and campaign plan (10 min), '
     'open questions / client requests (5 min). Include suggested talking points and placeholder metrics for each section.'),
    ('#40', 'New Team Member Introduction Email',
     ['Email', 'Welcome + access setup', 'Client-facing'],
     'Write an email to an existing client introducing a new team member who has been added to their account. '
     'Include: the new member\'s name, role, and how they\'ll support the client, any access or onboarding steps needed from '
     'the client, and reassurance that service quality and relationships remain intact. Warm and professional. Under 200 words.'),
    ('#41', 'Emergency Escalation Protocol (Client-Facing Doc)',
     ['Document', 'Crisis response', 'GHL / ads breakage'],
     'Write a one-page client-facing Emergency Escalation Protocol for a GHL agency. Cover: what counts as an emergency '
     '(workflow breaking, ad account suspended, GHL outage, data issue), who to contact and how (WhatsApp, email, emergency line), '
     'expected response time by severity level, and what the agency will do in the first 2 hours. Clear, calm, and confidence-building.'),
    ('#42', 'Success Milestone Celebration Message',
     ['SMS + Email', 'Celebrate + upsell', 'Milestone moment'],
     'Write a celebration message (SMS version + email version) to send when a client hits a key result milestone — '
     'for example: first 10 leads booked, first $10K month, or first sold deal from GHL. '
     'Celebrate genuinely, reference the specific result (placeholder), and introduce one natural upsell opportunity '
     'tied to their next goal. Keep it human, not corporate.'),
]

for p in prompts_cat03:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 04 — AD COPY & SALES FUNNELS (#43–#54)
# ══════════════════════════════
add_cat_banner('📢', 'Prompts #43–#54', 'Ad Copy & Sales Funnels',
    'Turn clicks into paying clients. Facebook ads, landing pages, retargeting, Google Ads, YouTube scripts, and SMS blasts.', 'FFFBF0')

prompts_cat04 = [
    ('#43', 'Facebook Ad Copy — 3 Angle Variations',
     ['Facebook Ads', 'PAS + Proof + Curiosity', 'Mobile-optimized'],
     'Write 3 Facebook ad variations for a [niche] business targeting [audience]. Variation A: Problem-agitation-solution. '
     'Variation B: Social proof/results. Variation C: Curiosity/question. Include headline (40 chars max), '
     'primary text (125 chars for mobile), and CTA button suggestion.'),
    ('#44', 'Landing Page Copy — Lead Gen Funnel',
     ['Funnel', 'Under 400 words', 'Conversion-focused'],
     'Write full landing page copy for a [niche] lead generation funnel. Include: hero headline + subheadline, '
     '3 benefit bullets, social proof section (placeholder), short form intro, trust signals, and footer disclaimer. '
     'Conversion-optimized. Under 400 words total.'),
    ('#45', 'Thank You Page + Low-Ticket Upsell',
     ['Funnel', '$27-$47 upsell', 'Confirm + Curiosity'],
     'Write copy for a thank-you page after a [niche] lead opts into a free offer. Confirm signup, set expectations for '
     'next steps, and introduce a low-ticket upsell at $27-$47. Create curiosity without being pushy.'),
    ('#46', 'Paid Ad Email Funnel — 5-Email Sequence',
     ['Email', '5 emails', 'Under 200 words each'],
     'Write a 5-email sequence for leads from a paid Facebook ad for a [niche] business. '
     'Email 1: Deliver lead magnet. Email 2 (Day 2): Value + story. Email 3 (Day 3): Testimonial. '
     'Email 4 (Day 4): Offer intro. Email 5 (Day 5): Urgency close. Each under 200 words.'),
    ('#47', 'Retargeting Ad Copy — 3 Objections Handled',
     ['Retargeting', '3 angles', '2-3 sentences each'],
     'Write 3 retargeting ad scripts for people who visited a [niche] landing page but did not opt in. '
     'Objection 1: "I\'m not sure it works." Objection 2: "I don\'t have time." '
     'Objection 3: "I\'ve tried this before." 2-3 sentences each.'),
    ('#48', 'Full Sales Page — Agency Service',
     ['Sales Page', '6 sections', '5 FAQs included'],
     'Write a full sales page for a GHL agency offering "Done-For-You Lead Generation" to [niche] businesses '
     'at $[price]/month. Sections: Hero, Problem, Why us, What\'s included, Results/proof, FAQ (5 questions), '
     'and final CTA. Confident, direct, no fluff.'),
    ('#49', 'Abandoned Form Follow-Up Sequence',
     ['Email + SMS', 'Low-pressure', '1hr + next day'],
     'Write a 2-message sequence for leads who started a [niche] inquiry form but did not finish. '
     'Message 1 (email, 1 hour later): Curious, helpful. Message 2 (SMS, next day): Short, direct. '
     'Both should make completing the form feel easy and low-pressure.'),
    ('#50', 'Webinar / Workshop Invitation Email',
     ['Email', 'Under 250 words', 'RSVP CTA'],
     'Write a free online workshop invitation email for a [niche] marketing agency. Topic: [workshop title]. '
     'Include: 3 learning bullet points, who it\'s for, date/time placeholder, and a clear RSVP CTA. '
     'Build excitement without overpromising. Under 250 words.'),
    ('#51', 'Google Ads Search Copy',
     ['Google Ads', '3 headlines + 2 descriptions', 'Search intent'],
     'Write Google Search ad copy for a [niche] business. Deliver: 3 headlines (30 characters max each) targeting high-intent '
     'search keywords, and 2 descriptions (90 characters max each) that highlight a key benefit and a CTA. '
     'Focus on what someone searching "best [niche] near me" or "help with [problem]" would want to see. '
     'Include 2 suggested ad extensions (sitelinks or callouts).'),
    ('#52', 'YouTube Pre-Roll Ad Script',
     ['YouTube Ads', '15-sec + 60-sec', 'Non-skippable + skippable'],
     'Write two YouTube pre-roll ad scripts for a GHL agency targeting [niche] business owners. '
     'Version A (15 seconds, non-skippable): ultra-fast hook, one pain point, one clear CTA. '
     'Version B (60 seconds, skippable): hook in first 5 seconds to stop the skip, then problem + solution + proof + CTA. '
     'Both should sound like a real person speaking, not a corporate voice-over.'),
    ('#53', 'SMS Broadcast Offer (160 Characters)',
     ['SMS', '160 chars max', 'Cold list blast'],
     'Write a one-time SMS broadcast message to a cold or warm lead list offering a time-limited promotion. '
     'Must be under 160 characters. Include: first name personalization token, one specific offer or CTA, '
     'and a sense of urgency. Do not use spam-trigger words. Write 3 variations (different hooks) to A/B test.'),
    ('#54', 'Affiliate / JV Partner Email Pitch',
     ['Email', 'Joint venture', 'List cross-promotion'],
     'Write an outreach email to a potential joint-venture partner — someone with an audience of [niche] business owners — '
     'proposing a cross-promotion. I will promote their [product/service] to my list, and they promote my [offer] to theirs. '
     'No money changes hands. Pitch the value for THEIR audience first. Professional but personable. Under 250 words.'),
]

for p in prompts_cat04:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 05 — CLIENT RETENTION (#55–#66)
# ══════════════════════════════
add_cat_banner('📊', 'Prompts #55–#66', 'Client Retention',
    'Keep clients happy and paying month after month. Reports, QBRs, upsells, VIP notes, and re-activation.', 'F0FDF8')

prompts_cat05 = [
    ('#55', 'Monthly Report Summary Email',
     ['Email', 'Metrics placeholders', 'Under 400 words'],
     'Write a monthly performance report email for a GHL agency. Include: month overview, key metrics '
     '(leads, calls booked, revenue — placeholders), what worked, what we\'re optimizing, and next month\'s focus. '
     'Professional but readable. Under 400 words.'),
    ('#56', 'Monthly Client Check-In SMS',
     ['SMS', 'Under 160 chars', 'Personal feel'],
     'Write a casual monthly check-in SMS from an agency to a client. Feel personal, briefly reference results, '
     'ask how they feel about progress, invite a quick call if they want to chat. Under 160 characters.'),
    ('#57', 'Handling an Unhappy Client — Email Response',
     ['Email', 'Solution-focused', 'Goodwill gesture'],
     'Write a response email to a client unhappy with their 30-day results. Acknowledge frustration, take responsibility '
     'where appropriate, explain adjustments being made, give a realistic revised timeline, and offer a goodwill gesture. '
     'Calm, confident, solution-focused.'),
    ('#58', 'Upsell Email — Introduce a New Add-On Service',
     ['Email', 'Exclusive framing', 'Under 250 words'],
     'Write an email to an existing client introducing add-on service [service name]. Frame as exclusive to current clients. '
     'Explain the benefit in terms of THEIR results, not your features. Include social proof placeholder and soft CTA. Under 250 words.'),
    ('#59', 'Contract Renewal Email — 60 Days Out',
     ['Email', 'Recap wins', 'Renewal incentive'],
     'Write a proactive retention email sent 60 days before a client\'s contract ends. Recap their wins, preview what\'s coming '
     'next quarter, and make staying feel like the obvious choice. Include a limited-time renewal incentive placeholder. '
     'Warm, confident tone.'),
    ('#60', 'Case Study / Testimonial Request Email',
     ['Email', 'Easy ask', 'Under 200 words'],
     'Write an email asking a happy client for a testimonial or case study. Make it easy — offer to write it for them based '
     'on a short call or 3 quick questions. Explain how it benefits them too (free PR, exposure). Under 200 words.'),
    ('#61', 'Graceful Offboarding Email',
     ['Email', 'Leave door open', 'No guilt-tripping'],
     'Write a graceful offboarding email for a client who\'s canceling. Thank them, offer a clean handoff, ask for honest '
     'feedback (link to a short form), leave the door open for future work, and wish them well. No guilt-tripping. Professional and warm.'),
    ('#62', 'Quarterly Business Review (QBR) Agenda',
     ['Agenda', 'Formal review', 'Renewal + roadmap'],
     'Write a formal Quarterly Business Review (QBR) agenda for a GHL agency meeting with a key client. '
     'Sections: results vs. goals recap (15 min), campaign wins and learnings (10 min), Q3/Q4 roadmap + new opportunities (15 min), '
     'contract renewal / upsell discussion (10 min), open Q&A (10 min). Total: 60 minutes. '
     'Include placeholder metrics and talking points for each section.'),
    ('#63', 'Client Satisfaction Survey Email',
     ['Email', 'NPS-style', 'Google Form CTA'],
     'Write an email inviting an existing client to complete a short satisfaction survey. Keep the ask light — '
     '"3-5 minutes max." Explain that their feedback directly shapes how we serve them. Include a placeholder Google Form link. '
     'Ask 3-5 core questions in the email itself: overall satisfaction (1-10), biggest win this quarter, '
     'one thing we could do better, likelihood to recommend, and one open comment. Under 200 words.'),
    ('#64', '"We Miss You" Re-Activation for Paused Clients',
     ['Email', 'Paused 60-90 days', 'Low-pressure return'],
     'Write a re-activation email to a client who paused services 60-90 days ago. Do NOT guilt-trip or pressure. '
     'Check in warmly, share something valuable that happened since they left (new feature, result, insight — placeholders), '
     'and offer a soft re-entry option (lower tier, one-off project, or a free catch-up call). Under 250 words.'),
    ('#65', 'VIP Client Appreciation Gift Note',
     ['Note', 'Personal + warm', 'Upsell moment'],
     'Write a personal thank-you note + surprise gift/bonus announcement for a top-tier client. '
     'Reference their name, their business, and a specific win you\'ve achieved together. '
     'Announce the gift/bonus (placeholder: e.g., a free add-on month, a custom report, a resource). '
     'End with a natural transition into a conversation about their next level goal — not a hard pitch. '
     'Should feel like a letter from a partner, not a vendor.'),
    ('#66', 'Year-in-Review Email',
     ['Email', 'Annual recap', 'Wins + preview'],
     'Write an annual year-in-review email to send to all active clients at the end of the year. '
     'Structure: celebrate the year together (reference total leads, campaigns, or results — placeholders), '
     '3 standout wins from this year, 1 honest challenge and how we grew from it, and a preview of what\'s coming next year. '
     'Warm, reflective, and forward-looking. Under 400 words.'),
]

for p in prompts_cat05:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 06 — SOCIAL MEDIA (#67–#78)
# ══════════════════════════════
add_cat_banner('📱', 'Prompts #67–#78', 'Social Media Content',
    'Build authority and attract inbound leads. LinkedIn, Instagram, TikTok, Twitter threads, YouTube, and podcast scripts.', 'EFF6FF')

prompts_cat06 = [
    ('#67', 'LinkedIn Thought Leadership Post',
     ['LinkedIn', '150-250 words', 'Engagement question'],
     'Write a LinkedIn post from a GHL agency owner sharing a lesson from working with [niche] businesses. '
     'Format: hook line + 3-5 short insight paragraphs + engagement question at the end. Conversational, no corporate speak. 150-250 words.'),
    ('#68', 'Instagram Caption Pack — 5 Captions',
     ['Instagram', '5 content types', 'With hashtags'],
     'Write 5 Instagram captions for a GHL marketing agency. Mix: 1) Behind-the-scenes, 2) Client result (placeholder numbers), '
     '3) Educational tip, 4) Motivational/mindset, 5) Offer/CTA post. Each with 3-5 relevant hashtag suggestions.'),
    ('#69', 'TikTok / Reels Script — 60 Seconds',
     ['TikTok', '3-sec hook', 'Comment CTA'],
     'Write a 60-second TikTok/Reels script: "3 things [niche] businesses do that kill their leads." '
     'Hook in first 3 seconds. Fast-paced, punchy sentences. End with a CTA to follow or comment a word.'),
    ('#70', '30-Day Social Media Content Calendar',
     ['Calendar', '4 posts/week', 'Table format'],
     'Create a 30-day social media calendar for a GHL agency targeting [niche] businesses. '
     '4 posts/week (Mon, Tue, Thu, Fri). Mix: 40% educational, 20% social proof, 20% personal/brand, 20% promotional. '
     'Table format: Day, Content Type, Topic, Platform.'),
    ('#71', 'Instagram Story Poll / Quiz Sequence',
     ['Stories', '5 slides', 'Lead qualifying'],
     'Create a 5-slide Instagram Story sequence for a GHL agency using polls to engage followers and qualify leads. '
     'Each slide should move toward identifying a pain point and pointing to a solution. Include slide text and suggested poll options.'),
    ('#72', 'Weekly Email Newsletter Template',
     ['Email', 'Under 400 words', 'Value-first'],
     'Write a weekly email newsletter for a GHL agency subscriber list. Sections: 1 quick insight/tip (150 words), '
     '1 tool recommendation, 1 success story snippet (placeholder), and a PS with a soft CTA. '
     'Conversational, value-first. Under 400 words total.'),
    ('#73', 'Personal Brand Bio — 3 Platforms',
     ['Twitter/X', 'Instagram', 'LinkedIn'],
     'Write 3 personal brand bio versions for a GHL agency owner: 1) Twitter/X (160 chars), '
     '2) Instagram (150 words max), 3) LinkedIn headline + about section (300 words). '
     'Hook: [your name] helps [niche] businesses stop losing leads and start booking clients on autopilot.'),
    ('#74', 'Twitter / X Thread',
     ['Twitter/X', '7 tweets', 'GHL client result story'],
     'Write a 7-tweet thread titled: "How I [achieved specific result] for a [niche] client using GHL." '
     'Tweet 1: Hook with the result. Tweet 2: The situation before (pain). Tweets 3-5: The 3 key things we did (with GHL). '
     'Tweet 6: The outcome + metrics (placeholders). Tweet 7: CTA — follow for more / DM for help. '
     'Each tweet max 280 characters. Punchy, conversational, no fluff.'),
    ('#75', 'Facebook Group Value Post',
     ['Facebook Group', 'No direct pitch', 'Authority builder'],
     'Write a value post for a Facebook group relevant to [niche] business owners or agency owners. '
     'Goal: establish authority without directly pitching anything. Share a genuine insight, tip, or mistake to avoid. '
     'End with an open-ended question to drive comments. 150-300 words. Should read like a helpful group member, not an advertiser.'),
    ('#76', 'Pinterest Pin Description Pack',
     ['Pinterest', '5 pin descriptions', 'Agency lead gen'],
     'Write 5 Pinterest pin descriptions for a GHL agency. Topics: 1) Lead generation tips for [niche], '
     '2) GHL automation explainer, 3) "How to get more clients" for [niche], 4) Agency owner mindset/lifestyle, '
     '5) Digital product or lead magnet promo. Each description: 100-200 characters, keyword-rich, includes a CTA and relevant hashtags.'),
    ('#77', 'YouTube Video Script Outline',
     ['YouTube', '10-minute video', 'Educational GHL explainer'],
     'Write a detailed script outline for a 10-minute YouTube video titled "How GHL (GoHighLevel) Actually Works — '
     'The [Niche] Business Owner\'s Guide." Structure: Hook (60 sec) — why you should care, Section 1 (3 min) — what GHL is '
     'and what problem it solves, Section 2 (3 min) — 3 key features most [niche] businesses don\'t use but should, '
     'Section 3 (2 min) — real results example (placeholder), CTA (60 sec) — subscribe + free resource offer. '
     'Include talking point bullets for each section.'),
    ('#78', 'Podcast Episode Intro Script',
     ['Podcast', '60-second intro', 'Agency owner host'],
     'Write a 60-second podcast episode intro script for an agency owner hosting their own podcast. '
     'Include: welcome line with episode number and show name, brief tease of today\'s topic and guest (placeholders), '
     'one-line value proposition for the listener, and a "let\'s get into it" transition. '
     'Energetic and confident. Should work as both a spoken intro and a teaser clip.'),
]

for p in prompts_cat06:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 07 — SALES & CLOSING SCRIPTS (#79–#90)
# ══════════════════════════════
add_cat_banner('💰', 'Prompts #79–#90', 'Sales & Closing Scripts',
    'Close more deals with confidence. Discovery calls, objection handlers, proposals, contracts, and post-signing welcome.', 'FFFFF0')

prompts_cat07 = [
    ('#79', 'Discovery Call Opening Script',
     ['Call script', 'First 5 minutes', 'Rapport + agenda'],
     'Write the first 5 minutes of a discovery call script for a GHL agency. Include: '
     '1) Warm rapport opener (2 questions that feel human, not scripted), '
     '2) Agenda-setting ("Here\'s what I\'d like to cover today — sound good?"), '
     '3) Permission frame ("I\'ll ask you some questions about your business — be as honest as you can, there\'s no wrong answer"). '
     'Goal: make the prospect feel at ease and in control while you steer the conversation.'),
    ('#80', 'Pain Excavation Questions',
     ['Discovery', '10 questions', 'Budget + urgency'],
     'Write 10 deep discovery questions to uncover a prospect\'s real pain, budget, and urgency during a sales call. '
     'Questions should feel like a curious conversation, not an interrogation. '
     'Cover: current situation, what they\'ve tried, why it hasn\'t worked, cost of the problem (emotional + financial), '
     'urgency/timeline, decision-making process, and budget. Include a brief note on what each question is designed to uncover.'),
    ('#81', 'Objection Handler — "I Need to Talk to My Partner"',
     ['Objection', 'Calm + confident', 'Keep call moving'],
     'Write a calm and confident response to the objection "I need to talk to my partner/spouse/business partner first." '
     'Do NOT pressure or dismiss. Instead: validate the objection, ask a clarifying question to understand if partner '
     'is a real decision-maker or a stall, and offer a path forward (schedule a second call with the partner, or ask '
     '"Is there anything stopping you personally from moving forward?"). Include both a script and a brief coaching note.'),
    ('#82', 'Objection Handler — "I\'m Already Working With Someone"',
     ['Objection', 'No trash-talking', 'Differentiate'],
     'Write a confident, respectful response to "I\'m already working with a marketing agency." '
     'Do NOT trash-talk the competitor. Instead: acknowledge their current relationship, ask one curious question '
     '("What results are you seeing so far?"), plant a seed of comparison without making it a competition, '
     'and offer a "second opinion" or audit as a no-risk next step. Include script + coaching note.'),
    ('#83', 'Objection Handler — "Let Me Do More Research"',
     ['Objection', 'Urgency without pressure', 'Keep them engaged'],
     'Write a response to "Let me do some more research first." '
     'This is often a politeness stall. Your goal: stay engaged without being pushy. '
     'Validate the desire to research, ask what specifically they want to research (narrows the objection), '
     'offer to send a resource that answers common questions, and suggest a follow-up call to compare notes. '
     'Include script + one sentence of honest coaching advice.'),
    ('#84', 'Offer Presentation Script',
     ['Call script', 'Package walkthrough', 'Price + outcome'],
     'Write a 3-minute offer presentation script for a GHL agency selling a [package name] at $[price]/month. '
     'Structure: transition from discovery ("Based on what you told me..."), '
     'describe the transformation (not features — outcomes), walk through what\'s included in 3-5 bullet points, '
     'state the price confidently without apologizing, and pause for reaction. '
     'Do not hedge, over-explain, or fill silence with discounts.'),
    ('#85', 'Close the Deal SMS',
     ['SMS', 'Post verbal yes', 'Lock in commitment'],
     'Write an SMS to send within 5 minutes of getting a verbal yes on a sales call. '
     'Goal: lock in the commitment before they go home, talk to their partner, or get cold feet. '
     'Include: congratulations (brief), next step they need to take (link to payment/contract — placeholder), '
     'a deadline ("link expires in 24 hours" or similar). Under 160 characters. Warm but clear.'),
    ('#86', 'Proposal Email Template',
     ['Email', 'Formal proposal', 'Scope + price + timeline'],
     'Write a formal proposal email to send after a discovery call. Include: '
     'subject line options (3 variations), opening recap of their situation and goals, '
     'proposed solution summary (what\'s included — placeholders), investment (price), '
     'expected timeline and first 30-day milestones, next steps to get started, '
     'and an expiry date on the proposal. Professional, confident, and easy to skim. Under 500 words.'),
    ('#87', 'Contract / Agreement Cover Email',
     ['Email', 'Contract delivery', 'Build excitement'],
     'Write the email that accompanies a contract or service agreement. Include: '
     'congratulations on their decision, brief overview of what they are signing, '
     'how to sign (DocuSign / link — placeholder), what happens immediately after they sign, '
     'and a note of genuine excitement about working together. '
     'Should make signing feel like the beginning of something great, not a legal obligation. Under 200 words.'),
    ('#88', 'Post-Signing Welcome Sequence (3 Messages)',
     ['SMS + Email + Loom', '3-part', 'First 24 hours'],
     'Write a 3-message welcome sequence to send within 24 hours of a client signing a contract. '
     'Message 1 (SMS, send immediately): Short celebration text — welcome them, tell them what happens next in 1-2 sentences. '
     'Message 2 (Email, send within 1 hour): Full welcome email with onboarding next steps, what to expect in week 1, '
     'and who their main contact is. '
     'Message 3 (Loom script, send day 1): 2-minute personal Loom video script — agency owner face to camera, '
     'say hi, walk them through what you\'re building for them, build excitement and trust.'),
    ('#89', 'Lost Deal Follow-Up',
     ['Email', '30 days later', 'Low-pressure re-open'],
     'Write a follow-up email to send 30 days after a prospect said no. '
     'No guilt. No "just checking in." Instead: '
     'share something of genuine value (an insight, a result, a new offer — placeholders), '
     'acknowledge that the timing may not have been right before, '
     'and invite them back to a conversation with zero pressure. '
     'Should feel like a thoughtful reconnection, not a desperation move. Under 200 words.'),
    ('#90', 'Price Anchor Script',
     ['Call script', 'Price anchoring', 'High-to-low framing'],
     'Write a price anchoring script to use before revealing the actual price of your GHL agency package. '
     'Structure: introduce the high-end option first (what full custom work would cost — placeholder), '
     'then contrast with your offer and frame it as the smarter, faster path to the same result. '
     'Do not lie or use fake numbers. Use anchoring to make your real price feel like a relief, not a shock. '
     'Include 2-3 natural transition phrases you can practice.'),
]

for p in prompts_cat07:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# CATEGORY 08 — EMAIL MARKETING (#91–#100)
# ══════════════════════════════
add_cat_banner('📧', 'Prompts #91–#100', 'Email Marketing',
    'Build a list that buys. Welcome sequences, story emails, launch funnels, curiosity gaps, and the CEO letter.', 'F5FFF5')

prompts_cat08 = [
    ('#91', 'Welcome Email Sequence for Newsletter',
     ['Email', '3-part welcome', 'New subscriber'],
     'Write a 3-email welcome sequence for new subscribers to a GHL agency\'s newsletter. '
     'Email 1 (immediate): Warm welcome, deliver the lead magnet, set expectations for what they\'ll receive, one quick win they can take now. '
     'Email 2 (Day 2): Share your story briefly — who you are, why you started the agency, what you believe about marketing. '
     'Email 3 (Day 4): Introduce your signature offer or free resource. Soft pitch — frame as a natural next step, not a sales email. '
     'All emails: conversational, under 300 words each, no corporate speak.'),
    ('#92', 'Broadcast Email — Trending Industry News Hook',
     ['Email', 'News hook', 'Insight + CTA'],
     'Write a broadcast email using a current or recent marketing/industry trend as the hook. '
     '[Trend placeholder: e.g., AI ads, Google algorithm update, new SMS regulations]. '
     'Open with the news in 1-2 sentences, pivot to your take/insight (what this means for [niche] businesses), '
     'deliver 2-3 actionable takeaways, and close with a soft CTA (reply, read more, book a call). '
     'Under 350 words. Feel like a smart industry insider, not a content aggregator.'),
    ('#93', 'Story Email — Personal Failure / Lesson',
     ['Email', 'Vulnerability-based', 'Soft pitch ending'],
     'Write a story email that opens with a personal failure or embarrassing mistake from running a GHL agency. '
     '(Placeholder: e.g., lost a client, launched a campaign that flopped, made a rookie mistake.) '
     'Tell the story in first person — what happened, how it felt, and what you learned. '
     'Transition naturally into how that lesson shapes how you help clients today. '
     'End with a soft pitch or CTA. Under 400 words. Be honest — people buy from people they trust.'),
    ('#94', 'Listicle Email — 5 Things Niche Owners Wish They Knew',
     ['Email', 'Educational', 'Shareable'],
     'Write an educational listicle email titled "5 Things [Niche] Owners Wish They Knew Before Hiring a Marketing Agency." '
     'Each item should be a genuine insight — not filler. Brief explanation under each (2-4 sentences). '
     'Frame them as lessons from real client conversations (placeholder attribution). '
     'End with a CTA: forward to someone who needs this, or book a call to discuss their situation. '
     'Under 500 words. Should be so good they want to share it.'),
    ('#95', 'The Curiosity Gap Email',
     ['Email', 'Open loop hook', 'Click-driving'],
     'Write an email that uses a curiosity gap to drive clicks or replies. '
     'Subject line: something like "I almost did not share this..." or "This felt too good to keep to myself." '
     'Opening: establish a small mystery or intriguing discovery. '
     'Body: tease the insight without fully revealing it — give enough to be interesting, withhold enough to create desire. '
     'CTA: click the link / reply / book a call to get the full picture. '
     'Under 250 words. Include 3 subject line options and 2 CTA variations.'),
    ('#96', 'Before / After Transformation Email',
     ['Email', 'Client story', 'Results + CTA'],
     'Write a before/after client transformation email for a GHL agency. '
     'Structure: Before — describe the client\'s situation when they came to you (pain, frustration, plateau — placeholders), '
     'The change — what you did together and why it worked (3-4 key actions), '
     'After — specific results achieved (metrics placeholders), '
     'Bridge — connect their story to the reader\'s situation ("If this sounds like you..."), '
     'CTA — discovery call link or reply to start a conversation. '
     'Under 400 words. Emotional storytelling + proof = trust.'),
    ('#97', 'Seasonal / Holiday Email',
     ['Email', 'Holiday angle', 'Relevant CTA'],
     'Write a holiday or seasonal email for a GHL agency. '
     '[Holiday placeholder: e.g., New Year, Black Friday, Valentine\'s Day, Summer, Back to School]. '
     'Do NOT send a generic "Happy [Holiday]" email. Instead: find a creative angle that connects the holiday '
     'to a relevant business insight or offer for [niche] clients. '
     'Example: New Year = "Your leads don\'t care that it\'s January 1st — but here\'s what to reset." '
     'Include a CTA that feels timely. Under 300 words.'),
    ('#98', 'Re-Permission Email (GDPR / List Clean)',
     ['Email', 'List hygiene', 'Re-engage cold subs'],
     'Write a re-permission email to send to subscribers who have not opened or clicked in 90+ days. '
     'Two goals: 1) legally re-confirm they want to stay on the list (GDPR/CAN-SPAM best practice), '
     '2) reactivate them as leads by giving them a reason to click. '
     'Be honest and direct: "You have not heard from me in a while — fair enough. If you want to stay on this list, click below." '
     'Include a clear yes/stay button CTA and a graceful unsubscribe option. Under 200 words. '
     'This email has the highest open rate of any in your list — make it count.'),
    ('#99', 'Email Sequence for Course / Product Launch',
     ['Email', '5-email launch sequence', 'Teaser to last chance'],
     'Write a 5-email product launch sequence for a digital product, course, or GHL snapshot being sold by an agency. '
     'Email 1 (Teaser, 3 days before): Build curiosity — something is coming. '
     'Email 2 (Open Cart, Day 1): Announce the offer — what it is, who it\'s for, price. '
     'Email 3 (Value/Proof, Day 2): A mini case study or the #1 benefit in more depth. '
     'Email 4 (Urgency, Day 3): Countdown — closing soon, why now. '
     'Email 5 (Last Chance, final day): Deadline email — closes tonight, final decision. '
     'Each email under 300 words. Confident and honest — no fake scarcity.'),
    ('#100', 'The Letter from the CEO',
     ['Email', 'Personal + direct', 'Deep trust builder'],
     'Write a "Letter from the CEO / Founder" style email from an agency owner to their entire list. '
     'Use this for major announcements, pivots, or moments when you need to rebuild or deepen trust. '
     'It should be raw, personal, and direct — not polished marketing copy. '
     '[Occasion placeholder: e.g., big change in the business, a mistake you made publicly, a new direction, '
     'a milestone you want to celebrate with them]. '
     'Structure: tell them what happened honestly, what it means for them, and where things go from here. '
     'No CTA required — the goal is trust. Under 500 words. This is the email they forward to their team.'),
]

for p in prompts_cat08:
    add_prompt_card(*p)

add_page_break()


# ══════════════════════════════
# BONUS PAGE
# ══════════════════════════════
add_paragraph('EXCLUSIVE EXTRAS', bold=True, size=9, color=PINK, space_before=0, space_after=4)
add_h1('Bonus: Make Every Prompt Work Harder')

bonuses = [
    ('Universal Persona Primer',
     'Add this before ANY prompt:\n'
     '"You are an expert GHL marketing strategist for [niche] businesses. '
     'Write in a conversational, direct tone — no corporate language, no filler, '
     'no AI-sounding phrases. Every sentence earns its place."'),
    ('Iteration Commands',
     'After any output, follow up with:\n'
     '→ "Make it 30% shorter"\n'
     '→ "Add more urgency"\n'
     '→ "Write 3 A/B variations"\n'
     '→ "Sound more casual"\n'
     '→ "Rewrite the subject line 5 ways"\n'
     '→ "Add a P.S. line"'),
    ('Best AI Tools for Each Use Case',
     'ChatGPT GPT-4o — Best for all-around copywriting and social media\n'
     'Claude Sonnet — Best for SOPs, documents, and long-form emails\n'
     'Gemini 1.5 Pro — Best for research-heavy prompts and market analysis'),
    ('Quick Start (15 Minutes)',
     'Step 1 → Run Prompt #1 (Cold DM for your niche)\n'
     'Step 2 → Run Prompt #17 (Speed-to-Lead SMS)\n'
     'Step 3 → Run Prompt #31 (Welcome Email)\n'
     'Three working GHL assets — done in 15 minutes.'),
    ('Sales Call Prep Combo',
     'Run Prompt #79 (Discovery Opening) + Prompt #80 (Pain Questions) + Prompt #84 (Offer Presentation)\n'
     'before your next discovery call. Walk in with a complete call framework ready to go.'),
]

for title, text in bonuses:
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(6)
    p.paragraph_format.space_after  = Pt(2)
    r1 = p.add_run(title + '\n')
    r1.bold = True
    r1.font.size = Pt(12)
    r1.font.color.rgb = DARK
    r2 = p.add_run(text)
    r2.font.size = Pt(10)
    r2.font.color.rgb = BODY

add_paragraph('', space_after=8)
add_tip_box(
    'The Swipe File Strategy — Your Unfair Advantage',
    'Every time a prompt output performs — a DM gets a reply, an email gets opened, a hook stops the scroll — save it. '
    'Create a Google Doc called "Agency Swipe File." After 90 days you\'ll have a battle-tested library of proven copy '
    'you can remix and reuse forever. 100 prompts becomes 1,000 assets.'
)

# ══════════════════════════════
# BACK PAGE
# ══════════════════════════════
add_page_break()
add_paragraph('', space_before=60, space_after=0)
add_paragraph('You\'re All Set', bold=True, size=10, color=PINK,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=16)
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p.paragraph_format.space_before = Pt(0)
p.paragraph_format.space_after  = Pt(12)
r1 = p.add_run('100 Prompts Away From a\n')
r1.bold = True
r1.font.size = Pt(28)
r1.font.color.rgb = DARK
r2 = p.add_run('Fully Automated Agency')
r2.bold = True
r2.font.size = Pt(28)
r2.font.color.rgb = PINK

add_paragraph(
    'Stop writing from scratch. Fill in the blanks, run the prompts,\nand watch your GHL workflows do the heavy lifting.',
    size=13, color=BODY, align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=24
)
add_paragraph('Start With Prompt #1', bold=True, size=14, color=PINK,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=40)
add_paragraph('Built by MelAI  HireAI  2026 Edition', bold=True, size=11, color=GRAY,
              align=WD_ALIGN_PARAGRAPH.CENTER, space_before=0, space_after=0)

# ══════════════════════════════
# SAVE
# ══════════════════════════════
out = '/home/melai/Documents/ghl-prompt-pack/GHL-Agency-100-Prompts.docx'
doc.save(out)
print(f'Saved: {out}')

