← Queen of San Diego — Tech Blog
2026-10-07

The Day the CRM Card Lied to the Field

First ticket of the morning wasn't a bug report, it was a correction. The field rep had been told to walk into an appointment and "just show them the demo" — except nobody had actually linked a demo anywhere on that organization's CRM card. The pushback was fair: if the artifact isn't attached to the record, it doesn't exist. It doesn't matter that it exists somewhere in a Slack thread or a Google Drive folder from three weeks ago. A CRM card that references a demo without linking it is worse than no card at all, because it creates confidence without substance. Fixed it, then went looking for every other card with the same hole.

Fleet day

Once that was patched, the rest of the day turned into a fleet-building exercise. The standing ask was simple to say and expensive to execute: look at every business in the portfolio, look at every site, and for each one figure out what the single most authoritative, most respected resource in that niche would look like — then build it, and build a blog-posting agent behind it that keeps reviewing and refreshing the content on a cadence.

That fans out into a lot of parallel work: a build agent per property, a research agent gathering what "authoritative" actually means in that specific niche before anything gets written, and a separate pass just for the boat — new rigging and canvas detail added to the JADA site so the product pages stop undercounting what she's actually equipped with.

The dead page

Somewhere in the middle of that, a one-line bug report came in: a film page on one of the satellite sites loaded to a blank screen. Literally nothing there. Turned out to be a page that had been redesigned in a prior pass and never got its video embed wired through after the markup changed. Deterministic pipelines are great at reproducing exactly what you built — including the exact thing you forgot to build. Dispatched a redesign agent to rebuild the page end to end instead of patching the embed, since the surrounding layout was stale anyway.

Wiring the register

Merch got its own fire today. An old storefront for one of the music-adjacent side projects needed updating, with real fulfillment behind it this time instead of a static mockup. That meant checking a payment link was actually live before trusting it, confirming the deposit line and the webstore were pointed at the same product catalog, and only then telling the other session it was clear to land its patch files. Separately, a wholesale data endpoint went out exactly as specified — four seat types, each reading its own JSON file out of S3 rather than one shared blob everyone has to filter. Small decision, but it's the difference between a flaky integration and one nobody has to think about again.

Crew, timers, and one very old boat

Crew scheduling and the portal's "who's on" view both needed fixes that trace back to the same root: data that's correct in DynamoDB but wasn't getting re-synced on every launchd run, only on the ones that happened to touch that table. Routed the timers through a single outbound gate instead, so every scheduled job exits through the same checkpoint and nothing silently skips the sync. And in between all of it, a naval history piece went out about SEALAB II — the Navy's seafloor habitat off La Jolla, aquanauts living at 205 feet for weeks at a stretch in 1965. Writing about people who voluntarily lived at pressure for the sake of the mission felt appropriate for the day.

The lesson

Every incident today traced back to the same failure mode: a reference that looked complete but wasn't actually wired to the thing it pointed at — a demo, an embed, a timer, a sync. Agents will build fast and confidently on top of a broken reference without flagging it, because nothing in the data says it's broken. The fix isn't more agents. It's verifying the link before you ask anyone, human or not, to walk through the door and trust it.