SheetBrain Documentation
Everything SheetBrain does, how it does it, and how to get the most out of it. This page is the single reference — bookmark it and use the table of contents to jump around.
1. Getting started
Install: Google Workspace Marketplace listing. No credit card, no API key, works with any Google account including free Gmail™.
Your first sidebar open
Open any Google Sheet, then Extensions → SheetBrain → Open sidebar. When you open the sidebar:
- On a new install, Guided First Check starts an inline do-flow — scan your sheet, jump to the highest-impact issue, and fix or review it — so you see the product working on your own data. Blank sheets start with a one-click live demo instead.
- The sidebar lands on the Health tab. Click Scan sheet on the Check tab to scan the active sheet; if it finds issues, a banner appears inviting you to review them.
- Your free-tier usage (15 AI calls per month) is loaded — visible at the bottom of the sidebar. Sheet Check scans don't count against this; they're always free.
Two places you can drive SheetBrain
- The sidebar — three tabs (Health, Review, Generate) with sub-tabs, buttons, and forms. The primary interface.
- Directly in cells — six custom functions (
=SHEETBRAIN_HEALTH,=SHEETBRAIN, etc.) that work in any cell without the sidebar open.
2. Sidebar tabs
The sidebar has three top-level tabs, each with sub-tabs where relevant. Keyboard shortcuts switch between them (see §8).
Health Default tab
The spreadsheet-quality tab. Opens to Check by default; scans the active sheet when you click Scan sheet. Two sub-tabs:
- Check — deterministic Sheet Check scan for broken refs, visible formula errors, mixed data types, duplicate lookup keys, formula pattern outliers, and missing copied formulas. Free, unlimited, no AI call. See §3.
- Repair — schema-drift detection and batch rewrite for formulas affected by column moves or renames. See §4.
Review
For understanding and fixing formulas that already exist. Two sub-tabs:
- Explain — paste any formula, get a plain-English breakdown. Uses 1 AI call per explanation.
- Debug — paste a broken formula + the error (
#REF!,#N/A,#VALUE!), get a root-cause analysis and proposed fix. Uses 1 AI call per debug.
Generate
Describe what you want in plain English, get a formula back. Reads your actual column headers, data types, and sample rows before generating so the formula references your real data. Includes sheet-targeting modes (Auto / Single / Multi) — see §6. Uses 1 AI call per generation.
3. Sheet Check
A one-click deterministic scan for six spreadsheet bug classes. Every scan is free and unlimited — no AI call, no quota hit. Runs on the active sheet by default.
What it detects
| Rule | What triggers it | Example |
|---|---|---|
| Broken reference | A formula whose body contains #REF!, or a VLOOKUP/HLOOKUP/INDEX whose column index exceeds the referenced range's width. |
=VLOOKUP(A2, B:C, 3, FALSE) — the range is 2 columns wide, index 3 is out of bounds. |
| Visible formula error | A formula cell returns #N/A, #VALUE!, #DIV/0!, #NAME?, #NUM!, #NULL!, or #ERROR!. |
=VLOOKUP(A2, B:C, 2, FALSE) returns #N/A because the lookup key is missing. |
| Mixed data types | A single column contains both numeric values and number-like strings (e.g. 15000 and "15,000"), breaking SUMIFS/AVERAGE. |
Column G: row 2 is 15000, row 3 is "15,000" (text), row 4 is 15000.50. Aggregations under-count. |
| Duplicate lookup keys | A column used as the source for VLOOKUP/XLOOKUP contains the same key in 2+ rows. | Column A is an SKU list with SKU-001 in rows 2 and 3 — VLOOKUP will silently return the first match only. |
| Formula pattern outlier | A formula in a same-column repeated run deviates from the clear copied pattern used by nearby formulas. | Rows 2–7 use =B*C-style revenue formulas, but one row uses addition instead of multiplication. |
| Missing copied formula | A hardcoded or blank cell sits inside a repeated formula column, with two matching formulas immediately above and two immediately below. | Rows 2, 3, 5, and 6 all use copied revenue formulas, but row 4 has no formula. |
Deterministic fixes vs. LLM fixes
When a finding has an obvious deterministic fix (e.g. "column G has mixed numeric/text — wrap in VALUE()"), SheetBrain proposes it directly. Some pattern findings are review-only because an auto-fill could overwrite intentional customization. For eligible formula findings where the right fix requires judgement, you can optionally click Propose fix with AI on that specific finding — only that one click counts against your AI quota.
Scan the active sheet
Open Health → Check and click Scan sheet; findings surface as a banner. If you dismiss or view the banner, we remember for the rest of the day and won't re-nag. Closing the sidebar without engaging doesn't count — we re-show the banner next open.
4. Schema Repair
When columns get renamed, moved, or deleted, formulas that referenced the old position silently break. Repair detects the drift and proposes a batch of safe rewrites.
How snapshots work
SheetBrain quietly snapshots your sheet's column layout every time a Generate or Debug call succeeds. A snapshot captures:
- Column headers (row 1 text)
- Column positions (which header is in column A, B, C, …)
- Inferred column data types (text / number / date / mixed)
Snapshots are scoped per (workbook, sheet) pair — a workbook with five sheets has up to five independent snapshots. An LRU evicts the oldest if memory gets tight.
How drift detection runs
Click Health → Repair → Scan for drift. SheetBrain compares the current sheet layout against the last snapshot and classifies each change:
- Rename — same column position, different header text.
- Move — same header text, different column position.
- Delete — header no longer present anywhere.
Every formula that references an affected column is listed in a preview dialog. Each row has a checkbox — uncheck any you don't want rewritten, then apply the batch in one click. Snapshots refresh automatically after a clean apply.
IMPORTRANGE references aren't compared). Dynamic array formulas (QUERY, ARRAYFORMULA) with complex expression bodies may be skipped. If the current sheet has more columns than the snapshot (likely added on purpose), we don't flag the additions as drift.
5. Audit reports
Run a full-workbook audit and share the results as a public URL — no login required for viewers. Great for compliance reviews, handoffs, and getting stakeholders to actually read findings.
Running an audit
Health tab → Run full audit. SheetBrain opens a consent dialog listing every sheet in the workbook with a checkbox beside each. By default all sheets are selected — uncheck any you don't want in the public report (drafts, internal helpers, PII sheets, etc.). Use Select all / Deselect all to toggle in bulk. The footer shows a running count like 9 of 12 sheets selected so you always know what's about to be published.
Click Create public link and SheetBrain scans the selected sheets, aggregates findings, and generates a shareable URL like:
https://sheetbrain.app/audits/<token>
Privacy & what viewers see
- The report shows findings only: severity, cell references, issue types, generic explanations. No cell values, no formulas, no column headers — nothing from your data ever leaves the scan pipeline.
- Sheets you didn't check in the consent dialog are never scanned and never appear in the report — not even their names.
- Current reports include an Issued report seal and Issued metadata signature. The HMAC seal and status-only Ed25519 signature verify issued report metadata without showing the seal input, signature value, or signature manifest.
- Current reports and
/verifypages include an Audit evidence packet and Recipient review checklist: lifecycle status, seal/signature status, detector reference, expiry, scope, lineage availability, privacy boundary, and the steps a recipient should review before relying on the audit. Browser print/save-as-PDF keeps a compact evidence summary, adds a verification footer with the report ID and verifier URL, and hides screen-only CTA clutter. - No Google account is required to view — anyone with the URL can open it.
Managing active links
You can have multiple shared audit links live at the same time for the same workbook — for example, one sent to a compliance reviewer last week and a fresh one for today's stakeholder update. Each link is independent and fully token-scoped. Newer follow-up audits link back to the earlier report, and the earlier report shows when a newer audit has superseded it.
- Once you've created a share, an Active shared links row appears on the Health tab. Click it to open a manage dialog listing every live audit for this workbook.
- Each row reconciles status with the backend before display, then shows whether the remembered link is active, superseded, expired, or revoked. Rows also show the creation date, how many sheets were included, owner-only public activity counts when available, the URL (clickable, opens in a new tab), a copy icon, a Copy recipient summary action, a Create follow-up audit action, and a stop (trash) icon.
- A follow-up audit compares only aggregate counts and verdicts — not exact cell-level fixes — so the public report can show remediation progress without exposing prior formulas, values, or headers.
- The stop button revokes just that one link — the others stay live. The UI stays on the dialog so you can clean up several in a row.
- The share you just generated is highlighted with a green NEW badge so it's easy to pick out from older ones.
Expiry & revocation
- Links auto-expire 30 days after creation. A weekly sweep (runs alongside the Sunday digest cron, 09:00 UTC) deletes expired reports from the database.
- Revoking via the manage dialog writes a revocation tombstone. The full public report URL returns a 404 on the next request, while the report's
/verifypage shows Revoked without findings or per-sheet details. - Tokens are cryptographically random — there's no way to enumerate other users' audits or guess a valid one.
6. Generate & sheet targeting
The Generate tab writes a formula from your plain-English description, using your actual column headers and data types as context. By default it reads the active sheet only, but you can widen scope with targeting modes.
Three sheet-targeting modes
| Mode | What it does | When to use |
|---|---|---|
| Auto (default) | Uses the current sheet as primary context. If your query mentions data that lives on another sheet, SheetBrain includes that sheet's schema too. | Most of the time. Lets SheetBrain decide. |
| Single | Locks context to one sheet you pick — even if the active sheet changes. | You want the formula to reference exactly one tab, regardless of where you're currently sitting. |
| Multi | Combines up to 5 sheets as context. SheetBrain can produce formulas that join or aggregate across them. | Cross-sheet lookups, consolidating rollups, multi-source SUMIFS. |
What's sent to the LLM
SheetBrain sends: column headers, inferred data types, optionally a few sample rows (if you enable sample sharing), and named ranges. We never send the full sheet contents. Samples are opt-in and only used to improve accuracy on ambiguous queries.
History & re-apply
The sidebar keeps your last 3 formulas on the free tier or 10 on Pro. Click any history entry to re-apply to the current cell. If you try to re-apply a formula on a different sheet than where it was generated, SheetBrain warns you explicitly.
7. Custom functions
Six functions that work directly in any cell — no sidebar required. Two are free and deterministic (=SHEETBRAIN_HEALTH, =SHEETBRAIN_ISSUES). Four use AI and count 1 call per invocation.
=SHEETBRAIN_HEALTH(range, [recalc]) Free
Returns a 0–100 health score plus issue count for the given range, e.g. "87 — 2 issues". The score starts at 100 and drops 15 per error and 5 per warning, with a floor at 0; "100 — All clear ✓" means no findings. Pass the range as an unquoted reference — quoted strings are rejected with a usage hint. Pass NOW() or any volatile reference as the optional second arg to force Sheets to recompute.
Example: =SHEETBRAIN_HEALTH(A1:G20)
=SHEETBRAIN_ISSUES(range, [recalc]) Free
Spills a 2D array of every finding in the range: header row + one row per issue (severity, cell, type, explanation). Perfect for building a live health dashboard inside your own spreadsheet.
Example: =SHEETBRAIN_ISSUES(A1:G20)
=SHEETBRAIN(query) 1 AI call
Generate a formula from plain English. Reads the current sheet's headers as context (same as the Generate tab). Returns a string that Sheets interprets as a formula if the first character is =.
Example: =SHEETBRAIN("average price for Electronics") → =AVERAGEIF(E:E,"Electronics",F:F)
=AI_EXPLAIN(formula) 1 AI call
Plain-English explanation of any formula, returned as a cell value. Paste a cryptic SUMPRODUCT and get a one-sentence description.
Example: =AI_EXPLAIN("=VLOOKUP(A2,B:D,3,0)")
=SHEETBRAIN_EXTRACT(text, schema) 1 AI call
Extract structured fields from unstructured text. schema is a comma-separated list of field names; output spills as a 2-row table (header row, value row).
Example: =SHEETBRAIN_EXTRACT("John, 32, NYC", "name, age, city") → spills name | age | city / John | 32 | NYC
=SHEETBRAIN_CLASSIFY(text, labels) 1 AI call
Classify text into one of a set of candidate labels you supply. Use for sentiment tagging, ticket routing, survey bucketing.
Example: =SHEETBRAIN_CLASSIFY("This is frustrating", "positive,negative,neutral") → negative
_HEALTH and _ISSUES (NOW(), random ref, etc.) is a per-cell alternative.
8. Keyboard shortcuts
All shortcuts work whenever the sidebar has focus.
| Shortcut | Action |
|---|---|
| ⌘1 / Ctrl 1 | Switch to Health tab (restores last sub-view: Check or Repair) |
| ⌘2 / Ctrl 2 | Switch to Review tab (restores last sub-view: Explain or Debug) |
| ⌘3 / Ctrl 3 | Switch to Generate tab |
| ⌘⇧F9 / Ctrl⇧F9 | Force all custom functions to recalculate (Google Sheets built-in; works outside the sidebar too) |
| Enter | Submit the current tab's form (Generate query, Explain formula, Debug formula + error) |
| Esc | Dismiss banners and overlays (scan results banner, upgrade dialog) |
9. Quotas & pricing
What counts against your quota
- Counts (1 call each): Generate, Explain, Debug, Extract, Classify,
=SHEETBRAIN,=AI_EXPLAIN,=SHEETBRAIN_EXTRACT,=SHEETBRAIN_CLASSIFY, and "Propose fix with AI" on a specific Check finding. - Never counts: Sheet Check scans (deterministic),
=SHEETBRAIN_HEALTH,=SHEETBRAIN_ISSUES, Schema Repair scan (the rewrite proposal is one AI call batched for the whole set, not per-formula), viewing audit reports.
Plans
| Plan | AI calls / month | Price | Notes |
|---|---|---|---|
| Free | 15 | $0 | No credit card. Unlimited Sheet Check scans. 3-entry history. |
| Pro | 1,000 | $9 / month | 10-entry history. Email support. AI included — no API key needed. |
Reset cadence
Quotas reset on the 1st of each month in UTC. At that moment, your count returns to 0 and the full limit is available again. No rollover.
What happens at the limit
Further AI calls return a quota_exceeded error instead of silently failing or charging. The sidebar shows an upgrade prompt. Sheet Check, =SHEETBRAIN_HEALTH, and =SHEETBRAIN_ISSUES continue to work — they don't count against the quota.
Refunds & cancellation
See the full refund & cancellation policy. Short version: cancel anytime in one click, keep Pro access until the end of the current billing period, no cancellation fees. If an AI call fails partway through (network error, backend blip), it's automatically refunded to your quota — you never pay for a failed call.
10. Troubleshooting
A custom function returns Loading… or seems stuck
Google Sheets sometimes doesn't re-evaluate custom functions until the sheet is explicitly recalculated. Force a recalc with ⌘⇧F9 (Mac) / Ctrl⇧F9 (Windows). If it still shows Loading… after 30 seconds, the backend may be cold-starting — wait another 20 seconds and recalc again.
Sheet Check says "no issues found" but I know there are bugs
Sheet Check only detects the six specific rule classes in §3 (broken refs, visible formula errors, mixed types, duplicate lookup keys, formula pattern outliers, missing copied formulas). It does not detect semantic bugs like wrong-cell references, incorrect logic, or off-by-one errors — those need Debug (in Review). If you believe we missed a real instance of one of the six rules, email support@sheetbrain.app with a sample sheet; we treat these as P1.
Schema Repair says "no drift detected" after I moved a column
Repair can only detect drift against a snapshot it previously captured. Snapshots are taken after a successful Generate or Debug call. If you've never run Generate/Debug on this sheet, there's no baseline to compare against. Fix: run one Generate call, move your column, then re-run drift detection.
My quota shows the wrong count
The sidebar lazily loads usage on open and refreshes when it regains focus (e.g. after you return from the checkout tab). If the count looks wrong, close and reopen the sidebar, or switch away and back to the Sheets tab. The backend is always the source of truth.
A shareable audit URL returns 404
Two possible causes: (a) the report is older than 30 days and was auto-expired by the weekly sweep (runs every Sunday, UTC), (b) you (or another editor on the workbook) revoked it from Health → Stop sharing. Full report access is not restored after either case — generate a new audit URL if you need to share current findings.
I'm on Pro but the sidebar still shows "15 calls" / "Upgrade"
Plan status is cached for ~1 minute. If you just upgraded, close and reopen the sidebar, or wait a minute and switch tabs. If it persists, email support@sheetbrain.app with your Google account email and we'll force-refresh your plan within a business day.
Something else
Email support@sheetbrain.app. Include your Google account email, a short description, and a screenshot if relevant. Response time: within one business day.