Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
An n8n workflow that drafts a reply to each new email from your own documents in Qdrant and sends the draft to an approver by Gmail. An approved reply goes to the sender, and feedback sends the draft to a reviewer agent that rewrites it.
Email replies with Gmail approval and a knowledge base is an n8n workflow in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
A new email
It starts when a new unread email arrives in the IMAP mailbox, and it reads:
A reply to the original sender that a person approved, written from your own documents
What you need before you start.
Mail trigger
Watches a mailbox and passes on each new unread email with its sender, subject and text.
NeedsThe IMAP host, a user and a password or app password
Summary model
Summarizes the email text in at most 100 words with deepseek-flash.
NeedsDeepSeek API key
Knowledge base
Stores the pieces of your documents as vectors and is searched by the agents for the facts behind a reply.
NeedsThe address of a Qdrant instance and an API key
Agents and embeddings
Embeds the documents and the searches, writes and rewrites the reply, and classifies the approver’s answer with gpt-5.6-terra.
NeedsOpenAI API key
Document source
Lists the files in a folder and downloads each one, Google Docs as plain text.
NeedsA Google Drive OAuth2 credential and the folder
Approval
Sends the approver the original message and the draft, and waits for a typed answer.
NeedsA Gmail OAuth2 credential and the approver’s address
Reply sender
Sends the approved reply to the sender of the incoming email.
NeedsSMTP host, user and password
Checked by Mindket on 13 Nov 2026
This n8n workflow answers incoming email from your own documents, with a person approving every reply. One part, which you start by hand, reads a Google Drive folder and stores its documents in a Qdrant collection. The other part watches a mailbox over IMAP and summarizes each new email with DeepSeek. An AI agent searches the collection and writes a short reply. Gmail sends the draft to an approver, who types an answer, and a classifier reads it as approved or declined. An approved reply goes to the sender by SMTP. A declined one is rewritten from the feedback and sent for approval again.
Small teams that answer the same company questions by email and want a person to check each reply before it leaves. It suits support and sales inboxes with a set of documents behind them. Skip it if you want replies sent with no review.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Support | Support teams | Draft answers to common questions from the help documents | A support agent approves a reply about opening hours by typing Ok. |
| Sales | Sales teams | Answer product and price questions from a shared folder of documents | A salesperson asks for a shorter reply, and the rewrite arrives in the next approval email. |
| Services | Small firms | Reply to client questions with the firm’s own policy documents | An office manager approves a reply that quotes the booking policy. |
| Operations | Office managers | Run a shared info inbox without writing each reply | An office manager reviews the drafts for the info inbox once a day. |
You need solid n8n for this one: eight credentials, a vector database, a Google Drive folder and a step that waits for a person. The file gives no setup time.
n8n Cloud or a self-hosted n8n will run it, with your own Qdrant, OpenAI, DeepSeek, Google Drive and Gmail accounts and an IMAP and SMTP mailbox.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Eight credentials and four placeholders cover every step.
| Need | Detail |
|---|---|
| n8n | An account on n8n Cloud or a server of your own |
| Qdrant | The address of your instance and an API key |
| OpenAI | An API key for the embeddings, the two agents and the classifier |
| DeepSeek | An API key for the summary |
| Google Drive | A folder of Google Docs that answer the questions |
| Mailbox | IMAP details to read the mail and SMTP details to send the replies |
| Gmail | An account that sends the approval emails, and the address of the approver |
workflow.json.Create collection and Refresh collection, replace <YOUR_QDRANT_URL> with your Qdrant host and <YOUR_COLLECTION> with a collection name. Add a Header Auth credential named api-key with your Qdrant key as the value, and select it in both.Qdrant Vector Store and Qdrant Vector Store1. Replace <YOUR_COLLECTION> in both with the same name.OpenAI, Embeddings OpenAI and Embeddings OpenAI1. Add a DeepSeek credential and select it in DeepSeek Chat Model.Get folder and Download Files. In Get folder, replace <YOUR_DRIVE_FOLDER_ID> with your folder.When clicking ‘Test workflow’. It creates the collection, clears it, then reads the folder, splits each document and stores the pieces.Email Trigger (IMAP) and an SMTP credential to Send Email. Add a Gmail OAuth2 credential to Gmail and replace <YOUR_APPROVER_EMAIL_ADDRESS> there.Publish the workflow and leave it. Each new email gets a draft, and the approver receives it by email with a link. Open the link, type Ok to approve or describe the change you want. An approved reply goes to the sender. After a change request, a new draft comes back for approval.
| To change | Where |
|---|---|
| Which documents it knows | The folder in Get folder and the pieces in Token Splitter |
| How a reply reads | The system message of Write email |
| How a rewrite looks | The system message of Email Reviewer |
| What counts as approval | The categories in Text Classifier |
| The length of the summary | The two prompts in Email Summarization Chain |
| The models | OpenAI and DeepSeek Chat Model |
| The approval email | Gmail |
A customer writes to ask whether you ship to Canada and how long it takes. The folder holds a Google Doc with your shipping policy.
Write email drafts a reply of under 100 words from the shipping policy, and the approver receives it by email. The approver types Ok, the classifier reads that as approved and Send Email sends the reply to the customer.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has two parts. Run the first part once to fill the knowledge base. The second part starts when mail arrives and stops at the Gmail box until someone answers. Click Test workflow on the first part, then send a test question and open each box’s output.
For experts. The summary chain, the agents and the classifier are n8n’s LangChain nodes, and the knowledge base is a vector store that the agents use as a tool.
| Node | What it does | What to know |
|---|---|---|
Email Summarization Chain | Summarizes the email text with DeepSeek Chat Model in at most 100 words | Set to read a binary file, and there is none, so the email reaches the model through the prompt, with its curly braces doubled |
Write email | A tools agent on OpenAI with the Qdrant store as its tool | The tool is named company_knowladge_base, a spelling kept from the original |
Gmail | Send and wait for response, with a free-text answer | No time limit is set, and the answer comes back as data.text |
Text Classifier | Reads data.text as Approved or Declined | Shares the OpenAI model with the two agents |
Email Reviewer | A tools agent that rewrites the draft as HTML from the feedback | Its output goes back to Gmail, so the loop runs until someone approves |
Send Email | SMTP send of the approved HTML | The from address is the to header of the incoming email |
Refresh collection | HTTP Request to Qdrant’s delete points route with an empty filter | Qdrant’s reference does not say what an empty filter matches, so try it on a throwaway collection first |
A person approves each reply, but the email text still goes to AI services and a vague answer can send a draft.
gpt-4o-mini, which OpenAI lists for shutdown on 14 January 2027. Two agents with a tool use it, so it now names gpt-5.6-terra, because gpt-6-luna calls tools on Chat Completions only with reasoning effort nonedeepseek-chat is a name DeepSeek announced as discontinued on 24 July 2026. It now names deepseek-flash, which thinks before it answers by default, so a summary can take longerSend Email uses the incoming email’s to header as its from address, so an email sent to several people may fail or go out from the wrong addresstext-embedding-3-small, which has 1536 dimensions, the size Create collection asks for. Change the model in both and the size togetherAn n8n workflow that answers incoming email from your own documents, with a person approving every reply. One part, which you start by
hand, reads a Google Drive folder and stores the documents in a Qdrant collection. The other part watches a mailbox over IMAP and
summarizes each new email with DeepSeek. An AI agent searches the collection and writes a reply, and Gmail sends the draft to an approver.
The approver types an answer, and a classifier reads it as approved or declined. An approved reply goes to the sender by SMTP. A declined
one is rewritten from the feedback and sent for approval again.
workflow.json: the workflow as n8n exports it, 31 nodes. 22 of them run and nine are sticky notes. It holds no credential.README.md: these notes.Create collection sent a POST with an empty filter, which does not create a collection. It now sends a PUT with a vector size of 1536QDRANTURL and COLLECTION are now <YOUR_QDRANT_URL> and <YOUR_COLLECTION>. The author's test folder in Get folder and theGmail are now <YOUR_DRIVE_FOLDER_ID> and <YOUR_APPROVER_EMAIL_ADDRESS>.OpenAI node named gpt-4o-mini, which OpenAI lists for shutdown on 14 January 2027. It now names gpt-5.6-terra. Two agentsgpt-6-luna, the listed replacement, calls tools on Chat Completions only with reasoning effort none.DeepSeek Chat Model had no model set, so it took the node's default, deepseek-chat. DeepSeek announced that name as discontinued ondeepseek-flash.Email Summarization Chain, the email text has its curly braces doubled. The prompt is a template, and one strayMarkdown and the approval message use the plain-text part when an email has no HTML part. Before, such an email gave an empty summary.workflow.json.Create collection and Refresh collection, replace <YOUR_QDRANT_URL> with your Qdrant host, with its port if it needs one,<YOUR_COLLECTION> with a collection name of your choice. Add a Header Auth credential with the name api-key and your QdrantQdrant Vector Store and Qdrant Vector Store1. Replace <YOUR_COLLECTION> in bothOpenAI, Embeddings OpenAI and Embeddings OpenAI1. Add a DeepSeek credential andDeepSeek Chat Model.Get folder and Download Files. In Get folder, replace<YOUR_DRIVE_FOLDER_ID> with your folder.When clicking ‘Test workflow’. It creates the collection, clears it, then reads the folder, splitsEmail Trigger (IMAP). Add an SMTP credential and select it in Send Email. Add a GmailGmail and replace <YOUR_APPROVER_EMAIL_ADDRESS> there.The first part, started by hand:
When clicking ‘Test workflow’ starts Create collection and Refresh collection. The second sends a delete-points request with anGet folder lists the files in your folder, and Download Files downloads each Google Doc as plain text.Default Data Loader and Token Splitter cut each file into pieces of 300 tokens with an overlap of 30.Embeddings OpenAI1 turns the pieces into vectors, and Qdrant Vector Store1 stores them.The second part, for each new email:
Email Trigger (IMAP) picks up a new unread email from the INBOX and marks it read.Markdown turns its HTML into Markdown in a field named data.Email Summarization Chain asks DeepSeek Chat Model for a summary of at most 100 words.Write email is an agent on OpenAI. It searches the collection through Qdrant Vector Store and writes a reply of under 100Edit Fields keeps the reply in a field named email.Gmail sends the approver an email with the original message, the draft and a link. The run waits there for a typed answer.Text Classifier reads the answer as Approved or Declined.Approved, Send Email sends the draft by SMTP to the sender of the email, from the address that received it, with theRe: and the original subject.Declined, Email Reviewer rewrites the draft as HTML from the draft and the feedback. Edit Fields keeps the new version,Gmail asks again. The loop goes on until someone approves.Get folder, and the pieces in Token Splitter.Write email. How a rewrite looks: the system message of Email Reviewer.Text Classifier.Email Summarization Chain.OpenAI for both agents and the classifier, and DeepSeek Chat Model for the summary. Change the embedding model inCreate collection together.Gmail.OpenAI serves three nodes, both agents and the classifier. The model page for gpt-5.6-terra lists function calling, and thegpt-6-luna says Chat Completions supports it only with reasoning effort none.deepseek-flash thinks before it answers by default, so a summary can take a little longer.Email Summarization Chain is set to read a binary file, and there is none. The email text reaches the model through the prompt.Gmail has no time limit set, so n8n waits with no end for each email that gets no answer. Each one keeps a run open.Send Email uses the to header of the incoming email as its from address. An email sent to several people, or one with a displaytext-embedding-3-small, which has 1536 dimensions, the size Create collection now asks for.Refresh collection clears the collection before each fill. Qdrant's reference page does not say what an empty filter matches, socompany_knowladge_base. The spelling is the original's and does no harm.NOTICE.md 646 B README.md 9 KB workflow.json 21 KB
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
zarazhangrui · Skill
Builds HTML presentations from scratch or from a PowerPoint file and shows visual style previews to pick from, for people who want web slides with no CSS or Ja…
iptv-org · Kit
Collects publicly available live TV channels from many countries into playlists that any video player with live streaming can open. Made for viewers and for de…
uwg · Kit
Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…