1. Social Flyer OCR via Multimodal LLM (Gemini 1.5 Flash)
Instagram & Facebook flyers are downloaded via headless scraper/webhooks. A structured vision prompt extracts: title, date, time_start, venue_name, address, is_free, amenities (babysitting, halal food, sisters-only).
2. Masjid iCal / RSS Normalization
Scheduled cron jobs query major Chicago masajid calendar endpoints (e.g., Downtown Islamic Center, Mosque Foundation, MEC). Events are normalized to UTC timestamps and mapped to Chicagoland zones (North, West, South, City).
3. De-duplication & Fuzzy Matching
When multiple organizations cross-promote a joint conference (e.g., MAS + CIOGC), an embedding cosine similarity check (threshold > 0.88 on date + normalized_venue + title) merges entries to eliminate duplicate cards.
Normalized Event JSON Schema:
{
"id": "chi-mas-2026-03",
"title": "Chicagoland Ramadan Prep & Quranic Night",
"organizer": "Mosque Foundation & MAS Chicago",
"zone": "South Suburbs", // "City Proper" | "North Suburbs" | "West Suburbs"
"venue": { "name": "Mosque Foundation", "address": "7360 W 93rd St, Bridgeview, IL" },
"start_iso": "2026-03-20T18:30:00-05:00",
"demographic": "Family Friendly",
"amenities": ["Halal Food Provided", "Wheelchair Accessible", "Free Admission"]
}