# whatsapp — WhatsApp Reminder System Sends personalized WhatsApp reminders to users who haven't submitted their bets before the deadline. Uses OpenAI GPT-3.5 to generate natural-language reminder messages. ## Classes ### WhatsAppNotifier Orchestrates the reminder workflow: 1. Queries DB for upcoming reminders at 2 checkpoints: **24 hours** and **2 hours** before deadline 2. For each reminder, generates a message via `OpenAIConnector` 3. Sends via WhatsApp API (HTTP POST to configurable host:port) 4. Marks sent reminders in DB to avoid duplicates Requires env vars: `TLW_WHATSAPP_HOST`, `TLW_WHATSAPP_PORT`, `TLW_WHATSAPP_API_KEY`. ### OpenAIConnector Caches and generates reminder text via OpenAI Chat Completions API (model `gpt-3.5-turbo-0125`). Prompt structure: - **System prompt** (German): "Generate a message reminding someone to submit missing tips. Must sound like a friend. Use correct singular/plural." - **User input**: JSON with league name, matchday name, delivery day, time - **Output template** has 2 variants — 24h deadline uses a friendly intro, 2h deadline emphasizes urgency Message format: ``` Hey , Bitte gib die fehlenden Tipps bis um ab. Du kannst deine Tipps wie immer unter https://tippliga-wuerzburg.de/app.php/football/bet abgeben. Viele Grüße Die Tippliga Admins ``` Messages are cached per (league + matchday + delivery) key to avoid repeated API calls. ### WhatsAppReminder Java `record` with fields: season, league, leagueName, matchday, matchdayName, deliveryDate, todayTomorrow, time, remainingHours, userId, username, phoneNumber, missingBets. Maps directly to the SQL query result from `TippligaSQLConnector.getNextWhatsAppReminders()`.