Purpose
Review an Airtable base or view for spelling mistakes, typos, inconsistent values, incomplete fields, suspicious formulas, and other data-quality or logical issues.
When to Use
Use when the task provides an Airtable base, table, and view URL or their opaque IDs and requests a full audit, proofreading pass, or quality review. This recipe is intended for authenticated Airtable workspaces.
Workflow
- Navigate directly to the target view using Airtable's ID-bearing URL scheme:
https://airtable.com/{base-id}/{table-id}/{view-id}?blocks=hide - If Airtable redirects to
/login?continue=...&redirectSource=liveapp, complete authentication using the user's existing login flow, then navigate again to the same direct view URL. Do not infer or fabricate any base, table, or view ID. - On the authenticated view, run this single-page extractor with
evaluate()to capture the currently rendered grid and visible metadata:(() => { const text = el => (el?.innerText || el?.textContent || '').replace(/\s+/g, ' ').trim(); const visible = el => { if (!el) return false; const s = getComputedStyle(el), r = el.getBoundingClientRect(); return s.display !== 'none' && s.visibility !== 'hidden' && r.width > 0 && r.height > 0; }; const unique = xs => [...new Set(xs.filter(Boolean))]; const headers = unique([...document.querySelectorAll('[role="columnheader"], [data-testid*="column-header"], [class*="columnHeader"]')] .filter(visible).map(text)); const cells = [...document.querySelectorAll('[role="gridcell"], [data-testid*="cell"], [data-rowindex][data-columnindex]')] .filter(visible); const records = new Map(); for (const cell of cells) { const row = cell.getAttribute('aria-rowindex') || cell.getAttribute('data-rowindex') || cell.closest('[role="row"]')?.getAttribute('aria-rowindex') || cell.closest('[role="row"]')?.getAttribute('data-rowindex') || 'unknown'; const col = cell.getAttribute('aria-colindex') || cell.getAttribute('data-columnindex') || cell.getAttribute('data-field-id') || cell.getAttribute('data-column-id') || cell.closest('[role="gridcell"]')?.getAttribute('aria-colindex') || 'unknown'; const value = text(cell); if (!records.has(row)) records.set(row, {}); records.get(row)[col] = value; } const gridRecords = [...records.entries()].map(([row, values]) => ({row, values})); const visibleText = text(document.body); return { url: location.href, title: text(document.querySelector('h1')) || document.title, headers, records: gridRecords, visibleText, renderedCellCount: cells.length, note: 'Airtable may virtualize rows; records contains the rows currently rendered in the view.' }; })() - Review the returned headers, records, and visible text for spelling, capitalization, duplicate or contradictory values, blanks, invalid formats, suspicious formulas or status transitions, and mismatches between related fields. Report each finding with its row/field when available and distinguish definite errors from recommendations.
Site-Specific Gotchas
- Airtable view URLs use opaque base, table, and view IDs in the path; preserve all three rather than relying on a workspace homepage or guessed slug.
- Unauthenticated direct navigation redirects to
/loginwith the original view encoded in thecontinuequery parameter. Authentication must occur before the view can be audited. - Airtable grids are often virtualized. The extractor reads only rows and cells currently rendered in the DOM; a genuinely full audit may require using the view's own pagination or scrolling/loading mechanism and running the extractor for each loaded segment.
- Prefer field identifiers and row indices from the DOM over positional assumptions when reporting findings. Airtable's internal class names can change, so the role/data-attribute selectors in the extractor are the stable first choice.
Expected Output
Return a structured audit containing the Airtable view URL, detected field headers, reviewed records or rendered segments, and a prioritized list of findings. Each finding should include the row or record reference, field name when available, observed value, issue category (typo, consistency, missing data, format, logic, or improvement), recommended correction, and confidence.