Katie Garrison
Operations Systems & Custom Databases

Custom-built systems for businesses that outgrew their spreadsheets — without a CRM or ERP price tag.

I design and build the database system that actually fits how your business runs — a no-code base your team can edit without touching code, or a full SQL system when you need more scale, integrity, or automation — that runs your scheduling, inventory, and customer operations automatically, instead of a one-size-fits-all enterprise platform.

The pattern behind every build

01

Intake

A new order, a signup, a seasonal plan — a trigger creates the record automatically. No manual data entry.

02

Structure

Linked tables capture how your items, customers, and resources actually relate to each other.

03

Scheduling

The system calculates what happens next and when — no one updates a calendar or spreadsheet by hand.

04

Tracking

Every status change logs material use, cost, and inventory in real time, automatically.

Selected Work

A look at how the pattern applies in practice — including the exact schema and logic behind it, whether that's Airtable or SQL.

Concept Build — Self-Directed Example

Northbound Ferments

Production Scheduling, Inventory Forecasting & Procurement — built two ways

Northbound Ferments is a fictional small-batch kombucha producer, built here to demonstrate a pattern common to any recurring-revenue business with physical fulfillment. It started as the self-serve Airtable system below — a small team keeping production and cost tracking visible without touching code. As volume grew, the same operational core was rebuilt in Postgres to add a capability no-code couldn't reasonably support: forecasting what's about to run out and automatically routing a reorder to the right team. Both builds are real, working systems, not mockups — the choice of tool follows the problem, not the other way around.

AIRTABLE Build One — Scheduling & Cost Tracking

The Problem

Brew dates, ferment timing, and ingredient orders tracked across spreadsheets and memory, with growth — a new subscription program layered on top of existing wholesale accounts — making it worse every month. No single place could answer "what's fermenting right now" or "how much ginger do we need to order next month."

The Build

A connected Airtable system tracks every batch automatically from brew day to shipment. A flavor library holds each recipe's timing and yield rules once. A single schedule table drives production across every brew cycle and sales channel. Two live formulas continuously answer where a batch physically is and what stage it's in — nobody updates a status field by hand, and both keep recalculating on their own every day.

What It Handles

The system covers every real-world variant a production business runs into, without special-casing any of them in the interface: standard fresh batches, batches that reuse an existing culture instead of starting from scratch, pre-bottled stock pulled to fill a rush order, and product sourced from an outside partner.

See It Live

The data isn't just tables behind the scenes — a two-page Airtable Interface sits on top of it, built for the people running production day to day: a board of every batch grouped by its real-time stage, and a dashboard tracking batch counts and ingredient cost as they update, with zero manual entry.

View the Live Interface →
5 linked tables 2 live formula fields 4 lifecycle variants handled Zero manual status updates Live interface + dashboard
Table structure (Airtable)
Flavorsitem master
Ingredients Ref.materials
Schedulethe hub — one record per batch × cycle × channel
Brew Cycle Mapdates
Flavor Lineupplanning
POSTGRES Build Two — Inventory Forecasting & Procurement

The Trigger

Airtable worked well while the job was keeping the schedule and ingredient costs visible. But as volume grew, the question changed from "what's happening right now" to "what am I about to run out of, and when do I need to order it." That's a forecasting problem — netting committed future demand against current stock and what's already on order, over time — which needs real relational logic, not a formula field.

The Build

The same production schedule becomes one input into a relational Postgres database: a bill-of-materials table ties each recipe to the exact ingredients and quantities it consumes, an ingredients table tracks on-hand stock, supplier, and lead time, and a forecasting query nets every scheduled batch's ingredient demand against current stock and any open purchase orders — calculated over time with a SQL window function, the same way a real inventory-planning system computes a running position.

How It Flags a Shortfall

A real run of the forecast query against seed data, computed live — not a mocked screenshot:

Forecast query output
Fresh Ginger Puree — 10.0 lb on hand
Committed brew schedule: −6.0 lb in 4 days, −7.2 lb in 9 days
⚠ Projected to go negative in 9 days (−3.2 lb)
Lead time: 3 days → order by day 6 · suggested quantity: 60 lb

What Happens Next

The flagged shortfall becomes a procurement request with the suggested quantity and order-by date already filled in. Approving it changes its status and routes it straight to the Procurement team's queue — no spreadsheet, no email chain, no one re-checking stock levels by hand to catch it in time.

8 relational tables Window-function demand forecast Automated reorder suggestions Procurement routing workflow
Table structure (Postgres)
Flavorsrecipe master
Ingredientsstock, cost, lead time
Schedulesame hub — batches drive forecasted demand
Purchase Orderssupply in transit
Forecast Querynets demand vs. supply
Procurement Requestsrouted to the Procurement team

Deciding when a business has actually outgrown no-code — and building the right thing once it has — is the job. The tool is just the output.

Have a process that's outgrown its spreadsheet?

If your business runs on a workaround that used to make sense, I'll help you design a system that actually fits how you operate — without the enterprise-software price tag.

Email me — garrison.katie13@gmail.com