Mindket

PDF report questions answered from Qdrant through a webhook

Newversion 1 · updated

Overview

An n8n workflow in two parts. One stores a PDF from Google Drive in a Qdrant collection, and a webhook then answers questions about it with an OpenAI model, using the five closest chunks.

PDF report questions answered from Qdrant through a webhook is an n8n workflow in the Finance & accounting 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.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps, with a webhook address your tools can reach
  • Another front end: a form, a bot or a script that posts input and company can ask the questions
  • Another file source: swap the Google Drive node for any node that outputs the PDF as binary data in data

Platform

Connects 3 apps

How it works

Trigger

Webhook call

It starts when a program or a script posts to the pdf-question webhook with:

  • The question, in the input field
  • The name of the Qdrant collection to search, in the company field

Actions

  1. Beforehand, one manual run downloads your PDF from Google Drive, splits it into chunks and stores them in Qdrant
  2. OpenAI turns the question into a vector
  3. Qdrant returns the five closest chunks from the collection you name
  4. An OpenAI chat model writes the answer from those chunks
  5. The webhook replies with the answer as plain text

Result

A plain text answer to your question, drawn from the PDF you stored

Integrations

What you need before you start.

OpenAI

Language model

Turns each chunk and each question into a vector, and writes the answer from the five closest chunks.

NeedsOpenAI API key

Qdrant

Vector store

Stores the PDF’s chunks as vectors, and returns the five closest to each question.

NeedsA Qdrant instance n8n can reach, with its address and an API key if it needs one

Google Drive

PDF source

Downloads the PDF you point to, by its file id.

NeedsA Google account, for a Google Drive OAuth2 credential, and a PDF in your Drive

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
6 steps, starting when its webhook is called or by hand
AI
2 steps call an AI model: Retrieval QA Chain and Qdrant Vector Store
Sign-ins
Signs in to: Qdrant, OpenAI and Google Drive
API keys
No API key is left in the file
Step types
Mindket’s checker reads 5 of its 6 step types. It does not read: Vector Store Qdrant

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow lets you ask questions about a PDF report and get the answers back from a web address. The first part downloads the PDF from Google Drive, cuts it into chunks, turns each one into a vector with OpenAI and stores them in a Qdrant collection. The second part is a webhook. You post a question, the workflow finds the five closest chunks, and an OpenAI chat model writes the answer from them. Thirteen nodes do the work, beside two sticky notes.

Who it suits

Analysts, small finance teams and builders who want a question box over a long report without reading it end to end. It also suits anyone learning how a vector store and a retrieval chain fit together. Skip it if you need answers across many reports at once, since each question searches one collection.

Who uses it, and how
IndustryWho uses itHow they use itExample
FinanceAnalystsAsk a long report what it says about risks, costs or outlookAn analyst asks which risks an annual report names.
InvestingIndividual investorsCheck a claim in a filing before acting on itAn investor asks how much cash a company reports.
OperationsSmall business teamsPut a long policy or contract behind a question boxA manager asks how long a supplier contract runs.
SoftwareDevelopersUse it as a small model of a retrieval flow they will build for their own filesA developer swaps the PDF and keeps the rest.

You need a little n8n: import a file, add three credentials and call a webhook with a JSON body. Nothing in the file states a setup time.

Where to use it

Any n8n that can reach OpenAI, Google Drive and a Qdrant instance will run it.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps, with a webhook address your tools can reach
  • Another front end: a form, a bot or a script that posts input and company can ask the questions
  • Another file source: swap the Google Drive node for any node that outputs the PDF as binary data in data

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Three accounts cover every step.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
OpenAIAn API key, used by the two embedding nodes and the chat model
GoogleAn account for a Google Drive OAuth2 credential, and a PDF in your Drive
QdrantAn instance n8n can reach, with its address and an API key if it needs one
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an OpenAI credential and select it in Embeddings OpenAI, Embeddings OpenAI1 and OpenAI Chat Model.
  3. Add a Google Drive credential and select it in Google Drive. Replace YOUR_FILE_ID with the id of your PDF, the long part of its address in Drive.
  4. Add a Qdrant API credential with your address and key, and select it in Qdrant Vector Store and Qdrant Vector Store1.
  5. Open OpenAI Chat Model and pick a current model. The file names none, so n8n fills in gpt-5-mini, which OpenAI’s deprecations page, read on 12 November 2026, shuts down on 11 December 2026, with gpt-5.6-terra as the replacement.
  6. Press Execute Workflow once to store the PDF in a collection called crowd.
  7. Listen for a test event on Webhook1 and post a question to /webhook-test/pdf-question, or publish the workflow and use /webhook/pdf-question.

How to use it

Post a JSON body with two fields to the webhook. input holds your question, and company names the collection to search. The reply is the answer as plain text. Store a second PDF in a collection of its own, and a different company value searches that one instead.

What to change for a different result
To changeWhere
The fileThe id in Google Drive
The collectionThe name in Qdrant Vector Store and the company field you post
Chunk sizeRecursive Character Text Splitter, 3000 characters with an overlap of 200
How many chunks the model seestopK in Vector Store Retriever, 5
The modelOpenAI Chat Model

Example

You store an annual report and ask which risks it names.

You post {"input": "Which risks does the report name?", "company": "crowd"}. The question becomes a vector, and Qdrant returns the five closest chunks. The model writes an answer from them, and the webhook replies with that text. Check any figure against the PDF, since the model saw only five chunks.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A vector store keeps each chunk of text as a list of numbers, so a question can find the passages closest to it in meaning. The top group stores the PDF. The bottom group answers. Run the top once, then keep the bottom listening.

For experts. Two Qdrant nodes share a collection by name, and the webhook picks the collection for each request.

Where to look closer
NodeWhat it doesWhat to know
Qdrant Vector StoreVersion 1, insert mode, collection crowdIt creates the collection if it is missing. Run it again and the chunks go in a second time
Qdrant Vector Store1Version 1, collection {{ $json.body.company }}, feeding Vector Store RetrieverThe caller picks the collection, so anyone who can call the webhook can search any collection on that Qdrant instance
Retrieval QA ChainVersion 1, query {{ $json.body.input }}Its output is response.text, which Respond to Webhook returns as text
Webhook1Version 1.1, a POST on pdf-question, answered by a nodeIt has no sign-in

Good to know

The webhook is open, and the caller names the collection.

  • Open webhook: Webhook1 has no sign-in, so once the workflow is published, anyone with its address can ask questions and spend your OpenAI key
  • Collection: the caller’s company value picks the collection, so use a Qdrant instance that holds only what you are happy to expose, or add a check
  • Reruns: the first part adds the chunks again each time, so run it once per file
  • Embeddings: both embedding nodes must use the same model, because the collection’s vectors have one fixed size. They arrive on the node’s default
  • Models: the file names no chat model, and n8n fills in gpt-5-mini, which OpenAI shuts down on 11 December 2026. Step 5 names the replacement
  • Billing: each question costs at least one embedding call and one model call
  • Your data: the report’s text and every question go to OpenAI. Qdrant holds the chunks
  • Accuracy: the answer rests on five chunks, so check what matters against the PDF
  • A repair: the original copy wired in a chat trigger that sent the question in a field the chain does not read. Mindket’s copy drops it
  • Credentials: the JSON holds none

README and files

README

PDF report questions answered from Qdrant through a webhook

An n8n workflow in two parts. The first reads a PDF from Google Drive, cuts it into chunks and stores them in a Qdrant
collection. The second waits at a webhook: you post a question, it finds the five closest chunks, hands them to an
OpenAI chat model and sends the answer back in the reply.

What is inside

  • workflow.json: the workflow as n8n exports it, 13 nodes beside 2 sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

Mindket fixed a few things the copy would have tripped over:

  • The Google Drive node held its author's own file id. It now reads YOUR_FILE_ID, and you put in your own.
  • The webhook's path was a long random string. It now reads pdf-question.
  • The copy had a chat trigger wired into the answering chain. The trigger sends the message in a field called input,
    and the chain reads body.input, so a question from the Chat window would have failed. Mindket removed that trigger.
  • Two sticky notes spoke of Supabase while the nodes use Qdrant. Mindket reworded them, and removed a third note that
    only pointed to a video.
  • The workflow arrives switched off, and no credential is inside.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An OpenAI API key.
  • A Google account, for a Google Drive OAuth2 credential, and a PDF in your Drive.
  • A Qdrant instance that n8n can reach, with its address and, if it needs one, an API key.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an OpenAI credential and select it in Embeddings OpenAI, Embeddings OpenAI1 and OpenAI Chat Model.
  3. Add a Google Drive credential and select it in Google Drive. Replace YOUR_FILE_ID with the id of your PDF, the
    long part of its address in Drive.
  4. Add a Qdrant API credential with your Qdrant address and key, and select it in Qdrant Vector Store and
    Qdrant Vector Store1.
  5. Open OpenAI Chat Model and pick a current model. The file names none, so n8n fills in gpt-5-mini. OpenAI's
    deprecations page, read on 12 November 2026, gives 11 December 2026 as its shutdown date and names gpt-5.6-terra
    as its replacement.
  6. Press Execute Workflow once. The PDF is stored in a collection called crowd, which is created if it is missing.
  7. Listen for a test event on Webhook1, then post a question:
curl -X POST https://YOUR-N8N-ADDRESS/webhook-test/pdf-question \
  -H "Content-Type: application/json" \
  -d '{"input": "What are the main risks this report names?", "company": "crowd"}'

Once the workflow is published, the same call goes to /webhook/pdf-question.

How a run goes

The first part runs when you press Execute Workflow:

  1. When clicking "Execute Workflow" starts it.
  2. Google Drive downloads the file whose id you set.
  3. Binary to Document reads the PDF's binary field data and turns its pages into documents.
  4. Recursive Character Text Splitter cuts them into chunks of 3000 characters that overlap by 200.
  5. Embeddings OpenAI turns each chunk into a vector, and Qdrant Vector Store inserts the vectors in the collection
    crowd.

The second part runs when a question arrives:

  1. Webhook1 takes a POST on pdf-question and holds the reply until a node answers.
  2. Retrieval QA Chain reads the question from body.input.
  3. Qdrant Vector Store1 searches the collection named in body.company, with Embeddings OpenAI1 turning the
    question into a vector. Vector Store Retriever keeps the five closest chunks.
  4. OpenAI Chat Model writes the answer from those chunks.
  5. Respond to Webhook sends the answer back as plain text.

Change the look

  • The collection: the name in Qdrant Vector Store for storing, and the company field you post for asking. Keep them
    the same.
  • Chunk size and overlap: Recursive Character Text Splitter.
  • How many chunks the chain sees: topK in Vector Store Retriever, 5 in the file.
  • The model: OpenAI Chat Model.
  • A different file: the id in Google Drive. Use a new collection name for each report you want to keep apart.

Good to know

  • The company field decides which collection is searched, so a name that matches no collection cannot return an answer.
  • Each run of the first part adds the file's chunks again and does not clear the collection, so run it once per file.
  • Both embedding nodes must use the same model, because the collection's vectors have one fixed size. They arrive on the
    node's default.
  • Each question costs at least one embedding call and one model call.
  • The report's text and each question go to OpenAI. Qdrant holds the chunks.
  • The webhook has no sign-in. Once the workflow is published, anyone with its address can ask questions and spend your
    OpenAI key.
  • The answer rests on the five chunks it was given, so check anything that matters against the PDF.
  • The JSON holds no credential.
Files
NOTICE.md  617 B
README.md  5 KB
workflow.json  8 KB

3 files, 13 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

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…

New29.4k

Guizang PPT Skill

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…

New29.8k

Claude Code Skills & Plugins

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…

New29.8k

Similar in Finance & accounting

See all in Finance & accounting

Kronos-mini

NeoQuasar · Kit

Forecasts financial candlestick series with a 4.1M-parameter foundation model trained on data from over 45 exchanges. For quant researchers and developers who…

New