#!/usr/bin/env python3
"""
WhatsApp Pitch Generator - Hinglish Edition with Religious Greetings
Saves personalized pitch files inside each client's website folder
"""

import json
import os

# Religious greetings pool for variety
RELIGIOUS_GREETINGS = [
    "Ram Ram bhai sahab 🙏",
    "Jai Shree Ram! 🚩",
    "Radhe Radhe! 🙏",
    "Jai Mata Di! 🙏",
    "Jai Bajrangbali! 🚩",
    "Ram Ram! 🙏",
    "Jai Shri Krishna! 🙏",
    "Jai Bhavani! 🚩",
]

CLOSING_BLESSINGS = [
    "Bhagwan aapko aur tarakki de 🙏",
    "Ram ji aapki har manokamna poori karein 🙏",
    "Mata Rani aapko khush rakhein 🙏",
    "Aap ka din mangalmay ho 🙏",
    "Aap ki seva mein hamesha, dhanyawad 🙏",
]

def get_first_name(business_name):
    """Extract a respectful name from business name"""
    name = business_name.strip()
    
    # Common patterns
    if 'bhai' in name.lower() or 'bhaiya' in name.lower():
        return "Bhaiya"
    
    # Remove common suffixes
    for suffix in ['Photography', 'Photo Studio', 'Digital Studio', 'Studio', 'Films', 'Digital', 'Photo', 'Photos', 'Video']:
        name = name.replace(suffix, '')
    
    # Get first meaningful word
    words = name.strip().split()
    if not words:
        return "Bhai Sahab"
    
    first = words[0].strip()
    
    # Clean up
    first = first.replace('&', '').replace('(', '').replace(')', '').replace(',', '').replace('.', '')
    
    # Don't use generic names
    generic = ['A', 'The', 'New', 'Old', 'Best', 'Top', 'First', 'Super', 'Good', 'Nice', 'My']
    if first in generic and len(words) > 1:
        first = words[1].strip().replace('&', '').replace('(', '').replace(')', '').replace(',', '').replace('.', '')
    
    if not first or first in generic:
        return "Bhai Sahab"
    
    return first

def get_area_name(address):
    """Extract area from address"""
    if not address:
        return "Chhatrapati Sambhajinagar"
    
    address = str(address)
    # Known areas in Aurangabad
    areas = ['Cidco', 'Garkheda', 'Nirala Bazar', 'Hudco', 'Mondha', 'Samarth Nagar', 'New Usmanpura', 
             'Sindhi Colony', 'Kanchanwadi', 'Satara', 'Paithan Gate', 'Shahgunj', 'Aurangpura', 
             'Khokadpura', 'Jalna Road', 'Beed Bypass', 'Mukundwadi', 'Deolai', 'Waluj']
    
    address_lower = address.lower()
    for area in areas:
        if area.lower() in address_lower:
            return area
    
    # Fallback: extract from address parts
    parts = address.split(',')
    if len(parts) >= 2:
        for part in reversed(parts):
            p = part.strip()
            if len(p) > 3 and not p.isdigit():
                return p
    
    return "Chhatrapati Sambhajinagar"

def get_business_type(name, category):
    """Determine business type for specialized messaging"""
    name_lower = name.lower()
    category_lower = category.lower() if category else ''
    
    if 'newborn' in name_lower or 'kids' in name_lower or 'maternity' in name_lower or 'baby' in name_lower or 'blossom' in name_lower or 'rudraksha' in name_lower or 'mama' in name_lower:
        return 'newborn'
    elif 'wedding' in name_lower or 'vivah' in name_lower or 'shaadi' in name_lower or 'marriage' in name_lower or 'garuda' in name_lower:
        return 'wedding'
    elif 'film' in name_lower or 'cinema' in name_lower or 'video' in name_lower or 'films' in name_lower:
        return 'film'
    elif 'rental' in name_lower or 'props' in name_lower:
        return 'rental'
    elif 'print' in name_lower or 'xerox' in name_lower or 'lab' in name_lower:
        return 'print'
    elif 'event' in name_lower or 'party' in name_lower or 'birthday' in name_lower:
        return 'event'
    elif name_lower.endswith('art') or 'art' in name_lower:
        return 'artistic'
    else:
        return 'general'

def generate_pitch(client, index):
    """Generate personalized Hinglish WhatsApp pitch file"""
    
    name = get_first_name(client['name'])
    area = get_area_name(client['address'])
    biz_type = get_business_type(client['name'], client['category'])
    reviews = client['review_count']
    rating = client['rating']
    phone = client['phone']
    full_name = client['name']
    
    # Pick religious greeting (cycle through list)
    greeting = RELIGIOUS_GREETINGS[index % len(RELIGIOUS_GREETINGS)]
    blessing = CLOSING_BLESSINGS[index % len(CLOSING_BLESSINGS)]
    
    # Business-specific hooks
    if biz_type == 'newborn':
        hook1 = "Bachon aur newborn ki photography mein aapka naam aata hai"
        hook2 = "New parents aapko dhundhte hain, lekin aap milte nahi online"
        hook3 = "Har maa-baap apne bache ki pehli photo ke liye research karta hai"
        service_line = "newborn aur kids photography"
        benefit = "aur bache ke photoshoot ke bookings"
        
    elif biz_type == 'wedding':
        hook1 = "Shaadi ki photography mein aapka naam aata hai"
        hook2 = " Dulha-dulhan aapko dhundhte hain, lekin aap milte nahi jab sabse zaroorat hoti hai"
        hook3 = "Shaadi ke season mein log raat bhar photographer dhundhte hain"
        service_line = "shaadi ki photography"
        benefit = "aur shaadi ke bookings"
        
    elif biz_type == 'film':
        hook1 = "Video aur films mein aapka kaam lajawab hai"
        hook2 = "Aapke films bahut acche hain, lekin log dekh nahi paate online"
        hook3 = "Cinematic videos ke liye log premium pay karte hain, bas dikhna chahiye sahi jagah"
        service_line = "cinematic video aur films"
        benefit = "aur video projects"
        
    elif biz_type == 'rental':
        hook1 = "Props aur rental items mein aapka setup best hai"
        hook2 = "Photographers aapke paas aana chahte hain, lekin aapko online nahi dhundh paate"
        hook3 = "Har photographer ke paas props chahiye hota hai, bas pata hona chahiye kahan milega"
        service_line = "props rental"
        benefit = "aur rental bookings"
        
    elif biz_type == 'print':
        hook1 = "Photo print aur digital work mein aap experienced hain"
        hook2 = "Log aapke paas aana chahte hain print ke liye, lekin online address nahi milta"
        hook3 = "Jab kisi ko urgent photo print chahiye, toh sabse pehle Google karte hain"
        service_line = "photo print aur digital services"
        benefit = "aur walk-in customers"
        
    else:
        hook1 = "Photography mein aapka kaam bahut badhiya hai"
        hook2 = "Aapke pass itne acche reviews hain, lekin online log dekh nahi paate"
        hook3 = "Roz hazaron log photographer dhundhte hain Google pe, aur aap wahan dikhte hi nahi"
        service_line = "photography"
        benefit = "aur naye customers"
        
    # Generate the pitch text
    pitch = f"""{'='*70}
WHATSAPP PITCH - {full_name.upper()}
Area: {area} | Reviews: {reviews} | Rating: {rating}★
{'='*70}

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 MESSAGE 1 - Pehla Message (Day 1 - Subah 10-11 baje bheje)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

{greeting}

{name} ji, maine aapka studio Google pe dekha - {reviews} reviews aur {rating}★ rating! {hook1}. {area} mein aapka naam aata hai sabse pehle 📸🙏

Bas ek chhota sa sawal hai - kya aapke paas apna website hai jahan customer aapka portfolio dekh ke seedha booking kar sake?

Main aap jaise photographers ko {benefit} dilata hoon bina koi ad spend kiye. 2 minute ki baat hai, ek baar baat karein?

---

PSYCHOLOGY IS MESSAGE MEIN:
✅ Ram Ram se shuruaat = Bhagwadharma + trust instant
✅ {reviews} reviews mention = Social proof (ego boost)
✅ "{area} mein naam aata hai" = Local pride
✅ "2 minute ki baat" = Kam time commitment = easy yes
✅ "bina koi ad spend" = Paise bachane wala angle


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 MESSAGE 2 - Dusra Message (Day 2 - Agar reply nahi aaya toh)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

{name} ji, koi jor-jabardasti nahi hai 🙏

Bas itna batana tha - maine aapke studio ka ek sample website banaya hai. Aapke asli Google reviews, asli address, asli phone number - sab kuch aapka hai, bas online dikh raha hai.

{hook2}.

{hook3}. Website ho toh wahi pe milte ho, booking wahi pe hoti hai.

Ek baar dekh lenge? Free hai, koi paise nahi, bus aapka feedback chahiye bas 😊

---

PSYCHOLOGY IS MESSAGE MEIN:
✅ "Koi jor-jabardasti nahi" = Pressure hatao, trust badhao
✅ "Asli Google reviews" = Real data use = personal feel
✅ "Free hai" = Reciprocity trigger (muft ka maal = reply aata hai)
✅ "Bas feedback chahiye" = Ego massage (unki raai matter karti hai)
✅ Curiosity gap = link dekhne ki ichha hoti hai


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 MESSAGE 3 - Aakhri Message (Day 4 - Last follow-up)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

{name} ji, yeh aakhri message hai, aage nahi bhejunga promise 🙏

Bas ek baat kahun - aapka kaam toh top-class hai, {reviews} reviews sach bol rahe hain. Lekin {area} mein kuch competitors ne website banwa li hai, aur ab woh aapke customers le ja rahe hain jo aap deserve karte ho.

Aap offline mein already king hain. Online bhi raja ban jaaiye.

Ek baar dekh lenge kaise dikhoge? Agar nahi pasand aaya toh bas "nahi" bol dena, koi baat nahi 😊

{blessing}

---

PSYCHOLOGY IS MESSAGE MEIN:
✅ "Yeh aakhri message hai" = Relief + guilt (ab reply nahi kiya toh bura lagega)
✅ "Competitors customer le ja rahe hain" = Loss aversion + jealousy
✅ "Aap deserve karte ho" = Validation of their excellence
✅ "Offline king, online raja" = Power positioning
✅ "Bas 'nahi' bol dena" = Easy exit = actually increases reply rate
✅ Religious blessing at end = Emotional connection


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 REPLY TEMPLATES - Jab Client Jawab De
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

A) Agar bole "HAAN / BHEJO / DEKHO":
------------------------------------
Arre wah! {name} ji, aap toh turant reply diye! 🙏

Yeh raha aapka website ka link: [LINK]

Aapke asli reviews, aapka asli address, aapka asli phone - sab kuch real hai. Bas maine online la diya hai.

Dekho aur sach sach batana - kya aapka studio aise dikh ke customer ko attract karega?

Agar haan - toh baat karte hain aage.
Agar nahi - toh bas "nahi pasand" likh ke bhejo, aur kuch nahi 😊

B) Agar bole "KITNE RUPEYE LAGENGE / RATE KYA HAI":
--------------------------------------------------
Arre {name} ji, paise ki baat toh baad mein! 🙏

Pehle aap preview dekh lo. Agar aapko pasand nahi aaya, toh paise ki baat karne ka koi matlab hi nahi hai na?

Agar pasand aaya, toh main batata hoon - shuru hone se leke complete hone tak, poora package bahut reasonable hai. Ek baar website dekh lo, phir rate discuss karte hain. Fair?

C) Agar bole "FACEBOOK/INSTAGRAM TOH HAI MERE PAAS":
---------------------------------------------------
Haan {name} ji, Facebook aur Instagram bahut zaroori hain! Social media se log aapko dekhte hain.

Lekin jab koi Google pe "best photographer in {area}" search karta hai, toh kya aap dikhte ho? Nahi na?

Facebook = log aapko jaante hain toh dekhte hain.
Website = jo nahi jaante, woh bhi dhundh ke aate hain.

Dono chahiye. Main bas website ki baat kar raha hoon. Ek baar dekh lo preview?

D) Agar bole "NAHI CHAHIYE / NO THANKS / INTEREST NAHI":
---------------------------------------------------------
Koi baat nahi {name} ji! Aapka faisla, aapki marzi 🙏

Bas ek baat - maine aapka preview already banaya hua hai. Link rakh lo, kabhi man kare toh dekh lena:
[LINK]

Aur agar kabhi kisi aur photographer ko zaroorat ho website ki, toh mera naam zaroor batana 😊

{blessing}
Aapka din mangalmay ho 🙏

E) Agar bole "BAAD MEIN BATAYENGE / SOCH KE BATATA HOO":
--------------------------------------------------------
Haan bilkul {name} ji, soch ke faisla karo. Koi jaldi nahi hai 🙏

Bas ek chhota sa request hai - jo log roz photographer dhundhte hain Google pe, woh aap tak kab pahunchenge yeh sochna.

Har din website nahi hone ka matlab hai - kuch customers aapke competitors ke paas chale jaate hain jo online dikhte hain.

{blessing}
Jab bhi man kare, message kar dena. Main hamesha available hoon 🙏


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 BONUS: VOICE NOTE SCRIPT (22 second max)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

"Ram Ram {name} ji! {name} ji main aapke liye ek chhota sa kaam kiya hai. Aapke studio ka ek website preview banaya hai. Aapke asli reviews, aapka asli address - sab kuch hai usme. Ek baar dekh lijiye sirf 30 second mein, agar accha lage toh baat karte hain. Agar nahi lage toh keh dena delete kar dunga. Promise! Dhanyawad!"

WHY VOICE NOTE WORKS:
✅ Aapki awaaz = Real human = Trust 10x badhta hai
✅ 22 second = Lambi nahi, chhoti si = Sunnenge zaroor
✅ "Delete kar dunga" = No pressure = Actually sunte hain


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 TIMING GUIDE - Kab Bhejna Hai
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Message 1: Day 1,  Subah 10:00 - 11:30 AM
Message 2: Day 2,  Dopahar 2:00 - 4:00 PM  
Message 3: Day 4,  Subah 10:00 - 11:00 AM

Kyun yeh time?
✅ Subah 10-11 AM = Fresh mood, positive energy
✅ Dopahar 2-4 PM = Lunch ke baad phone check karte hain sab
✅ Raat mein mat bhejo (9 PM ke baad) = Beizzati hoti hai
✅ Sunday avoid karo ya morning mein bhejo


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📱 PSYCHOLOGY CHEAT SHEET
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. RAM RAM se shuruwat = Instant trust, Indian cultural connection
2. Unka naam leke bolo = Personal feel, robotic nahi lagega
3. Unke reviews ginke dikhawo = Ego boost, proud feel hoga
4. Area ka naam lo = Local connect, "yeh aadmi jaanta hai mujhe"
5. "Bina koi ad spend" = Paise bachane wala angle = Middle-class trigger
6. "2 minute ki baat" = Time kaam = Easy commitment
7. "Free preview" = Reciprocity = Muft mein diya = Reply karna banta hai
8. Competitors ka naam = Jealousy + Loss aversion
9. "Aakhri message" = Guilt + FOMO
10. Religious blessing at end = Emotional bond
11. HINGLISH = Natural, ghar ki baat jaisa, formal English se zyada reply aata hai
12. Always end with QUESTION = Reply karna padta hai sochne pe


{'='*70}
Generated by Patil Web Solutions
https://patilwebsolutions.com/
{full_name} | {area} | Phone: +91 {phone}
{'='*70}
"""
    
    return pitch

def main():
    # Load client data
    with open('/mnt/okcomputer/output/clients_data.json', 'r', encoding='utf-8') as f:
        clients = json.load(f)
    
    print("="*70)
    print("🚩 WHATSAPP PITCH GENERATOR - HINGLISH EDITION 🚩")
    print("Using Religious Greetings + Human Psychology")
    print("="*70)
    
    generated = 0
    skipped = 0
    
    for i, client in enumerate(clients):
        # Determine folder name
        folder = client['name'].lower()
        folder = folder.replace(' ', '-').replace('&', '').replace('|', '').replace('(', '').replace(')', '').replace('.', '').replace(',', '').replace('\\', '').replace('/', '')[:50]
        folder = folder.strip('-')
        
        # Find matching output directory
        output_dir = f"/mnt/okcomputer/output/{folder}"
        
        # If exact match not found, try to find similar
        if not os.path.exists(output_dir):
            # Check for similar folders
            base = os.path.basename(folder)
            for d in os.listdir('/mnt/okcomputer/output/'):
                if d.startswith(base[:10]) and os.path.isdir(f'/mnt/okcomputer/output/{d}'):
                    output_dir = f"/mnt/okcomputer/output/{d}"
                    break
        
        if not os.path.exists(output_dir):
            print(f"⚠ Skipped (folder not found): {client['name'][:40]}")
            skipped += 1
            continue
        
        # Generate pitch
        pitch = generate_pitch(client, i)
        
        # Save to file
        file_path = os.path.join(output_dir, "whatsapp-pitch.txt")
        with open(file_path, 'w', encoding='utf-8') as f:
            f.write(pitch)
        
        print(f"✅ Created: {client['name'][:45]:45s} → whatsapp-pitch.txt")
        generated += 1
    
    print("\n" + "="*70)
    print(f"🎉 COMPLETE! Generated: {generated} | Skipped: {skipped} | Total: {len(clients)}")
    print("="*70)

if __name__ == "__main__":
    main()
