Generate weekly student progress reports with Gemini, Supabase, and WhatsApp
Quick overview This workflow runs weekly to pull student attendance and score data from Supabase, uses Google Gemini to generate per-student performance summaries and attention flags, sends immediate WhatsApp alerts for flagged students, then compiles all summaries into a PDF report, uploads it, and shares it with the coach via WhatsApp. How it works Runs weekly on a schedule. Fetches all student weekly metrics (attendance and scores) from Supabase. Uses Google Gemini to write a short performance summary per student and determine whether the student should be flagged for attention based on attendance and score-drop rules. If a student is flagged, sends a WhatsApp message to the coach and inserts a flag record into Supabase. Aggregates all students’ summaries into a single HTML weekly report. Converts the HTML report to a PDF via an HTTP-based HTML-to-PDF API, uploads the PDF to a file-hosting API, and sends the PDF link/document to the coach via WhatsApp. Logs the report URL to Supabase for recordkeeping. Setup Add Supabase credentials and create the required tables/columns (weekly_student_data, attention_flags, and weekly_reports) referenced by the workflow.
Tags
Related workflows
See all AI Automation→Extract Twilio voice donation details with Groq, Gemini, and Google Sheets
Quick overview This workflow receives Twilio call recording callbacks, transcribes the audio with Groq Whisper, uses Google Gemini/Groq LLMs to extract structured donation details, and appends the results (with transcript and review flag) to Google Sheets. How it works Receives a Twilio Recording Status Callback webhook and immediately responds with TwiML (``). Captures call metadata (CallSid, caller number, recording URL/SID, and duration) and continues only if the recording exists and is at least 2 seconds long. Waits briefly for Twilio to finalize the media, then downloads the recording MP3 using Twilio HTTP Basic Auth. Sends the audio file to Groq’s Whisper transcription endpoint to generate a text transcript. Uses a LangChain prompt with Google Gemini and Groq chat models to extract donation amount, fee (if mentioned), beneficiary name, currency, a needs-review flag, and a short summary from the transcript. Parses the model output as JSON and falls back to an error summary with needs_review=yes if parsing fails. Checks Google Sheets for an existing row matching the CallSid/RecordingUrl and, if not found, appends a new row with the extracted fields, transcript, and call details
Enrich company records with social media links using GPT-4o and Supabase
Quick overview This workflow is manually triggered to pull company names and websites from Supabase, crawl each site with an OpenAI-powered agent to extract social media profile URLs, and write the enriched results to a separate Supabase table. How it works Runs when you manually execute the workflow. Reads all rows from the Supabase companies_input table and keeps the name and website fields for processing. Uses an OpenAI (GPT-4o) agent to crawl the company website, following discovered links and extracting social media profile URLs. Forces the agent output into a structured JSON schema and maps the extracted links into a social_media array. Merges the original company name and website with the extracted social media data. Inserts the enriched record into the Supabase companies_output table. Setup Add a Supabase credential and set the correct project details for both reading from companies_input and writing to companies_output. Add an OpenAI API credential for the GPT-4o chat model used by the crawling agent. Ensure your input table has name and website fields or update the field selection and mapping to match your schema. Confirm the output table accepts the mapped fields (for ex
Force AI to use a specific output format
This workflow is for anyone looking to automatically fetch, validate, and parse complex language-based queries into a structured format. Its unique capability lies in not only processing language but also fixing invalid outputs before structuring them. Note that to use this template, you need to be on n8n version 1.19.4 or later.