Detect visual regressions with Apify, Google Gemini, Sheets and Linear
Quick overview This workflow generates baseline website screenshots with Apify, stores them in Google Drive, and logs the file IDs in Google Sheets, then runs scheduled visual regression checks by comparing new screenshots against the baselines with Google Gemini Vision and creating a consolidated Linear issue when changes are detected. How it works Manually starts to backfill missing baselines by reading URLs from Google Sheets that do not yet have a stored base image. For each missing baseline URL, calls Apify’s screenshot actor, downloads the rendered image, uploads it to Google Drive, and updates the matching Google Sheets row with the Drive file ID. Runs weekly on a schedule and reads the list of webpages to test from Google Sheets. For each webpage, downloads the baseline image from Google Drive and captures a fresh screenshot via Apify. Sends both images to Google Gemini (vision) to detect visual differences and returns a structured list of regressions (text, number, image, color, or position). Filters out pages with no detected changes, aggregates the remaining results, and creates a Linear issue containing the regression report.
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
Extract and validate invoice data from Google Drive using OCR.Space, Gemini, and Google Sheets
Quick overview This workflow monitors a Google Drive folder for newly uploaded invoice files, extracts text with OCR.Space, uses Google Gemini to convert the OCR text into structured invoice fields, validates required values, then stores results in Google Sheets and sends Gmail notifications for success or manual review. How it works Triggers when a new file is created in a specified Google Drive folder. Downloads the uploaded invoice file from Google Drive and checks that the MIME type is PDF, JPG, JPEG, or PNG. Sends the file to the OCR.Space API to extract the invoice text and stops if OCR reports a processing error. Uses Google Gemini to convert the OCR text into structured JSON containing supplier, invoice metadata, amounts, currency, and line items. Validates and normalizes the extracted fields, flags missing required values, and marks the record for manual review when needed. If manual review is required, sends a Gmail alert listing missing fields; otherwise, appends key invoice fields to Google Sheets and sends a Gmail confirmation email. Setup Connect Google Drive OAuth2 credentials and set the folder ID to watch for invoice uploads. Provide an OCR.Space API key and ensure
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.