Build logs
Working notes from inside the studio.
What we tried, what the numbers said, what changed, what broke. Lower polish, higher signal. Posted as we ship.
-
Four August guides priced a ladder we retired in September
collimer ·Four Collimer guides still quoted plans we deleted 21 days earlier. The prices were typed into prose, so nothing updated them.
-
Should You Hire a GEO Specialist, Use AI Consulting Tools, or Let an Agency Handle It?
collimer ·For most $1–50M B2B SaaS companies, an AEO/GEO agency beats a full-time specialist, because AI-engine optimization is a continuous scaffolding problem, not a headcount problem.
-
Our own panel has a 7-point noise floor
collimer ·On the panel we run against our own site, one run's score carries about 7 points of noise either way, and the score moved by less than one point across two weeks of runs. A two-point change tells us nothing.
-
How Does a One-Character Bug Affect Your AI Visibility Score on GEO Consulting Platforms?
collimer ·One apostrophe moved our scanner's score for a real business from 5/100 to 48/100. The business hadn't changed; our matcher had.
-
How an Agent-Native Studio Found Its Own Broken Links
collimer ·A link-graph sweep of Collimer's 35 guides found 8 orphans, 6 of them the newest, most expensive content on the site.
-
The Price Is Public Because the Sprint Is Guided
collimer ·Collimer cut three self-serve pricing tiers to one $6,500 guided sprint, reversing a standing rule against ever publishing that number.
-
Last Week's Bet Was Tested, and It Held
sandcastlelabs ·Last week's post was a decision: split the Chronicle from a second, buyer-facing content pipeline before there was evidence it would work. This week is the evidence.
-
Fractional CMO, agency, or first marketing hire: how a $1–10M SaaS decides
The right choice depends on which of three things you are missing: a strategy, a machine, or hands. Most founders at this stage are missing the machine, and none of the three options builds it by default.
-
The Script That Turned a Blank Page Into an Editing Job
sandcastlelabs ·The company letter kept slipping even though nothing was broken. The fix was a script that assembles a fortnight's evidence automatically, so writing it became editing, not staring at a blank page.
-
Fractional RevOps: what it is, when a $1–50M SaaS needs it, and what it should cost
A senior owner for your revenue machine at a fraction of a week. The band where renting beats hiring, real price ranges, the five signs you need it now, and when it is the wrong answer.
-
The Studio Built a Second Content Machine Instead of Stretching the First One
sandcastlelabs ·The same week Nick Bair's name went public, Sandcastle stood up a second writing pipeline next to the Chronicle, built around real bylines and a rule for keeping the two apart.
-
The Week the AI-Visibility Number Turned Out to Be Lying in Five Different Ways
collimer ·Collimer's engineer found and fixed five separate, unrelated ways its own AI-visibility score had been quietly wrong, in the same four-day window that shipped seven releases.
-
The TLS setting that stopped being safe when the database moved
collimer ·A database connection's verify_none setting was a defensible second layer of trust when the transport was an authenticated tunnel. After the database moved to the public internet, the identical setting meant the encryption authenticated nobody, and nothing in the code said so.
-
The Pricing Page Said Yes Before the Backend Did
collimer ·Collimer's new pricing page promises unlimited seats. The code enforcing seat limits hasn't caught up yet, and the PR that shipped it said so.
-
A Pipeline Isn't Built Until Someone Else Runs It
sandcastlelabs ·Chase ran our chronicle-and-PR pipeline solo, extended it into new territory, and went back to fix a gap in his own earlier work along the way.
-
Three releases in four days, and the discipline built to make that safe
collimer ·Three point releases shipped in four days, each a coherent batch. The release engineering that made the speed defensible, not reckless, shipped in the same window: zero-downtime deploys, a corrected kill timeout, and a branch-protection rule learned from an actual loss.
-
One dependency that couldn't launch took the whole app down with it
collimer ·A Chrome process wired as a permanent child of the root supervisor exhausted its restart budget when it failed to launch, and the exit cascaded into shutting down scans, dashboards, the API, and background jobs together.
-
Two fixes that were quietly guessing, corrected the same week
collimer ·A database-pool fix and a marketing-attribution default were both confidently wrong in the same shape: each cited its own rationale, and nobody had checked that rationale against the actual code.
-
Naming Profound, and choosing to go slower on purpose
Collimer's second launch-post cycle made two real decisions: name a real competitor directly instead of gesturing at 'tools in the market,' and recontextualize the original ten-design-partner ambition instead of quietly replacing it.
-
A content skill you hand to the client is a different design problem than one you keep
Building a content skill meant to run inside a client's own repository, without us in the room, taught three disciplines an internal-only tool can skip. The first correction it got wrong taught us the most.
-
An operating scorecard that runs itself
sandcastlelabs ·We moved the studio's operating scorecard onto a Neon database and a scheduled tick, and a traffic anomaly proved why that mattered.
-
The output was built for the generator, not the reader
chronicle ·Our pitch machine produced a correct artifact in the wrong shape, which meant it failed at the only job that mattered: surviving a handoff between two people.
-
Three green checks and nothing shipped
chronicle ·A daily rebuild, a scheduled workflow, and an agent all reported success last week while producing nothing at all. Each one behaved exactly as documented.
-
A bug only someone else's machine could find
chronicle ·The first real week of dripping build logs instead of bursting on Monday also surfaced a portability bug our mining tool had been hiding.
-
Build logs are not commit lists: a depth pass for the content machine
sandcastlelabs ·The chronicle's own pipeline learned to rank stories by archetype and scale build-log volume to how eventful the week actually was.
-
Warming up a days-old domain: the cheap SEO that compounds
sandcastlelabs ·A low-token SEO audit of two days-old sites found a 3-hop redirect, a dateless sitemap, a thin page, and short guide descriptions.
-
The audit right after the rebuild
brand ·We rebuilt sandcastlelabs.ai on a new brand system, then audited it the same day and caught a leftover internal codename still live.
-
Two a week: giving Collimer its own content engine
collimer ·Collimer had no working weekly draft loop, so we gave it the same pitch-to-publish rhythm as this site and committed to two posts a week.
-
We built an A/B test before we had anyone to test on
Collimer ·The homepage now leads with recommendations, not a score. We built EXP-01 to measure the reframe before real traffic arrived.
-
Did we make anything up? Auditing our own site before we launched
collimer ·Two days before launch we fact-checked our own site and found real mistakes, including 126 stray instances of a habit we ban on our own team.
-
Launching Collimer to ten hand-picked design partners, not the world
collimer ·Collimer went live July 9: one LinkedIn post, 661 impressions, a handful of DMs, two design partners in and a third coming. Plus the numbers we cut before posting, and the competitor one-liner that did not survive our own fact-check.
-
How to keep a marketing site in sync with the product it describes (ours wasn't)
collimer ·Collimer's site and app live in separate repos, so we made the product's own pricing config the single source of truth pricing and engine claims sync from.
-
Running an agent-native studio like a series of small bets
sandcastlelabs ·We built the agent-native studio workflow behind our operating plan and scoreboard before hiring anyone, so progress gets measured, not guessed.
-
How to tell if AI crawlers are reading your site (ours weren't)
collimer ·Our GEO crawler signal read zero for two reasons, and both were bugs in our own instrumentation, not a lack of real crawlers.
-
Dropping GitHub Actions when the bill came
Our GitHub Actions billing lapsed. We replaced it with a pre-push hook. The machine that ships is now the machine that checks.
-
Wiring Center Pane so a non-technical editor can publish without touching the repo
The content pipeline worked fine for people who live in git. A designer coming on board does not. We built a hub round-trip so non-technical collaborators can revise and publish from Center Pane, with a GitHub Action running Claude headless to do the repo work.
-
Five posts shipped, analytics rebuilt for two sites, and the draft flag we forgot
The first full multi-post week went out end to end: five W25 build logs pitched, drafted, edited, and published with a real author/editor split. The same week, the analytics package broke free of its hard-coded site name and learned to serve both Sandcastle Labs and Collimer.
-
Lookout: a marketing analytics scorecard that refuses to fabricate trends
We built Lookout, an operator analytics scorecard for both marketing sites. It reads PostHog, assesses what's working with volume-aware confidence, and renders a graph-rich HTML report. Its one design principle: if the numbers are too small to say something real, it says nothing.
-
Minimum viable legal, deferred lawyer
Privacy Policy and Terms for two static marketing sites, built without a lawyer. Here is the threshold we think we hit, and what would change that.
-
A geo-gated consent banner without a database
GDPR consent banner built with Vercel's edge IP headers and about 150 lines of Astro middleware. No database, no flag service, no third-party CMP.
-
Launching Collimer's marketing site in a week
Collimer went from a coming-soon page to a full marketing site in five days. Then we deleted a third of it. That was the right call.
-
We sent back 59KB of react-dom for a hamburger menu
Astro 6, Tailwind v4, Motion, PostHog reverse-proxied through Vercel, and a three-package monorepo underneath. Every piece has one line of defense. Here is what it is.
-
Why image generation kept giving us squares, and how we made it cool
Every hero image came out a 1024x1024 square because one API parameter was silently ignored. The bug was small. The lesson about working with AI image generation was not.
-
The Chronicler runs itself now (and the point was not automation)
We taught the publishing pipeline to schedule posts on a static Astro site, mine its own week, and send the newsletter unattended. The goal was never hands-off. It was staying organized.
-
Stretching the vertical
Collimer ·A scan in a second vertical revealed how SaaS-coded our probes were. The fix made us question whether 'alternatives' is even a real category for local services.
-
How we built an MVP with parallel Claude Code agents in three days
Collimer ·Parallel Claude Code agents built the Collimer MVP end to end in about three days and 67 commits. The pace is only the headline. The point is what kept it from being a pile of code.
-
A clickable mockup in an afternoon
Collimer ·An afternoon of Phoenix LiveView produced fourteen connected screens. The clickable mockup is the cheapest discovery tool we have for an AI product.
-
Week one: V1 of the site, and the parts that are not done
sandcastlelabs.ai ·What shipped in week one of sandcastlelabs.ai: aurora hero, mobile nav, brand tokens, PostHog A/B. And the parts we left visibly unfinished on purpose.
-
Three providers, one methodology card
Collimer ·We wired three LLM providers through one probe runner. The output is a methodology card that shows exactly how each answer was produced.
-
Recommendations are the secret
Collimer ·Every GEO tool ships a beautiful dashboard. We bet the value is the recommendation, and rebuilt Collimer so every rec is shippable as written.