<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Billy Christi | AI Automation Expert]]></title><description><![CDATA[Billy Christi | AI Automation Expert]]></description><link>https://blog.billychristi.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 12:24:43 GMT</lastBuildDate><atom:link href="https://blog.billychristi.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[AI Proposal Automation System with n8n, OpenAI GPT, Google Docs, and Airtable]]></title><description><![CDATA[Introduction & What This Automation Does
Creating proposals manually can quickly become repetitive and time-consuming, especially if you regularly prepare proposals for clients, projects, or partnersh]]></description><link>https://blog.billychristi.com/ai-proposal-automation-system-with-n8n-openai-gpt-google-docs-and-airtable</link><guid isPermaLink="true">https://blog.billychristi.com/ai-proposal-automation-system-with-n8n-openai-gpt-google-docs-and-airtable</guid><dc:creator><![CDATA[Billy Christi]]></dc:creator><pubDate>Sun, 15 Mar 2026 10:47:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/e4cc2334-7735-4df9-88a9-24925de0a8dc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction &amp; What This Automation Does</h3>
<p>Creating proposals manually can quickly become repetitive and time-consuming, especially if you regularly prepare proposals for clients, projects, or partnerships. To solve this problem, I built a <strong>Proposal Automation System</strong> using n8n, Jotform, Google Docs, Google Drive, Airtable, and OpenAI GPT.</p>
<p>This system automatically generates a complete professional proposal based on structured user input. A user simply fills out a form, and the automation handles everything else: generating proposal content with AI, creating a formatted document, converting it into a PDF, storing the files in Google Drive, and saving all related data inside Airtable.</p>
<p>All generated documents, including the Google Docs proposal and the final PDF, are automatically organized and stored in Google Drive. At the same time, Airtable acts as the central database where every proposal record is stored, including user inputs, generated proposal content, document links, and the final PDF.</p>
<p>For proposal input, this system uses Jotform as the front-facing form where users enter the information required to generate a proposal. Once the form is submitted, the entire automation runs automatically without requiring any manual steps.</p>
<p>This automation is extremely useful for businesses, freelancers, or agencies that frequently create proposals and want to eliminate repetitive work while ensuring consistent, professional proposal documents every time.</p>
<p>If you want to build this automation yourself, you can download the complete n8n workflow JSON from the link below and import it directly into your n8n instance.</p>
<p><a href="https://drive.google.com/drive/folders/14qXw-8yLYDOKEhBLlXtHoMJrXI4G57xZ?usp=drive_link">https://drive.google.com/drive/folders/14qXw-8yLYDOKEhBLlXtHoMJrXI4G57xZ?usp=drive_link</a></p>
<p>You can view and copy the <strong>Airtable base used in this project</strong> using the public link below. This base contains the same <strong>Product table structure and fields</strong> used in the automation, so you can easily duplicate it and use it with the n8n workflow without needing to recreate the database schema manually. Simply open the link, copy the base to your Airtable workspace, and you will have the exact structure required to run this automation.</p>
<p><a href="https://airtable.com/app5664nhfEFhTGT9/shr0Fx6RlTIzV3FEz"><strong>https://airtable.com/app5664nhfEFhTGT9/shr0Fx6RlTIzV3FEz</strong></a></p>
<h3>Quick Demo</h3>
<p>You can watch the full quick demo of this automation system below.</p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=xNOONpmPRMw">https://www.youtube.com/watch?v=xNOONpmPRMw</a></p>

<h3>Technologies Used and Prerequisites</h3>
<p>This project combines several tools to create a fully automated proposal generation workflow.</p>
<table>
<thead>
<tr>
<th>Technology</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td>n8n</td>
<td>Workflow automation engine that connects all services together</td>
</tr>
<tr>
<td>Jotform</td>
<td>Collects proposal input data from users</td>
</tr>
<tr>
<td>OpenAI GPT</td>
<td>Generates structured proposal content using AI</td>
</tr>
<tr>
<td>Google Docs</td>
<td>Used as the proposal template and document generator</td>
</tr>
<tr>
<td>Google Drive</td>
<td>Stores generated documents and PDFs</td>
</tr>
<tr>
<td>Airtable</td>
<td>Central database for proposal records and file storage</td>
</tr>
</tbody></table>
<p>Prerequisites before using or replicating this project:</p>
<ul>
<li><p>An <strong>n8n instance</strong> (cloud or self-hosted)</p>
</li>
<li><p>A <strong>Jotform account</strong> with an accessible form</p>
</li>
<li><p><strong>Google Drive and Google Docs access</strong></p>
</li>
<li><p>An <strong>OpenAI API key</strong></p>
</li>
<li><p>An <strong>Airtable base</strong> to store proposal records</p>
</li>
<li><p>A <strong>Google Docs template</strong> with placeholders for proposal content</p>
</li>
</ul>
<h3>Workflow Explanation</h3>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/f49c612f-503b-4961-97d1-9a5ced592c09.png" alt="" style="display:block;margin:0 auto" />

<p>The automation begins with a <strong>Jotform Trigger node</strong>. Every time the connected proposal form is submitted, this trigger starts the entire workflow. The trigger is configured with the correct Jotform credentials and listens specifically for submissions from the proposal form.</p>
<p>To make the system easy to replicate and understand, the Jotform itself contains structured fields that capture all information needed to generate a proposal. These fields typically include the proposal title, description, tone, and other relevant details that guide the AI when generating the proposal content.</p>
<p>Once the form submission is received, the workflow moves to the <strong>Proposal Generator LLM Chain</strong>, which is the core of the automation. This node uses OpenAI to generate the proposal content based on the information provided by the user. The AI prompt is carefully designed so the output follows a strict JSON structure.</p>
<p>Using a <strong>structured output parser</strong>, the workflow ensures that the AI response always follows the same format. This consistency is important because the generated data will later be inserted directly into a document template.</p>
<p>The AI model used in this project is <strong>GPT-4.1 Mini</strong>, although other models can also be used depending on your requirements.</p>
<p>After the proposal content is generated, the workflow proceeds to the <strong>Google Drive node</strong>, which copies a pre-built Google Docs proposal template. This template contains placeholders wrapped in double curly brackets. These placeholders act as markers that will later be replaced with the generated proposal content.</p>
<p>The copied template is saved inside a dedicated <strong>Proposal Automation folder</strong>, and the new document is automatically renamed using the proposal title submitted in the form.</p>
<p>Once the template is copied, the workflow moves to the <strong>Google Docs update step</strong>. Here, the placeholders inside the document are replaced with the generated proposal data. Multiple find-and-replace operations are executed to populate the proposal title, summary, scope, benefits, and other sections with AI-generated content.</p>
<p>After the document has been fully populated, the workflow converts the Google Docs document into a <strong>PDF file</strong> using Google’s document conversion functionality.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/1c44aec2-d8f2-4cc2-acb6-612af86bc779.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/d6c178fc-0354-4d28-bfae-b135a8098eca.png" alt="" style="display:block;margin:0 auto" />

<p>The generated PDF is then uploaded into the <strong>Proposal Automation folder in Google Drive</strong>. All project-related files remain organized within this folder, including templates, generated documents, and final PDFs.</p>
<p>Before the PDF can be stored in Airtable, its file permissions must be updated. The workflow sets the file permissions so the PDF becomes accessible to anyone with the link. This step is necessary because Airtable requires publicly accessible URLs for file attachments.</p>
<p>Next, a <strong>Set node</strong> prepares the file metadata in the exact JSON format required by Airtable. This includes the file URL and file name so Airtable can store the PDF properly inside an attachment field.</p>
<p>Finally, the workflow creates a <strong>new record in the Airtable Proposal table</strong>. This record contains all relevant information, including the original user input from Jotform, the AI-generated proposal content, the Google Docs document link, and the final PDF file.</p>
<h3>Summary</h3>
<p>This Proposal Automation System demonstrates how multiple tools can be combined to create a powerful AI-driven workflow that eliminates repetitive manual work.</p>
<p>A simple form submission triggers the entire process: AI generates the proposal content, a document template is populated automatically, a PDF version is created, and all files are stored in Google Drive while the full proposal record is saved in Airtable.</p>
<p>By automating proposal generation in this way, businesses and freelancers can significantly reduce the time spent creating documents while maintaining a consistent and professional proposal format.</p>
<p>This project is a great example of how workflow automation and AI can work together to streamline real-world business processes.</p>
<p>Thanks for reading, and I'll see you in the next project.</p>
]]></content:encoded></item><item><title><![CDATA[Build an AI Product Data Enrichment Automation with n8n, Airtable, and OpenAI GPT]]></title><description><![CDATA[Introduction & What This Automation Does
In this project, we build a complete AI Product Data Enrichment Automation using n8n, Airtable, and OpenAI. The goal of this automation is to transform raw pro]]></description><link>https://blog.billychristi.com/build-an-ai-product-data-enrichment-automation-with-n8n-airtable-and-openai-gpt</link><guid isPermaLink="true">https://blog.billychristi.com/build-an-ai-product-data-enrichment-automation-with-n8n-airtable-and-openai-gpt</guid><dc:creator><![CDATA[Billy Christi]]></dc:creator><pubDate>Sun, 15 Mar 2026 02:04:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/361059d8-f4f7-44ec-ab9d-9e5cc062771a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction &amp; What This Automation Does</h3>
<p>In this project, we build a complete <strong>AI Product Data Enrichment Automation</strong> using <strong>n8n, Airtable, and OpenAI</strong>. The goal of this automation is to transform raw product data into rich, structured, and high-quality product content automatically using AI.</p>
<p>This type of automation is extremely useful for <strong>e-commerce platforms, marketplaces, internal product catalogs, and product management systems</strong> that require consistent and detailed product information. Instead of manually writing descriptions, SEO titles, summaries, and marketing content, the entire process is handled automatically by the workflow.</p>
<p>In this system, <strong>Airtable acts as the main database</strong> where all product data is stored. Airtable serves both as the <strong>input source</strong> for raw product data and the <strong>destination</strong> where the enriched product content is written after processing.</p>
<p>You can view and copy the <strong>Airtable base used in this project</strong> using the public link below. This base contains the same <strong>Product table structure and fields</strong> used in the automation, so you can easily duplicate it and use it with the n8n workflow without needing to recreate the database schema manually. Simply open the link, copy the base to your Airtable workspace, and you will have the exact structure required to run this automation.</p>
<p><a href="https://airtable.com/app5664nhfEFhTGT9/shr0Fx6RlTIzV3FEz">https://airtable.com/app5664nhfEFhTGT9/shr0Fx6RlTIzV3FEz</a></p>
<p>With just <strong>four input fields</strong> — product name, product category, brand name, and original description — the workflow automatically generates:</p>
<ul>
<li><p>SEO title</p>
</li>
<li><p>Full product description</p>
</li>
<li><p>Bullet points</p>
</li>
<li><p>Short description</p>
</li>
<li><p>Keywords</p>
</li>
<li><p>Value proposition</p>
</li>
<li><p>Benefit list</p>
</li>
<li><p>Product summary</p>
</li>
<li><p>Use cases</p>
</li>
<li><p>Target audience</p>
</li>
</ul>
<p>All generated data is automatically written back to Airtable, creating a fully enriched product record.</p>
<p>If you want to build this automation yourself, you can download the complete n8n workflow JSON from the link below and import it directly into your n8n instance.</p>
<p><a href="https://drive.google.com/drive/folders/1xBovUqo_QXrV17ARwVYH41xJg-GtSq0S?usp=drive_link">https://drive.google.com/drive/folders/1xBovUqo_QXrV17ARwVYH41xJg-GtSq0S?usp=drive_link</a></p>
<h3>Quick Demo ⇒ Youtube link embedded</h3>
<p>You can watch the full quick demo of this project below.</p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=S4Pots2Pc7k">https://www.youtube.com/watch?v=S4Pots2Pc7k</a></p>

<h3>Technologies Used and Prerequisites</h3>
<p>This project uses several tools that work together to automate the product enrichment process.</p>
<p><strong>n8n</strong> is used as the automation engine that connects all services and handles the workflow logic.</p>
<p><strong>Airtable</strong> is used as the central database where all product data is stored and updated.</p>
<p><strong>OpenAI</strong> is used to generate the enriched product content using a structured prompt and LLM chain.</p>
<p>Below are the main technologies used in this project:</p>
<ul>
<li><p>n8n</p>
</li>
<li><p>Airtable</p>
</li>
<li><p>OpenAI API</p>
</li>
<li><p>Structured Output Parser</p>
</li>
<li><p>n8n Form Trigger</p>
</li>
</ul>
<p>Before using this workflow, make sure you have the following:</p>
<ul>
<li><p>An <strong>n8n instance</strong> (self-hosted or n8n cloud)</p>
</li>
<li><p>An <strong>Airtable base</strong> with the required product fields</p>
</li>
<li><p>An <strong>OpenAI API key</strong></p>
</li>
<li><p>Basic understanding of how to import workflows into n8n</p>
</li>
</ul>
<h3>Workflow Explanation</h3>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/54a62873-c0b7-43d4-8a7d-1945b1471f44.png" alt="" style="display:block;margin:0 auto" />

<p>This automation consists of a <strong>main workflow with two triggers</strong>, allowing the system to process products in different ways depending on the use case.</p>
<h4>Manual Trigger Flow (Batch Processing)</h4>
<p>The first trigger is a <strong>manual trigger</strong> that processes all products with a <strong>pending status</strong>.</p>
<p>The workflow begins with the <strong>Search Products with Pending Status</strong> node. This node retrieves all products from Airtable that are marked as pending. This ensures that only products that have not yet been processed will be enriched.</p>
<p>Next is the <strong>Limit node</strong>. This node is currently disabled, but it allows you to limit the number of products processed in a single execution. This is extremely useful when working with large product catalogs, since you may want to process items in batches, such as <strong>10 products per run</strong>.</p>
<p>After that, the workflow enters a <strong>Loop node</strong>, which processes each product individually. This ensures that every product is handled correctly and that the AI generation process runs independently for each record.</p>
<h4>AI Content Generation</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/c5c140f3-0600-4609-84bd-dceb32cf4486.png" alt="" style="display:block;margin:0 auto" />

<p>The core of the automation is the <strong>Generate Enriched Product Content LLM Chain</strong> node.</p>
<p>This node sends product information to the AI model and generates structured product content. The prompt uses the following inputs:</p>
<ul>
<li><p>Product Name</p>
</li>
<li><p>Product Category</p>
</li>
<li><p>Brand Name</p>
</li>
<li><p>Original Description</p>
</li>
</ul>
<p>The AI returns a <strong>structured JSON object</strong> containing all enriched product fields such as descriptions, bullet points, summaries, and marketing content.</p>
<p>The workflow uses <strong>OpenAI GPT-4.1 Mini</strong>, but you can easily switch to other models depending on cost, speed, or quality requirements.</p>
<p>To ensure the output remains consistent, the workflow uses a <strong>Structured Output Parser</strong>. The parser enforces the same JSON structure that is defined inside the prompt. This ensures the generated content always follows the expected format, which is critical for updating Airtable correctly.</p>
<h4>Updating the Airtable Database</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/3f463850-184f-495b-87ad-e6036bab3268.png" alt="" style="display:block;margin:0 auto" />

<p>After the AI content is generated, the workflow moves to the <strong>Update Product in Airtable</strong> node.</p>
<p>This node writes all generated content back into the product record inside Airtable and updates the product status to <strong>done</strong>.</p>
<p>Some fields use <strong>custom expressions for formatting</strong>. For example, the Bullet Points field converts an array into a numbered list so the output is easier to read inside Airtable. Similar formatting logic is used for:</p>
<ul>
<li><p>Keywords</p>
</li>
<li><p>Value propositions</p>
</li>
<li><p>Benefit lists</p>
</li>
<li><p>Target audience</p>
</li>
</ul>
<p>This ensures the final data is both structured and visually clean.</p>
<h4>n8n Form Trigger Flow</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/69513bd8-97ba-474e-ae90-20900fa1d7f4.png" alt="" style="display:block;margin:0 auto" />

<p>The second trigger uses an <strong>n8n Form</strong>. This trigger allows users to process a <strong>specific product by entering its Product ID</strong>.</p>
<p>The form contains a single required field:</p>
<ul>
<li>Product ID</li>
</ul>
<p>After submission, the workflow runs the <strong>Search Product by Product ID</strong> node, which retrieves the exact product from Airtable.</p>
<p>The workflow then connects to the <strong>same enrichment and update logic</strong> used in the manual trigger flow. Since Product ID is unique, this process only enriches a single product.</p>
<h4>Results in Airtable</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/73583f3b-146c-461f-a87c-383bf672af35.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/f3820d5b-9b2c-4de7-98b1-3d3c482c938c.png" alt="" style="display:block;margin:0 auto" />

<p>After the workflow finishes processing, all enriched content appears directly in the Airtable product table. Each product record now contains complete product information including descriptions, summaries, marketing content, and SEO fields.</p>
<p>The product status is also updated to indicate that the enrichment process has been completed.</p>
<h3>Summary</h3>
<p>This project demonstrates how AI and workflow automation can be combined to <strong>automatically enrich product data at scale</strong>.</p>
<p>Instead of manually writing product descriptions and marketing content, the system generates everything automatically from a small set of input fields.</p>
<p>The automation includes:</p>
<ul>
<li><p>A <strong>manual trigger</strong> for batch processing products with pending status</p>
</li>
<li><p>An <strong>n8n form trigger</strong> for processing a specific product on demand</p>
</li>
<li><p>An <strong>AI enrichment pipeline</strong> powered by OpenAI</p>
</li>
<li><p>A <strong>structured output parser</strong> to guarantee consistent data formatting</p>
</li>
<li><p>Automatic <strong>Airtable updates</strong> for storing the enriched content</p>
</li>
</ul>
<p>With this setup, businesses can dramatically improve the quality and consistency of their product data while saving significant time on manual content creation.</p>
<p>This approach can be easily adapted for <strong>large e-commerce catalogs, marketplaces, and internal product databases</strong>, making it a powerful example of how AI automation can streamline real business workflows.</p>
<p>If you want to build this automation yourself, you can download the full <strong>n8n workflow JSON</strong> from the video description and import it directly into your own n8n instance.</p>
<p>Thanks for reading, and I'll see you in the next project.</p>
]]></content:encoded></item><item><title><![CDATA[Build an AI-Powered Customer Feedback Analysis System using n8n, Jotform, Airtable, and OpenAI GPT]]></title><description><![CDATA[Introduction & What This Automation Does
In this project, we will walk through a Customer Feedback Analysis System built using n8n, Jotform, Airtable, and OpenAI. The goal of this automation is simple]]></description><link>https://blog.billychristi.com/build-an-ai-powered-customer-feedback-analysis-system-using-n8n-jotform-airtable-and-openai-gpt</link><guid isPermaLink="true">https://blog.billychristi.com/build-an-ai-powered-customer-feedback-analysis-system-using-n8n-jotform-airtable-and-openai-gpt</guid><dc:creator><![CDATA[Billy Christi]]></dc:creator><pubDate>Sat, 14 Mar 2026 01:18:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/08c44aae-099d-4362-9b3a-404c5d38d7ef.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction &amp; What This Automation Does</h3>
<p>In this project, we will walk through a <strong>Customer Feedback Analysis System</strong> built using <strong>n8n, Jotform, Airtable, and OpenAI</strong>. The goal of this automation is simple but extremely powerful: <strong>turn raw customer feedback into clear, actionable insights automatically</strong>.</p>
<p>Many companies collect feedback through forms, but the process of manually reading every message, understanding the sentiment, and deciding what action to take can be slow and inefficient. Important feedback can easily get overlooked, especially when teams receive large volumes of responses.</p>
<p>This automation solves that problem by introducing AI into the workflow.</p>
<p>Instead of manually reviewing each feedback entry, the system automatically analyzes the message using AI. It evaluates multiple aspects of the feedback, including:</p>
<ul>
<li><p>Sentiment (positive or negative)</p>
</li>
<li><p>Category of the feedback</p>
</li>
<li><p>Urgency level</p>
</li>
<li><p>A short summary of the feedback</p>
</li>
<li><p>Priority score</p>
</li>
<li><p>Confidence score</p>
</li>
<li><p>Root cause of the issue</p>
</li>
<li><p>Recommended recovery direction</p>
</li>
<li><p>A recovery message that can be sent to the customer</p>
</li>
</ul>
<p>All of these insights are generated automatically using OpenAI and stored in Airtable alongside the original feedback.</p>
<p>This allows teams to quickly understand customer sentiment and prioritize the most important issues without manually reading every message.</p>
<p>The automation also ensures that the right people are notified immediately. Depending on the sentiment of the feedback, the system automatically sends notifications through <strong>email and Slack</strong>, ensuring that the operational team can respond quickly when needed.</p>
<p>In this project, <strong>Airtable is used as the main data storage</strong>. All raw feedback and AI-generated insights are stored there so the team can easily review and analyze the results.</p>
<p><a href="https://airtable.com/app2B5gVgIrG2Sw89/shrKBDfJ5ggoAnp85">https://airtable.com/app2B5gVgIrG2Sw89/shrKBDfJ5ggoAnp85</a></p>
<p>Inside the Airtable base, two main tables are used.</p>
<p>The <strong>Customer Feedback</strong> table stores all raw feedback data submitted by customers. This includes the customer's first name, last name, email address, the service related to the feedback, the feedback message itself, and the rating from one to five.</p>
<p>The <strong>AI Analysis</strong> table stores the AI-generated insights. These include sentiment, category, urgency level, summary, priority score, confidence score, root cause, recovery direction, and recovery message.</p>
<p>By structuring the data this way, the team can easily review both the original feedback and the AI-generated insights.</p>
<p>If you want to build this automation yourself, you can download the complete n8n workflow JSON from the link below and import it directly into your n8n instance.</p>
<p><a href="https://drive.google.com/drive/folders/1cot945mUUJTYL2Kv86RffznmismtcHB4?usp=sharing">https://drive.google.com/drive/folders/1cot945mUUJTYL2Kv86RffznmismtcHB4?usp=sharing</a></p>
<p>Since the full workflow is provided, you can explore each node, study how the workflow is built, modify the logic, and adapt the system to your own use cases.</p>
<p>Before diving into the workflow explanation, let’s first take a look at the quick demo of how the system works.</p>
<hr />
<h3>Quick Demo</h3>
<p>You can watch a quick demo of the entire project below to see the automation working from start to finish.</p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=l8XI_fTD-Ic">https://www.youtube.com/watch?v=l8XI_fTD-Ic</a></p>

<hr />
<h3>Technologies Used and Prerequisites</h3>
<p>Before building this automation, make sure you have access to the following tools and services.</p>
<p><strong>Technologies Used</strong></p>
<ul>
<li><p>n8n (workflow automation platform)</p>
</li>
<li><p>Jotform (customer feedback form)</p>
</li>
<li><p>Airtable (data storage)</p>
</li>
<li><p>OpenAI GPT model (AI feedback analysis)</p>
</li>
<li><p>Slack (team notifications)</p>
</li>
<li><p>Email service (for sending automated responses)</p>
</li>
</ul>
<p><strong>Prerequisites</strong></p>
<p>To follow this project, you should have:</p>
<ul>
<li><p>An <strong>n8n instance</strong> running (self-hosted or cloud)</p>
</li>
<li><p>A <strong>Jotform account</strong> with a feedback form created</p>
</li>
<li><p>An <strong>Airtable base</strong> for storing feedback and analysis</p>
</li>
<li><p>An <strong>OpenAI API key</strong></p>
</li>
<li><p>A <strong>Slack workspace</strong> with a channel for notifications</p>
</li>
<li><p>An <strong>email account configured in n8n</strong></p>
</li>
</ul>
<p>Once these services are connected inside n8n, the workflow can automatically connect all systems together.</p>
<hr />
<h3>Workflow Explanation</h3>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/e7bf39fa-cb29-457c-a09c-d235adddab80.png" alt="" style="display:block;margin:0 auto" />

<p>This automation is powered by a single main workflow called <strong>Customer Feedback Analysis Main Workflow</strong>. This workflow connects Jotform, Airtable, OpenAI, Slack, and email into one automated pipeline.</p>
<p>Let's walk through the workflow step by step.</p>
<p><strong>Jotform Trigger</strong></p>
<p>The workflow begins with a <strong>Jotform Trigger</strong>.</p>
<p>Whenever a customer submits the feedback form, this trigger automatically activates the workflow. Inside the node, you simply connect your Jotform credentials and select the form that will be used.</p>
<p>Once configured, every new form submission will automatically start the workflow.</p>
<p><strong>Set Parameters Node</strong></p>
<p>The next step is a <strong>Set Parameters</strong> node.</p>
<p>This node defines reusable variables that are used later in the workflow. In this project, it stores the <strong>operational team email address</strong>. By defining this value once, the workflow becomes easier to maintain because it avoids repeating the same value in multiple nodes.</p>
<p><strong>Create Customer Feedback in Airtable</strong></p>
<p>The workflow then stores the raw feedback data in Airtable using the <strong>Create Customer Feedback</strong> node.</p>
<p>All form fields from Jotform are mapped directly into Airtable fields. This ensures that every submission is stored consistently inside the <strong>Customer Feedback</strong> table.</p>
<p>At this point, the raw customer feedback has already been safely stored in the database.</p>
<p><strong>Generate AI Analysis (LLM Chain)</strong></p>
<p>Next comes the most important step in the workflow: <strong>AI analysis</strong>.</p>
<p>The <strong>Generate AI Analysis LLM Chain</strong> node sends the feedback data to OpenAI. The prompt instructs the AI to analyze the feedback and return a structured response.</p>
<p>The input sent to the AI includes:</p>
<ul>
<li><p>Service type</p>
</li>
<li><p>Rating</p>
</li>
<li><p>Feedback message</p>
</li>
</ul>
<p>From these inputs, the AI generates several outputs, including:</p>
<ul>
<li><p>AI sentiment</p>
</li>
<li><p>AI category</p>
</li>
<li><p>Urgency level</p>
</li>
<li><p>Feedback summary</p>
</li>
<li><p>Priority score</p>
</li>
<li><p>Confidence score</p>
</li>
<li><p>Root cause</p>
</li>
<li><p>Recovery direction</p>
</li>
<li><p>Recovery message</p>
</li>
</ul>
<p>This workflow uses the <strong>GPT-4.1 mini</strong> model, although other models can also be used depending on your needs.</p>
<p>To ensure reliability, the workflow also uses a <strong>structured output parser</strong>. This guarantees that the AI always returns valid JSON, which is essential for automation workflows.</p>
<p><strong>Store AI Analysis in Airtable</strong></p>
<p>After the AI generates the analysis, the results are saved into the <strong>AI Analysis table</strong> using the <strong>Create AI Analysis</strong> node.</p>
<p>At this stage, the system has successfully stored both:</p>
<ul>
<li><p>The original feedback</p>
</li>
<li><p>The AI-generated insights</p>
</li>
</ul>
<p>This structured data allows the team to easily review and analyze customer feedback later.</p>
<p><strong>Conditional Branching: Positive vs Negative Feedback</strong></p>
<p>Once the AI analysis is completed, the workflow splits into two different branches depending on the result.</p>
<p><strong>Positive Feedback Branch</strong></p>
<p>If the feedback is positive and the rating is greater than three, the workflow executes the positive branch.</p>
<p>Again, three actions are performed.</p>
<p>First, an <strong>appreciation email is sent to the customer</strong> thanking them for the feedback.</p>
<p>Second, the <strong>operational team receives an email</strong> containing the feedback and AI analysis.</p>
<p>Third, the workflow posts a <strong>Slack message in the positive channel</strong> so the team can celebrate good customer feedback.</p>
<p>This branching logic ensures that the team reacts differently depending on the nature of the feedback.</p>
<p>///insert screenshot for positive feedback email result</p>
<p>///insert screenshot for positive slack message result</p>
<p><strong>Negative Feedback Branch</strong></p>
<p>This branch runs when:</p>
<ul>
<li><p>The AI sentiment is negative, or</p>
</li>
<li><p>The rating is less than or equal to three</p>
</li>
</ul>
<p>When this condition is met, three actions are triggered.</p>
<p>First, the system sends an <strong>email to the customer</strong> containing a recovery message.</p>
<p>Second, an <strong>email notification is sent to the operational team</strong>, including both the customer feedback and the AI-generated insights so the team can respond quickly.</p>
<p>Third, a <strong>Slack message is posted to the urgent channel</strong> to alert the team immediately.</p>
<p>///insert screenshot for negative feedback email result</p>
<p>///insert screenshot for urgent slack message result</p>
<hr />
<h3>Summary</h3>
<p>In this project, we built a <strong>complete AI-powered customer feedback analysis system</strong> using <strong>n8n, Jotform, Airtable, and OpenAI</strong>.</p>
<p>The automation collects feedback from customers, analyzes it using AI, stores the results in a structured database, and automatically notifies both customers and internal teams.</p>
<p>The key benefits of this system include:</p>
<ul>
<li><p>Automatically analyzing customer feedback with AI</p>
</li>
<li><p>Structuring insights such as sentiment, urgency, and root cause</p>
</li>
<li><p>Storing all feedback and analysis in Airtable</p>
</li>
<li><p>Automatically notifying teams through email and Slack</p>
</li>
<li><p>Helping teams prioritize and respond faster</p>
</li>
</ul>
<p>Instead of manually reviewing every feedback message, teams can rely on AI to quickly highlight the most important insights and ensure that no critical feedback is missed.</p>
<p>If you want to build this automation yourself, you can download the full <strong>n8n workflow JSON</strong> from the video description and import it directly into your own n8n instance.</p>
<p>Thanks for reading, and I'll see you in the next project.</p>
]]></content:encoded></item><item><title><![CDATA[Build an AI-Powered Document Translation Workflow Using n8n, OpenAI GPT, Google Docs, and Google Drive]]></title><description><![CDATA[Introduction & What This Automation Does
In this project, I built a fully automated Google Docs translation system using n8n, OpenAI GPT, Google Docs, and Google Drive. The goal of this automation is ]]></description><link>https://blog.billychristi.com/build-an-ai-powered-document-translation-workflow-using-n8n-openai-gpt-google-docs-and-google-drive</link><guid isPermaLink="true">https://blog.billychristi.com/build-an-ai-powered-document-translation-workflow-using-n8n-openai-gpt-google-docs-and-google-drive</guid><dc:creator><![CDATA[Billy Christi]]></dc:creator><pubDate>Thu, 12 Mar 2026 06:06:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/0520117d-1a69-4649-84f6-43afb38438aa.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction &amp; What This Automation Does</h3>
<p>In this project, I built a fully automated Google Docs translation system using n8n, OpenAI GPT, Google Docs, and Google Drive. The goal of this automation is to automatically translate documents from one language to another without requiring any manual work after the initial setup.</p>
<p>The automation works by monitoring a specific Google Drive folder. Whenever a Google Docs file is placed inside this folder, the workflow automatically picks it up and begins processing it. The document content is translated into a target language using an OpenAI language model, then a translated Google Doc is generated and stored in a separate folder.</p>
<p>Once the translation is completed, the system also converts the translated document into a PDF. This makes it easier to distribute the translated result in a widely supported format.</p>
<p>All files are organized automatically inside Google Drive. The original document is moved to a completed folder, the translated Google Doc is stored alongside it, and the translated PDF is uploaded into a dedicated PDF folder.</p>
<p>Finally, the workflow sends an email report that includes links to the original document, the translated Google Doc, and the PDF version. This means that after dropping a document into the input folder, the entire process runs automatically from start to finish.</p>
<p>If you want to build this automation yourself, you can download the complete n8n workflow JSON from the link below and import it directly into your n8n instance.</p>
<p><a href="https://drive.google.com/drive/folders/1JvQGktzbZyNcQL_JFck6q5DMaZtFnJrR?usp=sharing">https://drive.google.com/drive/folders/1JvQGktzbZyNcQL_JFck6q5DMaZtFnJrR?usp=sharing</a></p>
<p>Since the full workflow is provided, you can explore each node, study how the workflow is built, modify the logic, and adapt the system to your own use cases.</p>
<p>Before diving into the workflow explanation, let’s first take a look at the quick demo of how the system works.</p>
<h3>Quick Demo</h3>
<p>If you want to see the automation in action, you can watch the quick demo video below.</p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=7AQRGm9rXSg">https://www.youtube.com/watch?v=7AQRGm9rXSg</a></p>

<p>The demo shows how a document is dropped into the Google Drive folder, automatically translated, converted into a PDF, and then delivered through email.</p>
<h3>Technologies Used and Prerequisites</h3>
<p>Before building this automation, there are several tools and services required. These tools work together to handle document storage, translation, workflow automation, and email notifications.</p>
<table>
<thead>
<tr>
<th>Technology</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td>n8n</td>
<td>Workflow automation platform used to orchestrate the entire process</td>
</tr>
<tr>
<td>OpenAI GPT</td>
<td>Performs the document translation using a language model</td>
</tr>
<tr>
<td>Google Drive</td>
<td>Stores the original documents, translated documents, and generated PDFs</td>
</tr>
<tr>
<td>Google Docs</td>
<td>Used to store and manage the translated document content</td>
</tr>
<tr>
<td>Gmail</td>
<td>Sends the final translation report email</td>
</tr>
</tbody></table>
<p>Prerequisites required before running the workflow:</p>
<table>
<thead>
<tr>
<th>Requirement</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>n8n Instance</td>
<td>Self-hosted or cloud version of n8n</td>
</tr>
<tr>
<td>OpenAI API Key</td>
<td>Required for running the translation model</td>
</tr>
<tr>
<td>Google Account</td>
<td>Needed for Google Drive, Google Docs, and Gmail integration</td>
</tr>
<tr>
<td>Google Drive Folder Structure</td>
<td>Specific folders must be created to store pending documents and completed results</td>
</tr>
</tbody></table>
<p>Required Google Drive folders:</p>
<table>
<thead>
<tr>
<th>Folder Name</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td>Pending Translation</td>
<td>Folder where users upload documents that need translation</td>
</tr>
<tr>
<td>Completed Translation</td>
<td>Stores original documents and translated Google Docs</td>
</tr>
<tr>
<td>Completed Translation PDF</td>
<td>Stores the generated translated PDFs</td>
</tr>
</tbody></table>
<p>These folders allow the automation to clearly separate documents that still need processing from documents that have already been completed.</p>
<h3>Workflow Explanation</h3>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/3a524522-dc0b-4ac2-a123-bff8359e3507.png" alt="" style="display:block;margin:0 auto" />

<p>The main workflow is called <strong>Google Doc Translation Automation Main Workflow with PDF Conversion</strong>, and it acts as the central controller for the entire automation.</p>
<p>The workflow begins with two possible triggers. One is a schedule trigger, which allows the automation to run automatically at defined intervals. The second is a manual trigger, which allows the workflow to be executed manually during testing or debugging. Both triggers feed into the same workflow logic.</p>
<p>After the trigger, the workflow enters a <strong>Set Data</strong> node. This node defines key parameters used throughout the automation. These include the source language, the target language, and the email address that will receive the final translation report. Placing these settings at the beginning makes the workflow easy to customize.</p>
<p>The next step uses a <strong>Google Drive Search Files and Folders</strong> node. This node scans the <strong>Pending Translation</strong> folder and retrieves all Google Docs files inside it. Any document placed in this folder will automatically be picked up by the workflow.</p>
<p>Once the files are retrieved, the workflow enters a loop so multiple documents can be processed in a single run. Whether there is one file or ten files in the folder, the workflow processes each one individually.</p>
<p>Each document is passed into a subworkflow called <strong>Google Doc Translation Automation Sub Workflow</strong>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/5fb05ed5-3fce-4a87-88f8-d36997914ddf.png" alt="" style="display:block;margin:0 auto" />

<p>The subworkflow is responsible for performing the actual translation process.</p>
<p>The entry point of the subworkflow is the <strong>When Executed by Another Workflow</strong> node. This node receives parameters passed from the main workflow, including the document ID, document name, source language, and target language.</p>
<p>Next, a <strong>Create Google Document</strong> node creates a new document that will store the translated result. This new document is saved in the <strong>Completed Translation</strong> folder and its name matches the original document with the target language appended.</p>
<p>The workflow then retrieves the content of the original document using a <strong>Get a Document</strong> node. This pulls the entire text that needs to be translated.</p>
<p>After retrieving the document content, a <strong>Code – Separate Content</strong> node splits the text into smaller chunks. The chunk size is set to approximately ten sentences. Breaking the document into smaller parts helps improve translation quality and prevents sending overly large inputs to the language model.</p>
<p>The output of this node is a list of content chunks.</p>
<p>A <strong>Split Out</strong> node then separates these chunks so they can be processed one by one.</p>
<p>The workflow then enters another loop where each chunk is sent to the <strong>Translate Document LLM Chain</strong> node.</p>
<p>This node uses an OpenAI chat model to translate the content chunk from the source language into the target language. The system prompt defines the translation instructions while the user message contains the document content.</p>
<p>A <strong>structured output parser</strong> is used to ensure that the translated result always follows a predictable JSON format. This guarantees that the translated text can always be extracted from a specific field called <strong>result</strong>.</p>
<p>Once a chunk is translated, an <strong>Update Document</strong> node appends the translated content to the translated Google Doc created earlier. This continues until the entire document has been translated.</p>
<p>When the translation is complete, the workflow performs two final actions inside the subworkflow.</p>
<p>First, the original document is moved from the <strong>Pending Translation</strong> folder to the <strong>Completed Translation</strong> folder.</p>
<p>Second, a <strong>Set Node</strong> prepares the output data including the result link, source link, and document name.</p>
<p>After all documents finish processing, the workflow returns to the main workflow where the translated documents are converted into PDFs.</p>
<p>A second loop called <strong>Loop Convert Document Results into PDF</strong> processes each translated document. Inside this loop, a <strong>Download Document and Convert to PDF</strong> node downloads the translated Google Doc and converts it into a PDF format.</p>
<p>Next, the <strong>Upload PDF</strong> node uploads the generated file into the <strong>Completed Translation PDF</strong> folder in Google Drive.</p>
<p>A final <strong>Set Output PDF</strong> node prepares the necessary data including the document name, source ID, translated document ID, and PDF ID.</p>
<p>After all PDFs are generated, the workflow aggregates the results and sends a final <strong>Gmail</strong> report email.</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/c101edb6-f214-4c5d-9a6c-c550ebe65d7b.png" alt="" style="display:block;margin:0 auto" />

<p>The email includes links to the original document, the translated Google Doc, and the translated PDF. If multiple documents were processed, a map function formats the email to display all results clearly.</p>
<p>At this point, the entire automation process is complete.</p>
<h3>Summary</h3>
<p>In this project, I demonstrated how to build a fully automated Google Docs translation pipeline using n8n, OpenAI, Google Docs, and Google Drive.</p>
<p>The automation continuously monitors a Google Drive folder, automatically translates any documents placed inside it, generates a translated Google Doc, converts it into a PDF, and then sends an email report containing all relevant links.</p>
<p>By combining workflow automation with language models, this system removes the need for manual translation workflows and makes document processing significantly faster and more scalable.</p>
<p>Because the full n8n workflow JSON is available, you can import the project directly, study how each node works, and modify it for your own automation projects. The same architecture can also be extended to other document processing tasks such as summarization, content rewriting, document classification, and more.</p>
<p>Thanks for reading, and I'll see you in the next project.</p>
]]></content:encoded></item><item><title><![CDATA[Automating Daily and Weekly Business Reports Using n8n and Airtable]]></title><description><![CDATA[Introduction & What This Automation Does
In this project, I built a fully automated business reporting system using n8n, Airtable, Slack, and Outlook. The goal of this automation is simple but extreme]]></description><link>https://blog.billychristi.com/automating-daily-and-weekly-business-reports-using-n8n-and-airtable</link><guid isPermaLink="true">https://blog.billychristi.com/automating-daily-and-weekly-business-reports-using-n8n-and-airtable</guid><dc:creator><![CDATA[Billy Christi]]></dc:creator><pubDate>Mon, 09 Mar 2026 02:05:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/c84fa2b2-9445-47af-8e60-3b1e30547f02.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction &amp; What This Automation Does</h3>
<p>In this project, I built a fully automated business reporting system using n8n, Airtable, Slack, and Outlook. The goal of this automation is simple but extremely powerful: eliminate manual report preparation and automatically deliver structured business reports to the right people at the right time.</p>
<p>Every day and every week, the system gathers business data from multiple departments, processes it, generates summaries, and distributes reports automatically. Department heads receive reports specific to their department, while the CEO receives a complete overview of the entire business.</p>
<p>All business data in this project is stored inside Airtable. Airtable acts as the main database where finance, sales, and operational data are recorded. The automation workflows process this data, summarize it, and then deliver the results through email and Slack.</p>
<p>You can download and import the complete n8n workflow JSON (including the custom code and LLM prompts) from the link below to run the automation in your own n8n environment:<br /><a href="https://drive.google.com/drive/folders/1eusfyr2Gv_uoVMdg7jEVHHhFzA67BOxD?usp=drive_link">https://drive.google.com/drive/folders/1eusfyr2Gv_uoVMdg7jEVHHhFzA67BOxD?usp=drive_link</a></p>
<p>The automation performs the following tasks:</p>
<ul>
<li><p>Collects finance, sales, and operations data from Airtable</p>
</li>
<li><p>Generates daily summaries for each department</p>
</li>
<li><p>Generates weekly summaries for each department</p>
</li>
<li><p>Sends department-specific reports to department heads</p>
</li>
<li><p>Sends a complete business summary to the CEO</p>
</li>
<li><p>Posts formatted reports to Slack channels</p>
</li>
<li><p>Automatically triggers alerts when business metrics fall below thresholds</p>
</li>
</ul>
<p>To better understand the outcome of the automation, it is helpful to first look at the final results before diving into the technical workflows.</p>
<p>After executing the Business Daily Report workflow, the system automatically sends four emails:</p>
<ul>
<li><p>One email to the Head of Finance</p>
</li>
<li><p>One email to the Head of Sales</p>
</li>
<li><p>One email to the Head of Operations</p>
</li>
<li><p>One complete business report to the CEO</p>
</li>
</ul>
<p>At the same time, the report is also posted into a Slack channel dedicated to daily business reporting.</p>
<p>Result example — Daily report emails</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/2a30643b-10a6-41ea-a8ff-e47624fe06f7.png" alt="" style="display:block;margin:0 auto" />

<p>Result example — Daily Slack report</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/88cfb209-c6fe-4b11-a3ca-e6c754d61ada.png" alt="" style="display:block;margin:0 auto" />

<p>The Business Weekly Report workflow works the same way but processes weekly data instead of daily data.</p>
<p>With the final output demonstrated, we can now move into the quick demo of the system.</p>
<hr />
<h3>Quick Demo</h3>
<p>You can watch the quick demo of the full automation here:</p>
<p><strong>YouTube Demo:</strong>  </p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=ZF7KWc2-jsQ">https://www.youtube.com/watch?v=ZF7KWc2-jsQ</a></p>

<hr />
<h3>Technologies Used and Prerequisites</h3>
<p>This automation combines several modern tools to build a complete reporting system.</p>
<table>
<thead>
<tr>
<th>Technology</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td>n8n</td>
<td>Workflow automation engine</td>
</tr>
<tr>
<td>Airtable</td>
<td>Database for business data</td>
</tr>
<tr>
<td>Slack</td>
<td>Internal report delivery</td>
</tr>
<tr>
<td>Outlook</td>
<td>Email report delivery</td>
</tr>
<tr>
<td>JavaScript</td>
<td>Custom data processing</td>
</tr>
<tr>
<td>LLM Chain</td>
<td>Summarizing notes and explanations</td>
</tr>
</tbody></table>
<p>Before implementing this project, you should have access to the following tools:</p>
<ul>
<li><p>n8n instance (cloud or self-hosted)</p>
</li>
<li><p>Airtable account</p>
</li>
<li><p>Slack workspace</p>
</li>
<li><p>Outlook email account</p>
</li>
<li><p>Basic understanding of n8n workflows</p>
</li>
</ul>
<p>You can copy the full Airtable database used in this project from the public template below:<br /><a href="https://airtable.com/appMPHtayl4J13AIo/shrRu7M0kxyjOTwaJ">https://airtable.com/appMPHtayl4J13AIo/shrRu7M0kxyjOTwaJ</a></p>
<p>Each department uses three tables:</p>
<p>Finance Tables:</p>
<ul>
<li><p><code>finance_transactions</code></p>
</li>
<li><p><code>finance_daily</code></p>
</li>
<li><p><code>finance_weekly</code></p>
</li>
</ul>
<p>Sales Tables:</p>
<ul>
<li><p><code>sales_transactions</code></p>
</li>
<li><p><code>sales_daily</code></p>
</li>
<li><p><code>sales_weekly</code></p>
</li>
</ul>
<p>Operations Tables:</p>
<ul>
<li><p><code>operations_logs</code></p>
</li>
<li><p><code>operations_daily</code></p>
</li>
<li><p><code>operations_weekly</code></p>
</li>
</ul>
<p>The transactions tables store raw operational data, while the daily and weekly tables store summarized reports generated by the automation workflows.</p>
<p>These tables already contain sample data so the automation can be tested immediately without additional setup.</p>
<hr />
<h3>Workflow Explanation</h3>
<h4>Business Daily Report Workflow</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/b48d7d3d-30ad-432e-bf52-370f4944e0c4.png" alt="" style="display:block;margin:0 auto" />

<p>The Business Daily Report workflow is responsible for generating daily reports for all departments and sending a complete summary to the CEO.</p>
<p>The workflow begins with two triggers:</p>
<ul>
<li><p><strong>Schedule Trigger</strong> – Runs every day at 5 PM</p>
</li>
<li><p><strong>Manual Trigger</strong> – Allows the workflow to be executed manually for testing</p>
</li>
</ul>
<p>Immediately after the trigger, a <strong>Set Node</strong> centralizes configuration values such as:</p>
<ul>
<li><p>Department head email addresses</p>
</li>
<li><p>CEO email address</p>
</li>
<li><p>LLM summarization prompt</p>
</li>
</ul>
<p>Keeping these values in a single node makes the workflow easier to maintain and modify.</p>
<p>The main workflow then calls three subworkflows:</p>
<ul>
<li><p>Finance Daily Report</p>
</li>
<li><p>Sales Daily Report</p>
</li>
<li><p>Operation Daily Report</p>
</li>
</ul>
<p>Each subworkflow processes data for its respective department and returns structured output to the main workflow.</p>
<hr />
<h4>Finance Daily Report Subworkflow</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/d9382783-196a-4a6b-96b0-b88f350fe4d9.png" alt="" style="display:block;margin:0 auto" />

<p>This subworkflow generates the daily finance report.</p>
<p>The workflow starts with the <strong>When Executed by Another Workflow</strong> trigger, which receives input data from the main workflow.</p>
<p>Next, an <strong>Airtable Search Node</strong> retrieves today's records from the <code>finance_transactions</code> table using an Airtable formula that filters records for the current day.</p>
<p>Since multiple records can be returned, the data is aggregated into a single structure.</p>
<p>Inside a <strong>Code Node</strong>, the system calculates:</p>
<ul>
<li><p>Total revenue</p>
</li>
<li><p>Total expense</p>
</li>
<li><p>Total cash in</p>
</li>
<li><p>Total cash out</p>
</li>
</ul>
<p>These values form the core metrics of the finance report.</p>
<p>The workflow then uses an <strong>LLM Chain Node</strong> to summarize finance notes from the day's transactions. Instead of sending raw notes, the LLM generates a clear explanation of key financial events.</p>
<p>Once calculations and summaries are complete, the workflow creates a new record in the <code>finance_daily</code> table to store the report results.</p>
<p>Next, alert conditions are evaluated.</p>
<p>If:</p>
<ul>
<li><p>Profit is less than 1000</p>
</li>
<li><p>Expense is greater than 1000</p>
</li>
</ul>
<p>An alert email is automatically sent to the Head of Finance.</p>
<p>After alerts are processed, the complete finance report is emailed using Outlook.</p>
<p>Finally, a <strong>Set Output Node</strong> formats structured output data that will be returned to the main workflow.</p>
<hr />
<h4>Sales Daily Report Subworkflow</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/2d80c2b1-33f3-489c-9d33-f593e36ab574.png" alt="" style="display:block;margin:0 auto" />

<p>The Sales Daily Report subworkflow processes sales data.</p>
<p>The Airtable search node retrieves records from the <code>sales_transactions</code> table.</p>
<p>A Code Node calculates key sales metrics:</p>
<ul>
<li><p>Total leads</p>
</li>
<li><p>Total deals</p>
</li>
<li><p>Best performing marketing channel</p>
</li>
<li><p>Total revenue</p>
</li>
</ul>
<p>Alert conditions are then evaluated.</p>
<p>If:</p>
<ul>
<li><p>Total deals are less than 10</p>
</li>
<li><p>Conversion rate is below 2%</p>
</li>
</ul>
<p>An alert email is sent to the Head of Sales.</p>
<p>The sales report is then emailed, and structured output is returned to the main workflow.</p>
<hr />
<h4>Operation Daily Report Subworkflow</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/3046b4f2-48db-4d88-8b6a-379655e18971.png" alt="" style="display:block;margin:0 auto" />

<p>This subworkflow analyzes operational performance.</p>
<p>Records are retrieved from the <code>operations_logs</code> table.</p>
<p>A Code Node calculates operational metrics:</p>
<ul>
<li><p>Total orders received</p>
</li>
<li><p>Total orders completed</p>
</li>
<li><p>Total orders failed</p>
</li>
<li><p>Completion rate</p>
</li>
</ul>
<p>If the completion rate drops below <strong>90%</strong>, an alert email is sent to the Head of Operations.</p>
<p>The operations report is then emailed, and structured output data is returned to the main workflow.</p>
<hr />
<h4>CEO Report Generation</h4>
<p>After all subworkflows finish execution, the main workflow merges the outputs from finance, sales, and operations.</p>
<p>A complete business summary is generated and sent to the CEO via Outlook.</p>
<p>Result example — CEO email report</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/2a7cdfc4-0533-44d8-a803-246d34f1c653.png" alt="" style="display:block;margin:0 auto" />

<p>The report is also posted to Slack.</p>
<p>Because Slack uses Markdown formatting, the HTML report is first converted into Markdown before being sent.</p>
<p>Result example — Slack daily report</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/88cfb209-c6fe-4b11-a3ca-e6c754d61ada.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h4>Business Weekly Report Workflow</h4>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/f67384ef-15b2-4653-aac9-4469093f1f91.png" alt="" style="display:block;margin:0 auto" />

<p>The Business Weekly Report workflow is almost identical to the daily workflow.</p>
<p>The main differences are:</p>
<ul>
<li><p>The <strong>Schedule Trigger runs every Friday at 5 PM</strong></p>
</li>
<li><p>Weekly subworkflows are used instead of daily ones</p>
</li>
</ul>
<p>The weekly subworkflows retrieve records from the <strong>last 7 days</strong> instead of the current day.</p>
<p>Data is stored in:</p>
<ul>
<li><p><code>finance_weekly</code></p>
</li>
<li><p><code>sales_weekly</code></p>
</li>
<li><p><code>operations_weekly</code></p>
</li>
</ul>
<p>Alert thresholds are also adjusted to reflect weekly performance expectations.</p>
<p>Once all weekly subworkflows complete, the reports are merged and delivered to the CEO through Outlook and Slack using the same delivery logic as the daily workflow.</p>
<p>Result example — Weekly Email report</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/b5ce7de5-a1d0-4cf4-91eb-4b2c0f5fed1a.png" alt="" style="display:block;margin:0 auto" />

<p>Result example — Weekly Slack report</p>
<img src="https://cdn.hashnode.com/uploads/covers/682c577bb9129c264d975875/931c900a-e6a5-44bd-b6a5-b4c4526e147d.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h3>Summary</h3>
<p>In this project, we built a fully automated business reporting system using n8n, Airtable, Slack, and Outlook.</p>
<p>The automation collects business data, processes it, summarizes it, and automatically delivers daily and weekly reports to the right stakeholders. Department heads receive reports tailored to their teams, while the CEO receives a complete overview of business performance.</p>
<p>This type of automation removes the need for manual reporting, reduces human error, and ensures that critical business information is always delivered on time.</p>
<p>By combining workflow automation, structured databases, custom code, and AI summarization, it becomes possible to build powerful internal systems that significantly improve operational efficiency.</p>
<p>If you want to explore the project yourself, you can import the provided workflow JSON and connect it to your own Airtable, Slack, and Outlook accounts.</p>
<p>Thanks for reading, and I'll see you in the next project.</p>
]]></content:encoded></item><item><title><![CDATA[Simple API Endpoint Workflow: Create GET-Based API Responses in n8n]]></title><description><![CDATA[What This Template Is AboutThe Simple API Endpoint Workflow is a ready-to-use n8n template that allows you to create a basic API endpoint using only a few nodes. It's perfect for situations where you need to return custom data when someone accesses a...]]></description><link>https://blog.billychristi.com/simple-api-endpoint-workflow-create-get-based-api-responses-in-n8n</link><guid isPermaLink="true">https://blog.billychristi.com/simple-api-endpoint-workflow-create-get-based-api-responses-in-n8n</guid><category><![CDATA[n8n]]></category><category><![CDATA[automation]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Billy Christi]]></dc:creator><pubDate>Wed, 21 May 2025 10:23:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1747823319880/8b951a86-00c4-4119-bf77-cc74ff8321c2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>What This Template Is About</strong><br />The <strong>Simple API Endpoint Workflow</strong> is a ready-to-use n8n template that allows you to create a basic API endpoint using only a few nodes. It's perfect for situations where you need to return custom data when someone accesses a specific URL using a GET request. Whether you're testing integrations, setting up a lightweight API, or building a mock endpoint, this workflow provides a simple and effective solution.</p>
<p><strong>How the Workflow Works</strong><br />The workflow starts with a <strong>Webhook Trigger (GET)</strong> node, which listens for incoming GET requests. When the URL is accessed, the flow continues to a <strong>Set node</strong>, where you define the response data — this can be plain text, JSON, or any other format. Finally, the <strong>Respond to Webhook</strong> node sends this response back to the requester. With just these three nodes, you can quickly deploy and customize your own API behavior within minutes.  </p>
<p><strong>Workflow JSON</strong><br /><a target="_blank" href="https://drive.google.com/file/d/1A9oKTsjGoJiGavD2UYf_NZztfhFBurlK/view?usp=drive_link">https://drive.google.com/file/d/1A9oKTsjGoJiGavD2UYf_NZztfhFBurlK/view?usp=drive_link</a></p>
]]></content:encoded></item></channel></rss>