AI Agent Workflows
518 Ergebnisse — ausschließlich quellenverknüpfte n8n-Referenzen
Recover overdue invoices with GPT-4o-mini, Gmail, Google Sheets and Slack
Quick overview This workflow runs every 24 hours to read overdue invoices from Google Sheets, uses OpenAI (GPT-4o-mini) to draft personalized recovery emails and determine escalation, sends emails via Gmail, logs outcomes back to Google Sheets, and posts status and error alerts to Slack. How it works Runs every 24 hours on a schedule trigger. Reads invoice rows from a Google Sheets “invoices” tab and checks whether there are any valid invoice entries to process. If no invoices are found, posts a “no overdue invoices” message to a Slack channel. For each invoice found, uses OpenAI (GPT-4o-mini) to assign an escalation level, draft a personalized HTML email (including payment plans when applicable), and recommend an escalation action. Parses the AI output into structured fields and sends the recovery email to the client via Gmail. If the AI recommends escalation, sends an internal escalation alert email to the legal team via Gmail. Updates the invoice row in Google Sheets with the new escalation level and AI summary, then appends a full audit log row to a “Recovery sheet” tab. If AI processing fails, posts an error alert to Slack and continues with the next invoice. Setup Add Google
Log clinic chatbot inquiries from a website widget with OpenAI and Google Sheets
Quick overview This workflow receives website chatbot messages via a webhook, uses OpenAI to generate an AI receptionist reply with session-based context, extracts structured inquiry details, and appends or updates a single visitor row in Google Sheets before returning a clean JSON reply to the widget. How it works Receives a POST request from the website chat widget containing the visitor message, sessionId, and timestamp. Uses an OpenAI-powered receptionist agent with per-session memory to generate a contextual reply and a hidden JSON block of extracted inquiry details. Strips the hidden data block from the reply, parses the JSON into fields (name, contact, intent, appointment details, summary, status), and flags whether any meaningful data was captured. If collectible data exists, appends or updates a Google Sheets row matched on Session ID with the latest extracted details and a Last Updated timestamp. Returns the cleaned reply to the chat widget as a JSON response with CORS headers. Setup Add an OpenAI API credential for the OpenAI chat model used by the receptionist agent. Add a Google Sheets OAuth2 credential and set the target spreadsheet document ID and sheet/tab name used
Extract post-call glossary terms from transcripts with Anthropic Claude and Telegram
Quick overview This workflow accepts a meeting transcript via an n8n form or webhook, uses Anthropic Claude to extract technical terms and acronyms into a JSON glossary, and then sends either the formatted glossary or a “nothing to add” confirmation to Telegram. How it works Receives a transcript either from an n8n form submission or from an HTTP POST webhook. Normalizes the incoming payload into consistent transcript and sessionId fields. Sends the full transcript to an Anthropic Claude chat model to extract distinct technical terms and short definitions as a strict JSON block. Parses the model’s JSON response into structured fields and checks whether any terms were found. Formats a numbered glossary message when terms exist and sends it to a Telegram chat. Sends a short “Nothing to add” message to Telegram when no relevant terms are found. Setup Add an Anthropic API credential and select the model in the Anthropic Claude chat model node. Create a Telegram bot, add Telegram credentials in n8n, and replace `` with your target Telegram chat ID in both Telegram send steps. If using the webhook trigger, copy the webhook URL and configure your transcription tool to POST JSON like { "tr
Evaluate vendor proposal PDFs with OpenAI, Gmail, and Google Sheets
Quick overview This workflow collects vendor proposal PDFs via an n8n Form, extracts text from the PDF, uses an OpenAI ChatGPT model to summarize and flag risks, logs the evaluation to Google Sheets, and sends an approval or review-needed notification through Gmail. How it works Receives a submission from an n8n Form with the submitter’s details, optional notes, and a vendor proposal PDF upload. Extracts text from the uploaded PDF and cleans/limits it to a safe length for AI evaluation. Sends the cleaned proposal text and submitter notes to an OpenAI ChatGPT model to return structured JSON with vendor details, summary, key points, and risks. Parses the AI response, formats key points and risks for readability, and flags the submission as “REVIEW NEEDED” when any risks are present. Appends the evaluation results to an “Evaluations” tab in Google Sheets with the decision, summary, and risk metadata. Sends a Gmail alert to the review team when risks are found, otherwise emails an auto-approval notification to the approver. Setup Add an OpenAI API credential and select the model for the OpenAI Chat Model used by the evaluator. Connect Google Sheets OAuth2 and replace YOUR_PROPOSAL_LOG_
Run a multi-tool Telegram AI assistant with Groq Llama 3.3
Quick overview This workflow turns a Telegram bot into a personal assistant J.A.R.V.I.S - powered by Groq (Llama 3.3 70B) and a LangChain agent with chat memory, using tools for web search, weather, news, Wikipedia lookups, calculations, date/time, jokes, and URL reading. How it works Triggers when a new Telegram message is received by your bot. Sends the message text to a LangChain agent running on Groq’s chat model, using the Telegram chat ID to keep a rolling memory of the conversation. When needed, the agent calls external tools such as Tavily (web search), OpenWeatherMap (weather), NewsAPI (news), Wikipedia, JokeAPI, and a URL fetcher to gather or summarize information. For math and date/time questions, the agent runs built-in code tools to compute results or return the current date and time. Returns the agent’s final response to the same Telegram chat. Setup Create a Telegram bot with @BotFather, add a Telegram API credential in n8n, and select it in both the Telegram Trigger and Telegram send-message step. Add a Groq credential in n8n and ensure the Groq chat model is selected in the workflow. Replace placeholders with your API keys: YOUR_TAVILY_API_KEY (Tavily), YOUR_OPENWE
Categorize emails and draft Gmail replies with Groq and Google Sheets
Quick overview This workflow monitors Gmail for new emails, uses Groq (via the LangChain Agent node) to categorize and summarize each message and draft a reply, sends an alert email for high-priority items, and logs the analysis and draft details to Google Sheets. How it works Checks Gmail every minute for new incoming emails. Skips processing if the email has no body content or snippet. Extracts the sender, subject, received date, message ID, and a truncated body (up to 3000 characters) for analysis. Sends the email content to Groq to return a JSON analysis with category, priority, summary, key asks, action items, suggested labels, and a draft reply. Parses and validates the AI JSON output, stopping if it cannot be parsed. Sends a Gmail alert to your chosen address when the email is marked HIGH priority, then continues. Appends the parsed analysis fields to a Google Sheets “Email Log” sheet and creates a Gmail draft reply only when the analysis indicates a response is required. Setup Connect a Gmail OAuth2 credential with permission to read emails and create drafts, and select it in the Gmail Trigger, Alert email, and Create Draft nodes. Add a Groq API credential and select it in
Repurpose content into 5-platform posts with Groq Llama 3.3 and Upload-Post
Quick overview This workflow receives a webhook with either a URL or raw text, uses Groq (Llama 3.3 70B) to analyze and repurpose the content into Instagram, X, LinkedIn, email, and video formats, optionally logs results to Google Sheets, and posts the LinkedIn text to multiple platforms via Upload-Post.com. How it works Receives a POST webhook request containing a single content value that is either a URL or plain text. If the input starts with http, it fetches the page content over HTTP and packages it as cleaned source text; otherwise it uses the provided text as-is. Sends the prepared content to Groq (Llama 3.3 70B) to generate a structured analysis of the core message, key points, audience, tone, and hook angles. Uses Groq again to generate platform-specific outputs (Instagram caption/hashtags, X thread, LinkedIn post, email newsletter, and a short video script) as JSON. Parses the AI JSON, validates character limits for Instagram, LinkedIn, and X, and returns an error response if the output cannot be parsed. On success, appends the generated content and validation warnings to Google Sheets, posts the LinkedIn text to selected social platforms via the Upload-Post.com API, and
Post daily motivational quote images to Telegram with Gemini and HTML to Image
Quick overview This workflow runs daily on a schedule, uses Google Gemini to generate a short motivational quote and author, renders it into an image via htmlcsstoimg.com, and posts the resulting photo to a Telegram channel. How it works Runs once per day at the configured hour using a schedule trigger. Sends a prompt to Google Gemini to generate an original motivational quote and an author name in a strict two-line format. Extracts the quote and author from the Gemini response and falls back to default values if parsing fails. Calls the htmlcsstoimg.com API to render the quote and author into a styled 1080×1080 image using an HTML/CSS template. Sends the generated image URL to Telegram and posts it as a photo to the configured channel. Setup Add Google Gemini (PaLM) API credentials in n8n for the quote generation step. Create a Telegram bot with @BotFather, add it as an admin to your target channel, and connect the bot token as a Telegram credential in n8n. Sign up for an htmlcsstoimg.com API key and set it in the HTTP request header as CLIENT-API-KEY. Replace @your_channel_username with your Telegram channel username and adjust the schedule time and quote prompt as needed.
Publish science newsletter posts from YouTube using Ghost and Google Sheets
Quick overview This workflow turns science keywords from Google Sheets into researched Ghost newsletter posts by discovering and screening YouTube videos with Apify, validating claims using Brave Search, storing sources in Qdrant with Cohere embeddings, drafting content with LLMs, and publishing via a custom Ghost HTTP endpoint. How it works Runs either manually to qualify “FAIR GAME” keywords from Google Sheets or on a schedule to start the automated publishing pipeline. Uses Brave Search with an LLM agent to research each keyword’s current context and writes a structured relevance, domain, and angle assessment back to the Keywords sheet. On schedule, randomly selects an eligible keyword, uses Apify’s YouTube Scraper to fetch recent videos with English transcripts, and appends normalized candidates to the Candidate Videos sheet. Scores each candidate’s virality from views, engagement, channel size, and publish age, marks rows as VIRAL or NOT VIRAL, and archives NOT VIRAL items to an Archive sheet. Reviews VIRAL candidates with an editorial LLM agent to select exactly one evidence-worthy video (or reject all), updates statuses and reasoning in Google Sheets, and archives rejected v
Convert Telegram messages to to-do lists with Gemini and Notion
Quick overview This workflow turns incoming Telegram bot text messages into a numbered to-do list using Google Gemini, saves the result as a new page in a Notion database, and replies to the user in Telegram with the same extracted task list. How it works Triggers whenever your Telegram bot receives a new message. Checks whether the incoming message contains text and ignores non-text updates. Sends the message text to Google Gemini to extract a clean, numbered to-do list (or returns “No tasks found.”). Creates a new page in a Notion database and stores the extracted to-do list. Sends the extracted to-do list back to the user in the original Telegram chat. Setup Create a Telegram bot with @BotFather, add your Telegram credentials in n8n, and use the trigger’s webhook/connection to start receiving updates. Add a Google Gemini (PaLM) API credential for the AI extraction step. Add a Notion credential, select the target database, and ensure it has suitable properties to store the page title and extracted to-do content.
Repurpose YouTube Shorts from Telegram to Facebook, Instagram and TikTok with Apify and OpenAI
Quick overview This workflow listens for a YouTube Short link sent to a Telegram bot, downloads the video metadata and MP4 URL via Apify, generates a repost caption with OpenAI, uploads the video to Blotato, publishes it as a Facebook Reel, Instagram Reel, and TikTok post, then confirms back in Telegram. How it works Triggers when a message containing a YouTube Short URL is received by your Telegram bot. Sends the URL to an Apify YouTube downloader actor to retrieve the Short’s title and direct MP4 format URLs. Selects the best MP4 with audio up to the configured resolution and uploads it to Blotato to get a stable hosted media URL. Uses OpenAI (via the LangChain agent) to generate a short caption from the video title using your caption rules. Publishes the hosted video and generated caption to Facebook (as a Reel), Instagram (as a Reel), and TikTok via Blotato, continuing even if one platform publish fails. Sends a Telegram message confirming the publishes and includes the caption that was used. Setup Create a Telegram bot and add its token as an n8n Telegram credential, then start a chat with the bot so it can receive messages. Add an Apify API token as an n8n HTTP Header Auth cr
Enrich B2B leads with Tavily search, Groq Llama 3.3, and Google Sheets
Quick overview This workflow receives a company name via webhook, runs three Tavily web searches (company info, recent news, and key people), uses Groq (Llama 3.3 70B) to synthesize a structured lead profile, optionally appends the results to Google Sheets, and returns the enriched profile in the webhook response. How it works Receives a POST webhook request containing a company name and an optional domain. Queries the Tavily Search API for company overview details, then searches Tavily again for recent news and key executives/leadership. Sends the combined search results to a Groq LLM agent to generate a sales-ready lead enrichment profile as strict JSON (company details, products, signals, news, pain points, and outreach angles). Parses the AI output, extracts valid JSON if possible, and flattens key fields into a single row-friendly structure. If parsing succeeds, appends the enriched lead data to a Google Sheets spreadsheet and returns the full profile in the webhook response. If parsing fails, returns an HTTP 422 error response with the raw AI output for troubleshooting. Setup Create a Groq API key, add it as an n8n Groq credential, and select it in the Groq LLM node. Create a
Create Seedance 2.0 short videos from Telegram ideas with OpenAI and Blotato
Quick overview This workflow takes a video idea sent via Telegram, uses OpenAI to generate a Seedance 2.0-ready prompt plus platform-specific captions, creates the video through AtlasCloud’s Seedance API, then publishes it to TikTok, Instagram, and YouTube using Blotato and confirms back in Telegram. How it works Receives a video idea as a Telegram message. Uses OpenAI (via an agent) to generate a structured JSON payload containing a Seedance 2.0 text-to-video prompt plus TikTok and Instagram captions and a YouTube title and description. Submits the prompt to AtlasCloud’s Seedance 2.0 video generation API and requests a 5-second video. Polls AtlasCloud every 30 seconds until the video generation status returns completed/succeeded. Extracts the final video URL and pairs it with the generated captions and YouTube metadata. Publishes the video to TikTok, Instagram, and YouTube via Blotato, then sends a Telegram confirmation message. Setup Create a Telegram bot and add Telegram credentials, then ensure the trigger and confirmation nodes use the correct bot and chat settings. Add an OpenAI API credential and select a chat model (configured for gpt-4o-mini) for prompt and caption generat
Generate gender-aware email greetings with OpenAI and KlickTipp
Quick overview This workflow triggers when a contact is tagged in KlickTipp, uses OpenAI to estimate gender from the contact’s first name or to extract a name from the email address, and then writes an HTML greeting (Lieber/Liebe/Hallo) back to a KlickTipp custom field. How it works Triggers when a contact is tagged in KlickTipp. If the contact already has a first name, OpenAI estimates the most likely gender and a confidence score from that first name. If the first name is missing but an email address exists, OpenAI extracts a first and last name from the email address, estimates gender, and returns confidence scores. If the gender confidence is below 85%, the workflow selects a neutral greeting (Hallo {first name},) and updates the KlickTipp contact. If the gender confidence is 85% or higher, the workflow chooses a gendered greeting (Liebe/Lieber {first name},) and updates the KlickTipp contact. When a name was extracted from the email address, the workflow also writes the parsed first name and conditionally updates the last name in KlickTipp if its confidence is high. Setup Create a KlickTipp tag that triggers this workflow and configure the KlickTipp trigger/webhook to fire whe
Evaluate AI prompts with OpenRouter LLM-as-judge and Notion reports
Quick overview This workflow collects a prompt and model choice via an n8n Form, uses OpenRouter LLMs to generate an evaluation dataset, run the prompt against each test case, and grade the responses, then saves per-item results and a synthesized one-line report to Notion. How it works Receives prompt, dataset size, and target model input from an n8n Form submission. Uses OpenRouter (via LangChain) to generate a JSON evaluation dataset with categorized questions and difficulty distribution. Iterates through each evaluation question and calls the selected OpenRouter model using the submitted prompt as the system message to produce an answer. Sends each answer to a separate OpenRouter grader model that returns a JSON score plus strengths, weaknesses, and reasoning. Saves each graded evaluation item as a new page in a Notion database. Aggregates all graded items and uses an OpenRouter synthesis model to produce a concise overall evaluation line, then saves it as a Notion page under a specified parent page. Setup Add an OpenRouter API credential in n8n and ensure the models referenced in the form and LLM nodes are available to your OpenRouter account. Add a Notion integration credentia
Transcribe and analyze sales meetings with Deepgram, Gemini, GHL, Slack & Gmail
Quick overview Youtube Video: https://youtu.be/GNAplBWdCDE?si=TjojVTZX7ViiRUiG This workflow receives meeting voice recording via webhook, transcribes it with Deepgram, and uses Gemini to extract client details and next-step tasks. It then updates GoHighLevel, posts a task summary to Slack, emails the client their action items via Gmail, and logs the meeting to Sheets. How it works Receives a POST webhook request containing a meeting ID, attendee email, meeting date/time, and an audio file. Looks up the contact in GoHighLevel by email and creates/updates the contact if it does not already exist. Checks Google Sheets for the meeting ID and only continues if no existing row is found. Sends the audio binary to Deepgram to transcribe the recording with speaker diarization and utterances enabled. Formats the transcript and sends it to a Google Gemini–powered agent that returns structured JSON with client identification and task lists. Creates a GoHighLevel task with the extracted service-provider tasks, posts the task summary to Slack, and emails the client their tasks via Gmail. Appends the meeting details, extracted company name, and action items to Google Sheets and returns a webhook
Send GitHub release audio newsletters with OpenAI, Google Drive, Gmail and Sheets
Quick overview This workflow triggers on a published GitHub Release, uses OpenAI to turn the release notes into a short spoken script and MP3, stores the audio on Google Drive, pulls subscribers from Google Sheets, and sends an HTML “listen” newsletter to them via Gmail. How it works Triggers when a GitHub Release is published for the configured repository. Parses and cleans the release changelog, extracting key items into features, fixes, improvements, and other notes. Uses an OpenAI chat model to rewrite the release details into a 60–90 second spoken script. Calls the OpenAI text-to-speech API to generate an MP3 audio file from the script. Uploads the MP3 to Google Drive and sets the file permissions to “anyone with the link can view.” Loads subscriber email addresses from Google Sheets, builds an HTML newsletter with the public audio link and release highlights, and sends it via Gmail using BCC. Setup Connect a GitHub credential with access to the target repo and replace YOUR_GITHUB_USERNAME and YOUR_REPO_NAME in the GitHub trigger. Add an OpenAI API credential for both the chat model step and the OpenAI TTS HTTP request. Connect Google Drive OAuth2 and replace YOUR_AUDIO_FOLDER
Discover and score engineering candidates with Groq, GitHub, LinkedIn, Stack Overflow, HN and Supabase
Quick Overview This workflow exposes a POST webhook that turns a job description into a structured hiring brief using Groq, searches candidates across GitHub, LinkedIn (via Apify), Stack Overflow, and Hacker News, scores and summarizes the shortlist, optionally saves results to Supabase, and returns a JSON response. How it works Receives a candidate search request via a POST webhook and normalizes the payload into a consistent schema. Validates that the request includes a job description or structured criteria, and returns a 400 JSON error if it is invalid. Uses Groq (via LangChain) to extract structured job requirements, then builds a search brief with queries and limits for each source. Searches GitHub, LinkedIn via Apify, Stack Overflow, and Hacker News in parallel and normalizes each source’s results into a common candidate format. Merges all candidates, sanitizes and deduplicates the pool, and returns an empty 200 response if no candidates remain. Scores candidates with a deterministic evidence formula, filters by the configured score threshold, and builds a recruiter-facing JSON report. Uses Groq (via LangChain) to generate an AI shortlist summary, attaches it to the report,
Draft Gmail reply drafts automatically with Google Gemini
Quick overview This workflow watches for new Gmail messages, uses Google Gemini to draft a concise reply based on the email content, and saves the response as a Gmail draft in the original thread for you to review before sending. How it works Triggers every minute when a new email is received in Gmail. Sends the email subject, sender, and snippet to Google Gemini with instructions to write a professional reply under 100 words matching the sender’s tone. Creates a Gmail draft containing the generated reply and sets the subject to “Re:” while attaching it to the original email thread. Setup Connect a Gmail OAuth2 credential and ensure the trigger has access to the inbox you want to monitor. Add a Google Gemini (PaLM) API credential for the Gemini chat model. Review the reply prompt and the Gmail trigger polling interval, then activate the workflow. No additional setup is required the workflow is ready to run as soon as both credentials are connected.
Generate dividend income reports via Telegram with Google Gemini
Quick overview This workflow listens for Telegram messages, validates the sender, parses an investment amount and risk strategy, builds a predefined dividend ETF/stock allocation, calculates estimated yield and income, and uses Google Gemini to format a concise portfolio report that it sends back in Telegram. How it works Triggers when a new Telegram message is received. Checks the Telegram chat ID against an allowlist to ensure only an approved user can run the workflow. Parses the message text into investment capital and a strategy (conservative, moderate, or aggressive) and sends a Telegram “typing” action while processing. Builds a strategy-based portfolio from predefined tickers and allocations, enriches each holding with preset dividend yield and risk values, and calculates invested amount plus monthly and annual income per holding. Aggregates the holdings into a single portfolio summary with total income and overall portfolio yield. Uses Google Gemini via an AI Agent prompt to generate a Telegram-ready report based strictly on the calculated portfolio data. Sends the formatted DividendIQ report back to the configured Telegram chat. Setup Create a Telegram bot with @BotFather
Qualify Product Hunt leads with Google Gemini, Apify, and Google Sheets
Quick overview Youtube Video: https://youtu.be/h47YeiivZvs?si=V-S1X-ME5V24Tuch This workflow runs daily to pull the latest Product Hunt posts, qualifies them with Google Gemini, scrapes ICP-matching product websites with Apify to find emails, then writes the lead data to Google Sheets and creates contacts in GoHighLevel. How it works Runs every day on a schedule trigger. Queries the Product Hunt GraphQL API for the latest posts and iterates through each result. Resolves each product’s website redirect target, extracts a clean domain, and filters out blocked domains like app stores, social networks, and link aggregators. Sends the product name, tagline, and description to a Google Gemini–powered agent to score ICP fit and keeps only matches. Uses Apify to crawl each matched website and extract email addresses from the site content. Groups scraped results by domain, keeps only products with at least one email, and appends or updates a matching row in Google Sheets. Creates a GoHighLevel contact using the first email and stores any additional emails in a custom field. Setup Add Product Hunt OAuth2 credentials and ensure the GraphQL query in the Product Hunt request returns the fields
Extract meeting insights from transcripts with OpenAI, Google Sheets and ClickUp
Quick Overview This workflow collects a meeting transcript via an n8n Form, uses OpenAI (ChatGPT) to extract structured meeting intelligence, logs the results to Google Sheets, creates one ClickUp task per action item, and emails an HTML meeting brief via Gmail. How it works Receives a form submission containing the meeting title, date, participants, duration, and full transcript. Validates the input (including a minimum transcript length), calculates counts, and generates a unique meeting ID. Sends the meeting context and transcript to an OpenAI ChatGPT model to extract a strict JSON payload with summary, topics, decisions, action items, risks, follow-up date, and sentiment. Parses and normalizes the AI JSON output, then formats readable strings and metrics for reporting. Appends the full meeting record to a Google Sheets “Meetings” tab. Splits the extracted action items and creates a ClickUp task for each valid item, including owner, priority, and due date when provided. Sends a formatted HTML meeting brief to the configured team email address using Gmail. Setup Add an OpenAI credential in the OpenAI Chat Model node and select the model to use. Connect Google Sheets OAuth2, repla
Track Slack EOD updates and post executive summaries with Google Sheets and Gemini
Quick overview Youtube Video: https://youtu.be/AbkX2splTTg?si=LTHqLFIWQD4hAYsO This workflow collects end-of-day updates from team members in Slack, stores them in Google Sheets, and posts a concise executive summary back to Slack using Google Gemini. How it works Runs daily at 3pm, reads the team roster from Google Sheets, filters out people marked as on leave, and sends each active member an EOD update form in Slack. Receives Slack button/form submissions via a webhook, parses the interactive payload, and replaces the original message with a confirmation. Checks whether the submitted EOD date matches today’s date, and sends a private Slack alert to the owner if someone submits late. For on-time submissions, reads today’s entries from the EOD submissions Google Sheet, deduplicates by user and date, and appends the new submission to Google Sheets. Runs daily at 5pm, reads today’s submissions and yesterday’s “tomorrow plan” entries from Google Sheets and merges them per user. Aggregates the merged data, calculates attendance and expected submission counts from the team roster, and sends the dataset to Google Gemini to generate an executive summary. Posts the generated Slack-formatte
Generate and send personalized client proposals with OpenAI, SendGrid, Slack, and Google Sheets
Quick overview This workflow accepts proposal requests via webhook or an hourly schedule, normalizes and validates the client data, uses OpenAI to generate a tailored proposal with pricing, then sends it via SendGrid, logs the request to Google Sheets, notifies a Slack channel, and returns a webhook response. How it works Receives a proposal request from a webhook POST (or runs hourly on a schedule) and maps incoming fields into a consistent client schema. Validates required fields, converts the budget to a number, and assigns a budget tier for pricing. If required data is missing, sends a SendGrid email to the requester listing the validation errors. Routes valid requests by client type (startup, enterprise, agency, nonprofit, or default) and applies conditional pricing and discounts to build line items and totals. Uses OpenAI (GPT-4o-mini) to generate a seven-section, personalized proposal based on the client details, project scope, template context, and pricing. Formats the generated proposal into a branded HTML email with an investment breakdown table. Sends the proposal via SendGrid, appends a tracking row to Google Sheets, posts a Slack notification, and returns a JSON succes