Security questionnaire response desk for RFP spreadsheets
Point it at the spreadsheet a prospect sent, get a review queue of drafted answers with the source page behind each one, then export only what you approved.
Build me an app for answering the security questionnaires and RFPs that prospects send us as spreadsheets. Today someone on my team opens the customer's file and hand writes every answer by copying old ones out of our Notion answer library. I want one screen where I point the app at the customer's sheet, get a drafted answer for every question with the source it came from, review them one by one, and export only what I approved.
Start with a questionnaire list page showing every questionnaire we have worked on, with the customer name, the tab, how many questions it has, and how far through review it is. A New questionnaire button asks for the Google Sheet the customer sent, then lets me pick the tab and map the columns: which column holds the questions, which column the answers get written into, and optionally a column holding the customer's word limit or a category. Load the questions with the Google Sheets Get Values operation over the range I chose, and keep the row number for every question so I can write answers back into the right cells later. Store each question as its own record so review state survives me closing the tab.
The main surface is the review queue for a single questionnaire: one card per question, in sheet order. Each card shows the question text as the customer wrote it, the drafted answer in an editable box, the Notion page the answer was built from as a clickable link, the date that source answer was last approved, and the word count against the customer's limit if they set one. Each card has Approve, Save edit, and Reject actions, plus a Needs a human state. Let me filter the queue by state so I can work only the undrafted ones, only the flagged ones, or only what is waiting on my approval, and record which reviewer approved each answer and when.
Pin a progress bar to the top of the questionnaire showing drafted, approved, rejected, needs a human, and still outstanding, as counts and as a share of the tab. This is the number people ask about in deal reviews, so it should be readable at a glance.
Put a Draft this whole tab button on the questionnaire. It kicks off a background agent that works through the questions one at a time. For each question the agent searches our Notion answer library with the Query a Data Source operation to find the closest previously approved answers, and pulls the body of the most relevant pages with Retrieve Block Children so it is drafting from the real text of our answers and security documentation rather than just page titles. It then calls Groq Create Chat Completion to write the answer from that retrieved material, in our house voice, inside the customer's word limit for that row when one is set. Every draft it produces lands in the review queue with the source page recorded against it, and never goes anywhere near the customer's sheet on its own. Show live progress while it runs so I can watch the queue fill up, and let me start reviewing the early cards before the run finishes.
Speed matters here because someone is usually sitting there waiting: a two hundred question tab should draft while they wait. For very large questionnaires where that is not realistic, give the agent a batch path that writes the per question requests as a JSONL file, sends it with the Groq Upload File and Create Batch operations, polls Retrieve Batch until the results come back, and then lands those drafts into the same review queue. The reviewer experience should be identical either way.
When the tab is reviewed, an Export approved answers button writes the answers back into the customer's spreadsheet with the Google Sheets Batch Update Values operation, targeting the answer column at each question's original row. Only approved answers get written. Rejected, still drafting, and needs a human rows are left untouched, and the app tells me exactly how many rows it wrote and how many it deliberately skipped, so nobody assumes a blank cell means the app failed.
Approving an answer that is not already in our library should offer to file it there using the Notion Create a Page operation, writing the question, the approved answer, the approving reviewer, and the approval date into the library database. That is what makes the next questionnaire faster, so make it one click from the review card rather than a separate chore.
Three rules matter more than anything else in this app, so bake them in rather than leaving them to the reviewer. First, every draft must show the source page it came from, so a reviewer can open it and check the claim; a draft with no source is not acceptable output. Second, when nothing in the library genuinely covers a question, the agent marks it as needing a human with a short note on what is missing, instead of guessing an answer that reads plausible. Third, show when each source answer was last approved and visibly flag anything older than a staleness threshold I can configure, because the real risk with automating this work is confidently reusing a security claim that stopped being true.
What does this prompt do?
- Load a security questionnaire or RFP straight from the Google Sheet the customer sent you, telling the app which column holds the questions and which column the answers belong in
- Draft an answer to every question from your existing Notion answer library, in your own voice and inside the word limit the customer set
- Give each question its own review card showing the drafted answer, the library page it came from, and when that answer was last approved, so a human can check it before it goes out
- Flag anything your library does not actually cover as needing a human instead of guessing at it
- Write only the answers you approved back into the customer's spreadsheet, and file newly approved answers into your library so the next questionnaire reuses them
What do I need to use this?
- A Google account with access to the questionnaire spreadsheets customers send you
- A Notion workspace containing your approved answer library and any security documentation you answer from
- A Groq account for drafting the answers
- Roughly an hour to point the app at your library the first time and check the voice of the first few drafts
How can I customize it?
- Change the house voice and answer length rules, including how the app handles per question word limits set by the customer
- Adjust when an answer counts as stale, so claims approved longer ago than your threshold get called out for a fresh look
- Decide what counts as good enough source material before the app will draft at all, versus marking the question for a human
- Choose which reviewers can approve answers and whether approving also files the answer into the library
FAQs
Do I have to reformat the spreadsheet the customer sent?
Will it send answers to the customer automatically?
How do I know an answer is not made up?
What stops us reusing an answer that is now out of date?
How long does a big questionnaire take?
Does our answer library get better over time?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
Open one screen to find every unavailable, stale, or low-battery device in your smart home, see which hub is really at fault, and clear out the dead entries in bulk.
Stop rewriting the same security answers for every deal.
Turn the questionnaire in your inbox into a review queue of sourced drafts, and send back only the answers your team approved.