Airtable build · portfolio

Airtable developer — portfolio project

A working Airtable back office for a small services business.

Five linked tables, lookups & rollups instead of copy-pasted data, formulas for anything derived, three automations, four scripting-extension scripts, a dependency-free REST/Metadata API client — and a live Airtable → PDF work-order generator you can try below. Everything here is real, runnable code, open on GitHub.

Linked recordsLookups + rollupsFormulas AutomationsScripting extensionsREST + Metadata API Personal access tokensPDF filling (pdf-lib)

Live: Airtable record → Work Order PDF

This is the exact workflow the job describes: take a job record and produce a filled PDF. The record on the left mirrors an Airtable Jobs row (with its linked client and line items). Totals recompute the way the base's rollups + formulas do. Click generate and pdf-lib builds the document in your browser — no server, no upload.

Client (linked record)
Line items
DescriptionKindQtyUnit $

Tip: this same buildWorkOrder() function runs in Node too — see api/fill-pdf.js.

The base

Normalized so nothing is typed twice. The Jobs table is the hub; money flows from line items up through rollups and formulas to the invoice.

Clients

  • Name, Company, Phone, Email, Address
  • Status (select)
  • Jobs (link)
  • Lifetime Billed (rollup)

Technicians

  • Name, Email, Phone
  • Skills (multi-select), Active (checkbox)
  • Jobs (link)
  • Open Job Count (rollup)

Jobs hub

  • → Client, Technician, Line Items, Invoice
  • Client Phone / Address (lookups)
  • Labor / Materials Total (rollups)
  • Subtotal · Tax · Total (formulas)
  • Ready to Invoice (checkbox → automation)

Line Items

  • Description, Kind (select)
  • Quantity, Unit Price
  • Amount = Qty × Unit (formula)
  • Jobs (link)

Invoices

  • Invoice #, Seq, Issued / Due date
  • Client, Invoice Total (lookups)
  • Status (select), Paid (checkbox)
  • Days Overdue (formula)

Full field-by-field spec, with copy-paste formulas, in schema/SCHEMA.md.

What's in the repo