All 67 builds

Running the business

Answer questions from your docs

A team that keeps its real answers in Google Drive ends up pinging whoever wrote the doc, because searching Drive is slow and nobody trusts what search turns up. I built the workflow below to index a Drive folder every night, answer questions from the retrieved text only, and say plainly when nothing matches well enough.

The question
this build answers

How do I let people ask questions against our own Google Drive documents and get an answer with a citation, not a guess?

From the first trigger
to the finished job.

The working version, step by step.

  1. Index the folder every night

    I set up a nightly schedule that lists the Drive folder and checks each file against an index table to see what's actually changed. Only new or changed files get downloaded, split into chunks and embedded, with the file name, its link and its last-modified date saved on every chunk.

  2. Prove the write landed

    Before marking a file indexed, the workflow reads the chunk straight back out of the vector store, which confirms the write actually happened. I added that check because a download, an embed or a readback can fail, and I wanted a reason logged rather than a silent skip.

  3. Retrieve before answering

    When someone asks a question, the workflow retrieves the closest matching chunks first and checks how old the best one is against a staleness window I built into Settings. Below the match threshold, it says so plainly and names what got searched.

  4. Answer from the retrieved text only

    Only once there's a good enough match does the model answer, using that retrieved text and nothing else. Citations get attached before anything is sent, and I made that a hard rule in the code: if the source is old, the reply says so and names the file.

  5. Log every question

    Every question is logged, whether it was answered or not, along with which files were cited. That log is how you find out which documents people actually need and which ones are missing.

Going through n8n's review

Answer questions from your own documents with citations and a staleness warning

This one is going through n8n's review. My creator page lists every template of mine that's already live, so you can see what else is available while this one clears.

See my templates on n8n

Who this is for

I built this for a team that keeps its real answers in Google Drive: policies and SOPs, pricing sheets, onboarding docs. If your team asks the same handful of questions in Slack every week and the answer already lives in a doc somewhere, this replaces that ping.

Where the honesty is enforced in code

I put the threshold check and the staleness check in plain code, ahead of the model. A model asked nicely to admit when it doesn't know still sometimes doesn't, and a code check that decides first catches that gap before an answer ever gets composed.

What it costs to run

Indexing runs once a night against whatever changed, and answering costs one retrieval plus one model call per question. The vector store here is in-memory, which suits a single n8n instance and one team's documents, and I'd swap it for Pinecone, Supabase or Qdrant to share it across more than one instance.

Before you spend anything

The fit matters.

Who should not build this

If your documents change constantly through the day, a nightly index means an answer can lag a same-day edit; you'd want a shorter schedule or a webhook-driven reindex instead.

If nobody actually asks the same questions twice, there's no repeat ping to save, and this is overhead for a problem you don't have yet.

Yours to keep

What lands
on your desk.

  • The workflow set up in your own n8n, reading your own Google Drive folder
  • Three Data Tables for the file index, the query log and the indexing runs, columned as the setup note specifies
  • Your similarity threshold, staleness window and retrieval count written into one Settings node
  • A chat panel to ask questions against, with every answer logged

A few useful
answers.

Can it answer from something outside my documents?

It only answers from text it retrieved from your own indexed documents, and when nothing matches well enough it says so plainly.

How does it know a document is out of date?

Every chunk carries the file's last-modified date as metadata. The workflow checks the age of the best match against a staleness window you set, and names the file if the answer might be stale.

How often does it re-index?

Once a night, and only files that actually changed get downloaded, chunked and re-embedded, so an unchanged file costs nothing that run.

What happens if indexing a file fails?

It's logged with a reason in the same table as a successful index, never silently skipped, so a failed file is something you can see and fix.

Make this work for you

Your tools.
Your working version.

Want this built and handed over working? Tell me what your version needs to do. One line is enough to start.

Start a brief