> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trycactus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Preparing documents

> Trim files before uploading - smaller, focused documents process faster and extract more accurately.

Extraction reads **every sheet** in a workbook - including hidden ones. The
price is fixed per document, but processing time scales with how much
content we have to scan. A focused single-purpose file finishes in a few
minutes - nearer ten for a rent roll, which runs a second consolidation
pass; a 90-sheet modeling workbook can take much longer or fail validation
entirely.

## Send the document, not the model

The most common slowdown we see: a rent roll or T-12 embedded inside a
larger underwriting model - one summary sheet up front, dozens of
per-property or scratch tabs behind it. The extractor has no way to know
which tabs you care about, so it parses all of them.

Before uploading, copy just the relevant sheet(s) into a fresh workbook:

1. Right-click the sheet tab → **Move or Copy** → to a new workbook
   (or select the data range and paste into a blank file).
2. Save as `.xlsx` and upload that file.

This also strips stale formatting that can inflate a sheet's apparent size
(a sheet with 60 real rows can claim 1,000+ used rows internally, and the
extractor must scan the claimed range).

## Checklist

* **One document type per file.** A rent roll and a T-12 in one workbook
  should be two uploads with the correct `declared_type` on each - they're
  extracted by different pipelines.
* **One property per file.** Portfolio workbooks with a tab per property
  extract best as one focused file per property.
* **Delete unused sheets - don't hide them.** Hidden sheets are still
  scanned and parsed.
* **Keep the extension truthful.** A file saved as `.xls` that is really
  `.xlsx` (or a renamed PDF) fails validation. Re-save from your
  spreadsheet application if you're unsure.
* **Keep totals and headers.** Trim *sheets*, not rows: leave the table's
  header rows, month columns, and totals intact - they're used to validate
  the extraction.

<Note>
  Documents that fail validation are rejected with a `422` and **never
  charged**, and extractions that fail during processing are automatically
  refunded. Trimming isn't about cost - it's the difference between results
  in \~2 minutes and results in 20+.
</Note>
