Data processing
Crosstabs is built around a local-first analysis flow. This page documents what is processed locally and what can leave the browser.
Last updated
Local workflow
Files opened in the browser are parsed and analyzed on your device, and saved projects stay in this browser. Oversized work is blocked rather than sent to a server.
Every local processing stepHide detail
- Files opened in the browser app are parsed on your device into rows and variable metadata.
- Crosstab computation, filters, weighting, recodes, statistics, charts, and exports are produced from browser state.
- Saved projects use versioned browser IndexedDB when available, with localStorage as a compatibility fallback. Saved analysis templates use localStorage on the same device and browser profile.
- A saved project includes the parsed source rows and current analysis settings so it can be reopened after a reload. It is not uploaded or synchronized to another device.
- New saved-project navigation keeps the local project identifier after #, which browsers omit from HTTP requests. A legacy ?project= link is consumed and removed from the address and history entry in the browser after its initial page request.
- A full portable .ctproj package contains that complete project and its rows. A definition-only manifest omits rows, filenames, category values, open-end response evidence, and repair inverse snapshots; neither package type is encrypted.
- There is no server or hybrid fallback for an oversized workload. Crosstabs blocks the run and asks you to reduce the table or split the file instead of uploading respondent data.
AI and automation boundary
Crosstabs runs no hosted generative AI model. The local MCP works inside your own process, and no Crosstabs service accepts respondent files.
Hosted, local and API boundariesHide detail
- Crosstabs does not run a hosted generative AI model or send browser projects to a model provider.
- The separate local MCP package lets an AI or local agent work with files and projects inside a user-run process on that device.
- The public statistical JSON API and the aggregate-only MCP accept explicitly supplied aggregate matrices and fixed evidence lookups; they store no rows or projects.
- Browser findings and method disclosures are generated from the completed local table and remain reviewable without a hosted model call.
Analytics workflow
Vercel receives redacted paths, coarse product events and Web Vitals, with query strings and fragments removed. No account, user, session or attempt identifier exists to join events together.
Exactly what analytics receiveHide detail
- Production Web Analytics receives redacted page paths, referring origins, and coarse product-event occurrences. Speed Insights receives the same redacted path plus Web Vitals. Query strings and URL fragments are removed before either client sends them, /s aggregate snapshot routes are excluded, and a no-referrer policy prevents the current page URL from being forwarded when a link is followed.
- A sessionStorage activation record contains only a coarse surface, upload/sample/manual input, started/ready/completed stage, acquisition-provider category, and landing-cluster category. It stays in the current tab, contains no account, user, session, or random attempt identifier, and is not synchronized between tabs or devices.
- Activation properties never include filenames, project identifiers, spreadsheet cells or rows, variable and category labels, filter values, AI text, or aggregate share fragments.
- Each activation stage is an independent aggregate occurrence. Occurrence ratios can indicate direction within one reporting window, but they are not conversion rates and cannot be joined into a user, session, or attempt journey.
- Vercel processes analytics and performance data under its current privacy and retention terms. Crosstabs does not copy these events into an application database.
Exports and retention
Reports carry their audit settings, CSV exports neutralize formulas, and imports are checksum-verified before anything changes. With no accounts, retention is in your hands: delete projects or clear site data.
Export and retention detailsHide detail
- PDF and XLSX reports include audit metadata such as source file name, filters, weight variable, missing-value setting, report title, analyst, and generated timestamp.
- CSV exports sanitize spreadsheet formula prefixes to reduce spreadsheet-injection risk.
- Portable-project import buffers the JSON locally, verifies SHA-256 checksums and schema versions, previews migration, and creates a new project id. Verification failure does not mutate browser storage.
- Crosstabs does not currently provide account-level retention controls because the public app has no account system. Aggregate share links are not server-stored and cannot be expired or revoked.
- Local projects can be removed from the home page or workspace. Clearing Crosstabs site data in the browser removes local projects and templates.
Discontinued hosted MCP
The separately deployed hosted MCP was discontinued on 2026-10-28. It no longer accepts connections or uploads, and no current Crosstabs route sends respondent files to a server.
What changedHide detail
- Until 2026-10-28, an optional hosted MCP accepted respondent files only after explicit upload consent, in temporary workspaces whose access expired 24 hours after creation.
- That service no longer accepts new connections, workspaces, or uploads. Infrastructure backups made while it ran follow the hosting provider's separate retention; expiry was not a promise that every backup copy was erased within 24 hours.
- For AI-assisted analysis, use the local MCP, which runs on your device, or the browser workspace. Your chosen AI client or provider has its own policies for tool inputs and results.