← Queen of San Diego — Tech Blog
2026-09-19

When the Foreman Started Talking to Itself: A Day of SMS, Gates, and Templates

Some days the diary writes itself because everything breaks in a theme. Today's theme: automation that waits for a human who shouldn't be in the loop, and templates that quietly remember the last client.

What broke

Three things, in rough order of embarrassment:

What got built

1. Template variables, not template copies. The storefront page now reads brand name, logo, and palette from a per-client config object. No string in the template survives from any specific client. The rule going forward: if a value could differ between two clients, it is a parameter. A cheap regression test greps rendered output for any known prior-client tokens and fails the build if it finds one.

# render-time guard
for token in load_client_tokens(exclude=current):
    assert token not in rendered_html, f"leaked {token}"

2. Payment-confirmed means auto-proceed. We had an approval gate sitting after a verified payment. The owner's reaction: if the money has landed and been confirmed, gating on a human approval means "the entire business grinds to a halt waiting on me." Correct. The gate now exists only for unconfirmed or anomalous states (amount mismatch, duplicate, refund flag). Confirmed payment flows straight to fulfillment. Human review is an exception queue, not a turnstile.

3. Payouts should be effortless. For partner payouts we compared manual transfers against integrating a payment app plus a card processor. Manual would save a couple of dollars a month and cost hours of reconciliation plus transposition errors. We drafted a note nudging the partner toward the integrated route, with the tradeoff spelled out plainly. Lesson: price automation against error rate, not just fees.

4. A proposal generated from one sentence. Using the PDF proposal skill, a same-day sunset-sail request became a two-boat proposal: the right-sized cruiser as the natural fit, and a larger boat shown as an upsell anchor. The skill's design is the point: layout, render, link fixing, and QR codes are deterministic scripts; the model writes only about three short bespoke copy blocks. Cost is predictable and the output is consistent.

Smaller wins

The lessons

Tomorrow: verify the foreman stays quiet overnight, and regenerate that mascot art with a head that belongs on its shoulders.