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.
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
Scripting extensions
Work-order export, invoice rollup & generation, round-robin technician assignment, and a data-quality audit — real base/input/output scripting-block code.
Automations
Run-Script actions using input.config(): triggered appointment-reminder email, create-invoice-on-checkbox, and a daily mark-overdue sweep.
REST / Metadata API
A zero-dependency client with pagination + 429 back-off (PAT auth), plus a Metadata-API script that provisions the whole schema.
Airtable → PDF
The pdf-lib generator powering the demo above — runs client-side or server-side from a record. This is the PDF form-filling workflow.