Back to Catalog
Ehsan

Ehsan

Hi! πŸ‘‹ I'm Ehsan , a BI & Data Analyst and AI Specialist with a passion for automation! πŸ€– I use n8n , Python , and SQL to build powerful data pipelines and turn complex data into real-world insights.

Total Views589
Templates4

Templates by Ehsan

Automate invoice data extraction from Google Drive to Airtable using Nanonets OCR & Command-R

How it works This template creates a fully automated "hands-off" pipeline for processing financial documents. It's perfect for small businesses, freelancers, or operations teams who want to stop manually entering invoice and receipt data. When you drop a new image/multiple images file into a specific Google Drive folder, this workflow automatically: Triggers and downloads the new file. Performs OCR on the file using a local AI model (Nanonets-OCR-s) to extract all the raw text. Cleans & Structures the raw text using a second local AI model (command-r7b). This step turns messy text into a clean, predictable JSON object. Saves the structured data (like InvoiceNumber, TotalAmount, IssueDate, etc.) to a new record in your Airtable base. Moves the original file to a "Done" or "Failed" folder to keep your inbox clean and organized. Requirements Google Drive Account: For triggering the workflow and storing files. Airtable Account: To store the final, structured data. Ollama (Local AI): This template is designed to run locally for free. You must have Ollama running and pull two models from your terminal: ollama pull benhaotang/Nanonets-OCR-s:F16 ollama pull command-r7b:7b-12-2024-q8_0 How to set up Setup should take about 10-15 minutes. The workflow contains 7 sticky notes that will guide you step-by-step. Airtable: Use the link in the main sticky note ([1]) to duplicate the Airtable base to your own account. Ollama: Make sure you have pulled the two required models listed above. Credentials: You will need to add three credentials in n8n: Your Google Drive (OAuth2) credentials. Your Airtable (Personal Access Token) credentials. Your Ollama credentials. (To do this, create an "OpenAI API" credential, set the Base URL to your local server (e.g., http://localhost:11434/v1), and use ollama as the API Key). Follow the Notes: Click through the workflow and follow the numbered sticky notes ([1] to [6]) to connect your credentials and select your folders for each node. How to customize the workflow Use Cloud AI: This template is flexible! You can easily swap the local Ollama models for a cloud provider (like OpenAI's GPT-4o or Anthropic's Claude 3). Just change the credentials and model name in the two AI nodes (OpenAI Chat Model and Data Cleaner). Add More Fields: To extract more data (e.g., SupplierVATNumber), simply add the new field to the prompt in the Data Cleaner node and map it in the AirTable - Create a record1 node.

EhsanBy Ehsan
248

Notify users when features ship with Semantic Search from Tally to Gmail

Who is this for? This workflow is for Product Managers, Indie Hackers, and Customer Success teams who collect feature requests but struggle to notify specific users when those features actually ship. It helps you turn old feedback into customer loyalty and potential upsells. What it does This workflow creates a "Semantic Memory" of user requests. Instead of relying on exact keyword tags, it uses Vector Embeddings to understand the meaning of a request. For example, if a user asks for "Night theme," and months later you release "Dark Mode," this workflow understands they are the same thing, finds that user, and drafts a personal email to them. How it works Listen: Receives new requests via Tally Forms, vectorizes the text using Nomic Embed Text (via Ollama or OpenAI), and stores them in Supabase. Watch: Monitors your Changelog (RSS) or waits for a manual trigger when you ship a new feature. Match: Performs a Vector Similarity Search in Supabase to find users who requested semantically similar features in the past. Notify: An AI Agent drafts a hyper-personalized email connecting the user's specific past request to the new feature, saving it as a Gmail Draft (for safety). Requirements Supabase Project: You need a project with the vector extension enabled. AI Model: This template is pre-configured for Ollama (Local) to keep it free, but works perfectly with OpenAI. Tally Forms & Gmail: For input and output. Setup steps Database Setup (Crucial): Copy the SQL script provided in the workflow's Red Sticky Note and run it in your Supabase SQL Editor. This creates the necessary tables and the vector search function. Credentials: Add your credentials for Tally, Supabase, and Gmail. URL Config: Update the HTTP Request node with your specific Supabase Project URL. SQL Script Open your Supabase SQL Editor and paste this script to set up the tables and search function: sql -- 1. Enable Vector Extension create extension if not exists vector; -- 2. Create Request Table (Smart Columns) create table feature_requests ( id bigint generated by default as identity primary key, content text, metadata jsonb, embedding vector(768), -- 768 for Nomic, 1536 for OpenAI created_at timestamp with time zone default timezone('utc'::text, now()), useremail text generated always as (metadata->>'useremail') stored, username text generated always as (metadata->>'username') stored ); -- 3. Create Search Function create or replace function matchfeaturerequests ( query_embedding vector(768), match_threshold float, match_count int ) returns table ( id bigint, user_email text, user_name text, content text, similarity float ) language plpgsql as $$ begin return query select feature_requests.id, featurerequests.useremail, featurerequests.username, feature_requests.content, 1 - (featurerequests.embedding <=> queryembedding) as similarity from feature_requests where 1 - (featurerequests.embedding <=> queryembedding) > match_threshold order by featurerequests.embedding <=> queryembedding limit match_count; end; $$; ⚠️ Dimension Warning: This SQL is set up for 768 dimensions (compatible with the local nomic-embed-text model included in the template). If you decide to switch the Embeddings node to use OpenAI's text-embedding-3-small, you must change all instances of 768 to 1536 in the SQL script above before running it. How to customize Change Input: Swap the Tally node for Typeform, Intercom, or Google Sheets. Change AI: The template includes notes on how to swap the local Ollama nodes for OpenAI nodes if you prefer cloud hosting. Change Output: Swap Gmail for Slack, SendGrid, or HubSpot to notify your sales team instead of the user directly.

EhsanBy Ehsan
171

Analyze food ingredients from Telegram photos using Gemini and Airtable

Analyze food ingredients from Telegram photos using Gemini and Airtable πŸ›‘οΈ Personal Ingredient Bodyguard Turn your Telegram bot into an intelligent food safety scanner. This workflow analyzes photos of ingredient labels sent via Telegram, extracts the text using AI, and cross-references it against your personal database of "Good" and "Bad" ingredients in Airtable. It solves the problem of manually reading tiny, complex labels for allergies or dietary restrictions. Whether you are Vegan, Halal, allergic to nuts, or just avoiding specific additives, this workflow acts as a strict, personalized bodyguard for your diet. It even features a customizable "Persona" (like a Sarcastic Bodyguard) to make safety checks fun. 🎯 Who is it for? People with specific dietary restrictions (Vegan, Gluten-free, Keto). Individuals with food allergies (Nuts, Dairy, Shellfish). Special dietary observers (Halal, Kosher). Health-conscious shoppers avoiding specific additives (e.g., E120, Aspartame). πŸš€ How it works Trigger: You send a photo of a product label to your Telegram Bot. Fetch Rules: The workflow retrieves your active "Watchlist" (Ingredients to avoid/prefer) and "Persona" settings from Airtable. Vision & Logic: It uses an AI Vision model to extract text from the image (OCR) and Google Gemini to analyze the text against your strict veto rules (e.g., "Safe" only if ZERO bad items are found). Response: The bot replies instantly on Telegram with a Safe/Unsafe verdict, highlighting detected ingredients using HTML formatting. Log: The result is saved back to Airtable for your records. βš™οΈ How to set up This workflow relies on a specific Airtable structure to function as the "Brain." Set up Airtable Sign up for Airtable: Click here Copy the required Base: Click here to copy the "Ingredients Brain" base Connect Airtable to n8n (5-min guide): Watch Tutorial Set up Telegram Message @BotFather on Telegram to create a new bot and get your API Token. Add your Telegram credentials in n8n. Configure AI Add your Google Gemini API credentials. Note on OCR: This template is configured to use a local LLM for OCR to save costs (via the OpenAI-compatible node). If you do not have a local model running, simply swap the "OpenAI Chat Model" node for a standard GPT-4o or Gemini Vision node. πŸ“‹ Requirements n8n (Cloud or Self-hosted) Airtable account (Free tier works) Telegram account Google Gemini API Key Local LLM (Optional, for free OCR) OR OpenAI/Gemini Key (for standard Cloud Vision) 🎨 How to customize Change the Persona: Go to the "Preferences" table in Airtable to change the bot's personality (e.g., "Helpful Nutritionist") and output language. Update Ingredients: Add or remove items in the "Watchlist" table. Mark them as "Good Stuff" or "Bad Stuff" and set Status to "Active". Adjust Sensitivity: The AI prompt in the "AI Agent" node is set to strict "Veto" mode (Bad overrides Good). You can modify the system prompt to change this logic. ⚠️ Disclaimer This tool is for informational purposes only. Not Medical Advice: Do not rely on this for life-threatening allergies. AI Limitations: OCR can misread text, and AI can hallucinate. Verify: Always double-check the physical product label. Use at your own risk.

EhsanBy Ehsan
146

Workflow for two-way sync between Airtable and HubSpot

Who's it for This template is for sales teams, marketing operations (M-Ops), or freelancers who use Airtable as a "control panel" or staging area for new leads. If you're tired of manually copying and pasting approved leads into HubSpot, this workflow automates the entire process for you. How it works This workflow runs on a schedule (e.g., every 5 minutes) to check for new leads. Before: Your Airtable has new leads with a 'πŸ“₯ New Lead' status. The Trigger: You (or a teammate) manually review and change a lead's status to 'πŸ‘ Ready to Sync'. The Workflow Runs: n8n fetches all leads in that view (up to 50 at a time) and loops through them one by one. For each lead, it: Finds (or creates) a Company in HubSpot based on the email domain. Creates (or updates) a Contact in HubSpot based on the email. Automatically associates that Contact with that Company. After: The workflow automatically updates the same Airtable row with the new HubSpot IDs and a 'βœ… Synced' status, completing the 2-way sync. This template includes a full batch-processing loop, robust error-handling (it logs failures back to Airtable), and detailed sticky notes to guide you. How to set up Setup should take less than 10 minutes. All detailed instructions are in the sticky notes inside the workflow. Copy the Airtable Base: This is a mandatory first step! You must use this template. ➑️ Click Here to Copy the Base Template (First time using Airtable? Sign up here with my link) Add Your Credentials: How to connect Airtable to n8n (Video) How to connect HubSpot to n8n (Video) Configure 3 Nodes: Schedule Trigger: Set how often you want it to run (e.g., every 5 minutes). get πŸ‘Ready to Sync: Select your Airtable credential and the Base you copied. Also, Do this for the other Airtable nodes. Search company: Select your HubSpot credential. Also, Do this for the othe HubSpot nodes. Activate! Save and activate the workflow. To test it, just change a lead's 'Status' in Airtable to 'πŸ‘ Ready to Sync'. Requirements An Airtable account. A HubSpot account (a free developer sandbox account is recommended for testing). n8n credentials for both Airtable and HubSpot (using a Private App Token for HubSpot). How to customize the workflow Add More Fields: Easily sync more data (like 'Phone Number' or 'Lead Source') by adding columns in your Airtable, then adding those fields to the Create or update a contact node in n8n. Change the Schedule: Adjust the Schedule Trigger to run more or less frequently. Add Notifications: Connect a Slack or email node to the πŸ‘Done! Going for next record (success) or specially πŸ‘ŽFailed! Going for next record1 (error) paths to get real-time alerts.

EhsanBy Ehsan
24
All templates loaded