Per-tech throughput, open / closed / stale counts, CSV export for bucketed dashboards.
What’s trending in intake — family, model, and firmware share vs. the trailing year, with floor and sustain guards so it never cries wolf.
The techs, offices, and customers the app keys off. Post-cutover these live in the app database — no Notion required.
Add, edit, and archive technicians — name, email, office, and Italy coordinator. Drives the tech dropdowns and sign-in attribution.
Who can sign in with the sales role — read-only lookup, Italy ship pages, and the returns collector. Separate from the tech roster.
Browse, edit, and archive customers. Retire test / duplicate rows without deleting them — existing repairs keep their link.
Customers that look like the same person or company — merge them, or split a company from the people who work there. Dismissals stick.
Add and rename offices. Code (CA / VA / IT) drives Red Tag numbering and Italy routing, so it locks once created.
Add, reorder, and archive workflow statuses. Names lock once created (matched exactly for auto-close / date-stamping).
Catalog is the source of truth for the intake / update Variant dropdowns. Manage every model, variant, and category here — no Notion required.
List every model with edit + add. Click any row to modify Variants / Category / Notes / Active.
Repairs whose typed variant isn't in the catalog. Promote good ones, flag bad ones.
What the shop actually charges for, gathered from the box sheet's charge grid. Read this before drafting a price list — it's evidence rather than guesswork.
Red Tags are minted per unit and never reset, so a tag that stops moving is invisible unless something goes looking for it.
When a tech reports “it threw an error,” this is where the actual error text lives.
Repair requests customers submit through the public RMA form. Review a pending request and convert it into a real intake, and steer routing when an office is at capacity.
When an office is at capacity, new submissions outside its hard zone swing to the other office. Only one can be on at a time (turning one on clears the other).
functions/_lib/admin.js. Add admins via the ADMIN_EMAILS env var.