A worked example: 12 CSV files, 30 megabytes, one prompt. Why this would crush a chat-based AI — and why AI in SharePoint just runs it.
The demo uses a fake sales dataset for a fake store over one year. Twelve CSV files, 35 columns each, nearly 10,000 rows per file — about 72,000 rows in total. Roughly 30 megabytes of structured data.
The prompt does not ask the agent to look at one file or sample results. It asks the agent to read all 12 files, generate a full dataset across them, analyze it, and build a complex interactive report. About seven minutes later, a live HTML report drops into the library — revenue, transactions, units sold, loyalty-card insights, store-by-store margin analysis, hour-by-hour transaction density.
Current LLM context windows cannot fit 30 megabytes of CSV. Even if you forced it in, the model would get confused, the math would degrade, and you would see classic hallucination — numbers that look plausible but do not reconcile to the source.
This is the "too much information" trap. The bigger the dataset, the more tempting it is to dump it all into the prompt — and the more catastrophically the LLM degrades. RAG systems try to dodge this by retrieving a few relevant chunks, which then misses anything outside those chunks. AI in SharePoint dodges it differently: by never asking the model to remember the data in the first place.
When the agent reads files, the content does not travel into the context window. It lands in tool storage — a server-side dataset the agent can reference by handle. The model only sees metadata: "this file has 35 columns and 6,000 rows."
The key parameter in the read tool call is content_return: false. Translation: "store the bytes server-side, give me a pointer, don't burn my context." That single flag is what lets the agent operate on gigabyte-scale corpora without ever overflowing its window.
The strawberry example sums this up. Ask an LLM "how many Rs are in strawberry" and many models will get it wrong. Ask the same LLM to write code that counts the Rs and it will produce a correct, repeatable answer every time.
In the 72K-row demo, the agent writes JavaScript that aggregates revenue, joins on store IDs, computes margins per category, and bins transactions by hour. None of those aggregates pass through the model — they are produced by the code and only the final summary structure (a 27 KB JSON file of analytics) gets used downstream.