#!/usr/bin/env python3
"""
LinkedIn Connection Matcher - Find warm intro opportunities
"""
import csv
from difflib import SequenceMatcher

def similarity(a, b):
    """Calculate similarity between two strings"""
    return SequenceMatcher(None, a.lower(), b.lower()).ratio()

def find_matches(linkedin_connections_file, facilities_file):
    """
    Match LinkedIn connections to target facilities
    Returns: List of warm intro opportunities
    """
    
    # Load LinkedIn connections
    connections = []
    with open(linkedin_connections_file, 'r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            connections.append({
                'name': row.get('First Name', '') + ' ' + row.get('Last Name', ''),
                'company': row.get('Company', ''),
                'position': row.get('Position', ''),
                'email': row.get('Email Address', ''),
                'connected_on': row.get('Connected On', '')
            })
    
    # Load target facilities
    facilities = []
    with open(facilities_file, 'r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            facilities.append({
                'company': row.get('Company', ''),
                'region': row.get('Region', ''),
                'fruit': row.get('Primary Fruit', ''),
                'score': row.get('Score', '0')
            })
    
    # Find matches
    matches = []
    
    for facility in facilities:
        facility_name = facility['company']
        
        # Check each connection
        for conn in connections:
            conn_company = conn['company']
            
            # Direct match or high similarity
            if conn_company and facility_name:
                sim = similarity(conn_company, facility_name)
                
                if sim > 0.7:  # 70% similarity threshold
                    matches.append({
                        'facility': facility_name,
                        'facility_region': facility['region'],
                        'facility_fruit': facility['fruit'],
                        'facility_score': facility['score'],
                        'connection_name': conn['name'],
                        'connection_position': conn['position'],
                        'connection_company': conn_company,
                        'similarity': f"{sim*100:.1f}%",
                        'connection_email': conn['email']
                    })
    
    # Sort by facility score (highest priority first)
    matches.sort(key=lambda x: int(x['facility_score']), reverse=True)
    
    return matches

def generate_outreach_message(match):
    """Generate personalized outreach message"""
    
    template = f"""Hi {match['connection_name'].split()[0]},

Hope you're doing well! I'm reaching out because I noticed you work at {match['connection_company']}.

I'm with PostHarvest Technologies - we provide real-time ethylene monitoring systems (Atmos) for cool rooms and CA storage. We help facilities like yours reduce spoilage by 10-17% and extend shelf life.

Would you be open to a quick intro to your Operations or Quality Manager? We're offering a free 2-month pilot (10 units) to demonstrate ROI before any commitment.

Our partners include Zespri, Wonderful Citrus, Stemilt, and Costa Group.

Thanks for considering!
Jonny
calendly.com/jonny_shannon/30mins"""
    
    return template

# Example usage
if __name__ == "__main__":
    # This would run after you provide your LinkedIn export
    print("LinkedIn Warm Intro Matcher")
    print("=" * 50)
    print("\nTo use this tool:")
    print("1. Export your LinkedIn connections (CSV)")
    print("2. Run: python linkedin-matcher.py")
    print("3. Review warm intro opportunities")
    print("4. Send personalized messages")
    print("\nMatches will be prioritized by facility score (XXLarge = highest)")
