Questionnaires — fill an .xlsx from your knowledge base
Upload a security questionnaire, RFP, vendor DDQ or audit fieldwork sheet. Pick the question column with one click, get back the same file with answers filled in and the original formatting intact.
The Questionnaires tab is the browser equivalent of the Excel add-in's Answer questionnaire skill — same per-row LLM call, same KB grounding, same citations. The difference is the workflow: you upload the file instead of editing it in Excel, and you download a filled copy when it's done. The original cell formatting, table styling, column widths, charts and any other tabs in the workbook all carry through.
Questionnaires lives in the sidebar — click the document icon labelled Questionnaires. Every run shows up here for the whole tenant — analysts run the file, reviewers download the filled copy from the run row when it's ready.
When to use the browser flow
- You don't have Excel desktop. The add-in needs Office 365; the browser flow needs nothing.
- Mac / Chromebook users on your team. Same reason.
- The file just needs to round-trip. Procurement sends an .xlsx, you fill it, you send it back. The browser flow is built for this — the downloaded copy looks exactly like the file you uploaded, with answers in the cells you mapped.
- Async team handoffs. Analyst uploads + runs; senior reviewer opens the detail page later, walks the per-row results, downloads the filled file when satisfied.
- You want a persistent record of every questionnaire you've answered, with per-question token usage and the originating agent.
Run a fill
Step 1 — pick agent + drop the file
Sidebar → Questionnaires → + Fill a questionnaire. Pick the
agent (the project scope is the corpus to answer from) and drop the .xlsx.
Click Continue. The server parses every tab in the workbook and shows you
what it found.
Step 2 — pick the sheet and the columns
The modal expands to show:
- Sheet tabs across the top — one for each sheet in the workbook, with a row count next to each. Click any tab to switch. Knowledge auto-picks the sheet with the most populated columns × most data rows (usually right for vendor questionnaires that have a cover sheet + a "Questions" tab).
- Column cards — one card per column showing the detected header text and the first three sample values. Four small buttons let you tag each column with a role:
| Role | What it does | Required? |
|---|---|---|
| Q Question | Cells in this column become the per-row question sent to the agent. | Yes |
| A Answer | The agent's answer is written into this column. | Yes |
| Src Sources | A short list of cited documents (e.g. [1] policy.pdf p.12; [2] soc2.xlsx) is written into this column for each row. | Optional |
| Ctx Context | The cell in this column for each row is passed as extra context to the agent — useful when the question is short and a sibling column adds detail (e.g. "Control description"). | Optional |
Question and Answer are pre-suggested by Knowledge (longest-text column → Question; first empty column to its right → Answer). For most well-formed questionnaires you don't need to change anything — just click Fill.
Sheet tabs and column samples mean you never have to open Excel side-by-side to figure out which columns are which. If you misclick a role, click the same role again on the same column to unassign it, then click it on the right one.
Step 3 — run + download
Click Fill. The pipeline runs row-by-row server-side. Plan on ~5 seconds per question; a 50-question file finishes in roughly 4 minutes. Keep the tab open. When it's done, the detail page shows:
- A progress bar (handy for partial runs — if anything errored, the bar is still complete but the error count is non-zero).
- A Download filled xlsx button at the top right.
- One card per row showing the question, the answer (or the error), and the cited sources.
What survives the round-trip
The downloaded file is the same xlsx you uploaded — answers injected into the cells you mapped, everything else byte-for-byte identical. Specifically:
- Column widths and row heights
- The original header row styling, including bold + fill colour + Excel table filters
- Other tabs in the workbook
- Cell fonts, borders, alignment, number formats
- Conditional formatting, merged cells, charts, named ranges
- The styling on the answer cells themselves (yellow fill, etc.) — answers inherit the cell's existing style
If an answer cell didn't exist in the original file (truly blank), Knowledge creates one with default styling.
Merged cells in the answer column are a known limitation. Excel only renders the top-left cell of a merged range; writes to the non-top-left of a merge can be silently ignored. If your template uses merged answer cells, unmerge them before uploading.
Errors and partial runs
If a single row's LLM call fails (rate limit, model timeout, content filter), the row's
status becomes error and the answer cell in the downloaded file reads
ERROR: <message>. The run keeps going for every other row. You can spot
the error count on the detail page header and find the specific rows by status colour.
If every row errored, the run's overall status is failed and no output file is generated.
Size cap and how it compares
| Question | Browser flow | Excel add-in |
|---|---|---|
| Max rows per run | 100 (synchronous) | 500+ (client-driven, pausable) |
| Installs needed | None | Office 365 desktop + add-in |
| Multi-tab files | Visual tab picker | Active sheet only |
| Column picking | Visual preview + click-to-assign | Type Excel range |
| Output | Filled-copy .xlsx download (formatting preserved) | In-place writes to the open workbook |
| Team review queue | Yes — every run stays in this list | Yes — same database; Excel runs also show here |
| Best for | ≤100 q, anyone on the team, file round-trip | Large questionnaires (CAIQ at 240+), Excel power users |
Both paths hit the same agent — model, prompt, scope and budget are identical regardless of which UI you used.
Agent recipes that pair well
Same playbook as the Excel add-in — see the Excel section of the add-ins guide for ready-to-paste system prompts:
- RFP responder — JSON output, low temperature, scoped to a Bid library project.
- Security questionnaire responder — defensive system prompt ("abstain if not in evidence"), grounding mode on, JSON output.
- Audit evidence mapper — output schema with {evidence_summary, document_name, page_numbers, control_owner}; one row per auditor control.
- Contract clause comparator — output schema with {playbook_position, contract_position, deviation, severity}; one row per clause.
Troubleshooting
"No non-empty cells found in column B"
The parser scanned the chosen sheet's column B and found nothing. The error message lists which columns do have content with a sample value — re-run picking that column. If the file has multiple tabs, double-check you're on the right tab (the one with the questions, not the cover sheet).
"This questionnaire has more than 100 questions"
The browser flow caps at 100 questions per run. Either split the file into 100-question chunks and run each, or use the Excel add-in which doesn't have this cap (it runs client-side from your Excel desktop).
"Preview expired or not found — re-upload the file"
Previews are cached server-side for 1 hour. If you started the flow, walked away for the afternoon, and came back to click Fill, the cache is gone. Re-upload — the column picks you made aren't preserved.
The downloaded file is missing my header row formatting
It shouldn't — surgical writes preserve everything outside the cells we touched. If you see formatting loss, check that the source file actually had the formatting before upload (some "templates" carry the formatting in a separate styles file that the OOXML reader doesn't apply). Open the source file in Excel and verify; if formatting is there, please send the file to support so we can debug.