architecture

Sheets-First Architecture

Spreadsheets aren't the problem. The problem is when spreadsheets and services can't talk. Sheets-first architecture makes Excel and Google Sheets the human interface while services get programmatic access.

  • Sheets = where humans edit. Database = where services read. Sync keeps them aligned.
  • Bidirectional sync: changes flow both ways. Edits in Excel show up in the API; updates from services flow back to sheets.
  • Strategy stays in spreadsheets; engineering gets structured data without manual export/import.
  • Conflict resolution rules decide what happens when both sides change the same cell.
  • The goal: one source of truth, multiple interfaces (human and machine).

Real-world example

Pricing tiers live in Excel. The quoting service needs them in real time.

Finance owns the tier logic and updates it weekly. The web app needs fresh data to generate quotes. Copy-paste creates errors; manual sync doesn't scale.

  • Sheets-first: Excel stays the master. A sync job runs every 15 minutes (or on edit).
  • Finance edits cells. Sync detects changes, validates, and pushes to the datastore.
  • Quote service reads from the datastore—fast, structured, no Excel dependency.
  • When a service updates something (e.g. actuals), sync can push back to Excel so Finance sees it.
  • One source of truth. Finance keeps their workflow. Engineering gets an API.

Sheets-first doesn't replace spreadsheets—it connects them to the rest of the stack.

  • Strategy, finance, or operations teams own the data and prefer spreadsheets
  • The data changes frequently enough that manual export/import is painful
  • Services need the data in real time or near-real time
  • You want a single source of truth without forcing everyone into a DB UI

Sync runs on a schedule or is triggered by sheet edits. It compares sheet state to datastore state, detects changes, applies conflict resolution rules, and updates both sides. Last-write-wins is common; custom rules can handle exceptions.

The key: changes flow both ways. Edits in Excel → datastore. Updates from services → Excel (or a "service updates" sheet). Everyone stays aligned.

  • Sheets have limits (rows, concurrent edits, formula complexity)
  • Sync adds latency—near-real-time, not instant
  • Conflict resolution can be tricky when both sides edit the same field
  • Audit trail: log what synced, when, and from where
  • Treating sheets as "just a UI" without validating data before sync
  • One-way sync when you need both sides to update
  • No conflict resolution—when both change, you need rules
  • Forgetting that sheets can break (bad formulas, accidental deletes)—have backups

See it in action

Need to bridge spreadsheets and services?

More resources

All resources →