They sent a spreadsheet.You owe them a backlog
Four sheets, a reference column, a description column written by someone who was in a hurry, and a priority column with three different vocabularies in it. Point a Khint agent at the file itself and every row comes back as a user story in your format, with its source reference still attached.
The sheet is not the problem.
Retyping it is
A requirements matrix is a handover format, not a working format. Nobody can build from row 114, so the first week of the project goes into a translation job: read a line, decide what it really means, write the story, invent the acceptance criteria, keep track of which rows you have already done. Two days later the client sends version 3 of the workbook and the parts you had already translated are somewhere in the middle of it. The translation is mechanical, the judgement is not, and the mechanical half is eating the week.
Row by row, by hand
Copying cells into a chat window, one screenful at a time.
The stories drift in format as the day gets longer.
The reference is lost by the third one, so the client review has nothing to hang on.
One agent, the whole file
The workbook is the input: every sheet, every row, in order.
The same format every time, because it is written into the action once.
Each story carries the reference of the row it came from.
What one row becomes
Cells kept together, structure kept, reference kept.
From REQ-114 · Must
As a visitor, I can pay for my order without creating an account, so that I am not forced to sign up to buy.
Given a filled basket, when I choose guest checkout, then I can complete payment with an email address alone.
Given a completed guest order, when I return later with the same email, then my order is retrievable.
Open question: does a guest order have to become an account after the fact?
An illustration of the shape, not a promise about wording: what comes out is whatever your action asks for.
Setting it up
Once per team, then it is one keystroke per workbook.
Write the agent once, in your team's house format
In Agents, create the action that turns a requirement line into the story your team actually writes: the role and the value, the acceptance criteria, the open question when the row is too vague to size. Its input source is set to Document rather than selected text, because the input here is a file, not something you can highlight.
Choose between asking each run and pinning the file
A client matrix that changes name every project is an Ask me each run agent: the palette opens a small picker with a drop zone, your last files and a browse button before anything is sent. The scope sheet you will reread for six weeks is a pinned one: choose it once in the editor and the shortcut goes straight to work.
Let it read the sheets, not a screenshot of them
The workbook is read locally, sheet by sheet, with the cells of a row kept together. No screenshot, no copy-paste of a column into a chat window, no silent loss of the rows that were scrolled out of view. Tell the prompt which columns matter and it can work with the structure the client sent instead of guessing at it.
Carry the reference into every story
One line in the prompt does most of the traceability work: ask for the source reference of each row to be repeated at the top of the story it produced. REQ-114 stays visible from the matrix to the ticket, which is what makes the client review possible at all. The same idea, applied to notes rather than sheets, is covered in requirements traceability.
Keep the handover in a Memory session
Start a Memory session for the kickoff and drop the sheet into it. Its content joins the working state of the session, so the actions you run for the rest of the week, the follow-up email, the questions list, the epic description, already know the vocabulary and the scope of the project without you re-explaining it each time.
File the ones that survive review
Read the set, cut what the client will have to answer first, then file the rest from the palette: select a story, pick the Jira or Linear row, confirm, and the issue key comes back to your clipboard. Nothing is created behind your back. See writing to Jira from anywhere for that half of the reflex.
A BA’s Monday, kickoff week
The workbook lands at 09:10 with four sheets and a covering message that says “let us know if anything is unclear”. You start a Memory session called Checkout rollout and drop the file into it. Then you run your story action on the Scope sheet: the picker opens, you point at the file, and a couple of minutes later you have the whole sheet as stories in your format, each one carrying its REQ reference. You read them, not the spreadsheet, which is the first time this project has been readable. Eleven of them are fine. Six have an open question the agent flagged rather than invented an answer for, and those six become the mail you send back before lunch. In the afternoon you file the eleven from the palette, one at a time, and the epic in Jira has a real backlog under it by 16:00. The mechanics of the file input are covered in running AI actions on documents, and the shape of the criteria themselves in the acceptance criteria generator.
What it will not do for you
The limits are worth knowing before the client sends version 3.
A scanned matrix is a picture, not a sheet
A workbook exported as a PDF of screenshots has no text layer, and you are told so by name instead of getting an empty answer. That file belongs to the capture path, which reads pixels: it costs one capture from your daily allowance rather than nothing.
A password-protected workbook says so
Encrypted, unreadable, too large, no text inside: each failure comes back as itself. You know whether to ask the client for an unlocked copy or to split the export, which beats a single unhelpful error covering all four cases.
Merged cells and formatting do not travel
What reaches the agent is the text of the cells, sheet by sheet, row by row. Colour coding, conditional formatting and the comment thread on cell D14 are not part of it, so a matrix whose meaning lives in its colours needs a legend column before it can be read correctly.
The file stays on your machine
Nothing is uploaded and nothing is stored in the cloud: the workbook is read locally and only the text of the action is sent to the model, exactly as it would be for a selected paragraph. The condensed summary of a large sheet is cached on your device too.
When the same sheet comes back every week
A recurring export deserves a workflow rather than a single action, because a workflow can start from a document too: pin the file, or have it ask you each time, then chain the reading step to whatever you always do next. Summarise what changed, draft the note for the steering meeting, append it to the project page in Confluence. The tools it can write to are the ones you connected on the integrations page, with credentials kept in your system keychain. And if you would rather hand back the workbook itself with its wording cleaned up instead of a text output, that is the edit the file in place option, which writes a new copy and leaves the original alone.
Common questions
Which spreadsheet files can an agent read?
Excel workbooks (.xlsx and .xlsm), legacy .xls, and OpenDocument .ods. Each sheet comes through under its own heading and each row as its cells separated by tabs, so the column order the client used is preserved and the agent can tell the reference from the description from the priority. Reading happens on your machine, with no model call and no credits: the cost only starts when the action itself runs. If the file arrives with a wrong or missing extension, which happens a lot with exports from ticketing tools, the content is sniffed rather than trusted, so it still opens.
What happens with a 900-row matrix?
Files above roughly 10 KB of extracted text are condensed once into a working summary, which is then cached against the exact content of the file and reused on every later run at no extra cost. Change one cell and it is rebuilt on the next run; change nothing and there is nothing to rebuild. That is what makes a big sheet cheap to work with repeatedly, but it is also a real limit worth knowing: a condensed version is a summary, not a transcript. When you need a story written from every single row with nothing paraphrased, work sheet by sheet or split the export into sections small enough to be sent whole.
Does it create one Jira ticket per row automatically?
No, and the page would be lying if it said so. An integration write creates one issue per run. What you get from the agent is the whole set of stories as text, in the order of the sheet: you then file them one at a time from the palette's Jira row, which drafts the issue and copies its key back to you. That is deliberate. Bulk-creating forty issues from a client matrix nobody has read yet is how a backlog gets polluted in an afternoon, and the review step is the part that has value.
Is the spreadsheet modified?
Never by a text action. The source file is opened to read and nothing else, and the stories land in your clipboard for you to paste where you want them. There is a separate option where an agent gives you back the file itself with its wording rewritten in place, and even then your original is untouched: the result is written as a new copy, keeping the styles, the sheets and the formulas around the edited text.
Let the workbook be the input
Free with 300 credits a month, about 10 AI actions a day. No credit card. Write the story action once and the next client matrix is an afternoon instead of a week.