FAQ
Is it lossless?
For what it carries, yes: values, formulas, number formats, merges and defined names convert back to .xlsx, and encoding again gives byte-identical text on the benchmark workbooks and an edge-case set. Styling, charts and the other non-goals in the specification are dropped.
Why not give the model the .xlsx?
An agent reading the raw file spends turns and tokens unpacking XML. In agent mode, handing it the Cellprose file instead cut cost per correct answer by 27% on Haiku 5.5 and 19% on Sonnet 5.5, for about one point of accuracy. See agent mode.
Does it work with models other than Claude?
The published numbers are Claude Haiku 5.5 and Sonnet 5.5 only. Savings may differ for other models and tokenizers; wider runs are planned in the benchmark protocol.
How big a workbook can it handle?
The benchmark's largest workbook has 150 rows. For long regions, a compact profile (--max-rows) keeps the first and last rows and marks what it left out.
Is there a second implementation?
Yes. A JavaScript writer in js/, written from the specification without reading the Python writer, passes the conformance kit byte for byte. It is what converts files in this site's playground.