Daily Edition Sources +8

CrewAI Moves Spreadsheet Arithmetic Out of the Prompt

The new release connects spreadsheet URLs to fixed Python queries. Agents receive a compact overview, choose a calculation and get results from the parsed table—without loading the entire file into the model’s input.

repo crewAIInc/crewAI evidence
8 source signals 1 repo 8 source signals
Evidence: 8 source signals / November 9, 2026 / Daily Edition
Open Edition Evidence below

A request to count support tickets can now take a different route through CrewAI: the model chooses a table query, and Python counts the parsed rows. The November 8 release of version 1.15.38 in crewAIInc/crewAI connects spreadsheet file URLs in an agent’s input to tools for inspecting and calculating across their contents.

CrewAI is a framework for organizing AI agents, their tools and their tasks. With its optional crewai[spreadsheets] dependencies installed, a caller can supply a direct CSV, TSV or XLSX download URL. The framework prepares a short description of the file and gives the agent two tools: inspect_spreadsheet and query_spreadsheet. The useful change is where the arithmetic happens.

Inside CrewAI’s spreadsheet test

How can a short preview yield a full-table count?

The model chooses a structured query. Pandas, a Python data library, counts the parsed table, including rows absent from the profile’s five-row sample.

Count by status · all 1,200 tickets
Open
400
In progress
400
Closed
400

Test fixture, not a live-agent run. The upstream test scripts the model’s query and mocks the download. We inspected it; we did not run it.

Count extent: 1,200 ticket rows
Sheet: Chamados

Ticket IDCurrent status
T-0000Open
T-0001In progress
T-0002Closed
T-0003Open
T-0004In progress
1,194 middle rows omitted here;
still included in the count.
T-1199Closed

The first five tickets are the profile sample. The last ticket shows the extent beyond it. IDs are not worksheet row numbers; the topic column is omitted here.

Translated from Aberto (Open), Em andamento (In progress) and Fechado (Closed). The separate Priorizacao sheet has 50 rows; this query does not count them.

Trace the count

The test supplies this fixed query_spreadsheet request. The column name below is kept exactly as written in the source.

{
  "file": "tickets.xlsx",
  "sheet": "Chamados",
  "operation": "value_counts",
  "columns": ["Status atual (slide)"]
}

The implementation selects the sheet’s parsed frame, applies any filters and omits a suspected total row for aggregates. Pandas counts the selected column’s values before the result is paginated. This fixture has 1,200 tickets cycling through three statuses, so each count is 400.

The overview already contains full-column statistics; the profile adds a five-row sample. Neither preview becomes the row input to this calculation. Headers, inferred types and saved formula values still determine what the parsed table contains.

Inspect the merge-pinned fixture rows, prescribed query and pandas count implementation.

This division is visible in the tool definitions and query implementation. The model selects from five fixed operations: retrieving rows, describing columns, counting values, grouping and aggregating, or correlating numeric columns. It supplies structured choices such as the sheet, column and filters. It does not write arbitrary Python expressions for this query tool to execute.

The preview is a map to the table

The initial overview already includes statistics computed across columns. A fuller inspection adds column types, missing values, common values and a small row sample. Those are aids to choosing the question. Filtering and aggregation operate on the parsed table before the displayed answer is shortened or paginated.

The integration tests prescribe the query through agent, task and crew entry points. This checks the intended wiring; it does not establish that a live model will select the right sheet or formulate the right question.

The release advances an existing reader. The earlier change, merged November 7, brought spreadsheet-reading code from Studio Assistant into the library and explicitly said nothing called it yet. November 8’s integration makes caller-provided URLs reach that machinery across agent entry points. Familiar table operations have become an available input path.

A calculation still needs a defined table

The parser decides what the calculation receives. It detects a header and infers column types; a caller can override the header row. Values that disagree with an inferred type can become empty. Excel formulas contribute their saved values, without recalculation: an upstream test explicitly expects an uncached formula to read as empty.

There is also a consequential convenience: aggregates omit a final row that looks like a total, and report the omission. The heuristic recognizes total labels or a numeric final value approximately equal to the sum above. Ordinary amounts of 1, 2 and 3 would satisfy that numerical rule. That is a deduction from the implementation, not a reproduction we ran. The row remains available through the rows operation.

For builders, the immediate opportunity is bounded, read-only questions over supported tables: ticket backlogs, grouped sales or column summaries. Start by inspecting the selected sheet, header and reported omissions, then compare a known count or total with the source workbook. Direct file downloads and the optional dependencies are required; this release does not establish a Studio upload rollout.

The next useful evidence is how often live agents choose the right operation and preserve its meaning in their answer. The released change already supplies something concrete: a table-computation path whose inputs and arithmetic can be inspected separately from the model’s explanation.

Diagram Punk poster
A marker-drawn spreadsheet with an omitted middle is bracketed as 1,200 parsed tickets. A scripted model selects a count-by-status query and a receipt gives three counts of 400.
Diagram Punkthe model chooses the query; pandas counts the parsed rows. The 1,200-ticket example comes from a test with a scripted model and simulated downloads.

Ask about this article

CrewAI Moves Spreadsheet Arithmetic Out of the Prompt

Article link and summary included. Continue using your ChatGPT account; you may need to sign in.

If your question doesn’t appear in ChatGPT, copy it here and paste it there.

Your immediate reaction

How did this article land?

A thumb saves immediately. Notes stay private and are discussed with the editor before shaping future articles.

Evidence Trail

Receipts below the story

The article above is the public narrative. This section keeps the source trail and limits on the same page.

Edition
DateNovember 9, 2026
LaneDaily Edition
Confidence87%
Sources8
ReposcrewAIInc/crewAI

Primary Evidence

  • CrewAI release 1.15.38 — November 8, 2026. **Shows:** the released feature list includes reading spreadsheet URLs in agent input with tools over their rows.
  • PR #9234 — caller-URL integration. **Shows:** the optional crewai[spreadsheets] integration, affected entry points and explicit separation from Studio-side work. Its author reports a token/count comparison on one 1,250-row workbook; this article does not treat that comparison as independently measured performance.
  • PR #9184 — earlier spreadsheet reader. **Shows:** the internal engine, ported from Studio Assistant, was merged November 7 with agent wiring still to follow.
  • Input routing at the integration merge. **Shows:** caller-input URL discovery, dependency checks, download handling and addition of the overview and tools.
  • Tool definitions and overview, query and profile implementation. **Shows:** structured parameters, five fixed operations backed by pandas, full-table statistics, a separate profile sample, filtered computations, output limits and heuristic total-row omission.
  • Reading implementation. **Shows:** supported formats, header and type inference, saved formula values and parser limits.
  • Agent integration tests. **Shows:** prescribed spreadsheet queries through multiple entry points using simulated downloads and scripted models. The main fixture has 1,200 tickets, 400 in each status, plus a separate 50-row sheet.
  • Reading tests, answer tests. **Shows:** expected treatment of uncached formulas, parsed-frame counts and totals, filters, aggregate results and final-total-row exclusion.

Evidence Limits

We inspected public code, release notes and tests. We did not run upstream tests, a live model, a spreadsheet download or a performance comparison. Scripted-model integration tests establish wiring for specified queries, not real-model query selection or natural-language accuracy.

Computations use the parsed rows of supported sheets. Inferred headers and types, saved formula values and heuristic total-row detection affect that table and its aggregates. The example amounts 1, 2 and 3 satisfying the total-row rule is a code-derived illustration, not an executed reproduction. Rows can expose a suspected total that aggregates omit; the query schema has no include-total override.

Supported automatic URL inputs are CSV, TSV and XLSX direct downloads with the optional dependencies installed. The reader limits inputs to 50 MiB, 50 sheets and 2,000 columns per sheet, with cell and unpacked-archive limits; discovery accepts at most ten spreadsheet downloads under a shared deadline. Output pages and text are capped separately from the underlying computation. This is read-only analysis, not workbook editing or formula recalculation. Share-page URLs and a deployed Studio upload integration are not established by these sources.

The change does not establish universal correctness, general token savings, external adoption or improved model reasoning. A model still chooses the query and presents the answer.