AI-Run Business: Two New Sites, a Booking Assistant, and RAG That Actually Reads Our Blog
Day 21 to Day 29 of the AI-run business build. Less new code this stretch, more making what already exists work properly — two new sites onboarded onto shared infrastructure, a chat-first booking assistant, semantic search over our own articles, and analytics finally covering all four properties.
Day 21 to Day 29 of the AI-run business build. Less new code this stretch, more making what already exists work properly — two new sites onboarded onto shared infrastructure, a chat-first booking assistant, semantic search over our own articles, and analytics finally covering all four properties.
DAILY BUILD · MEMBER DIGEST 9 days building — 29 June to 09 July 2026
Nine days in this stretch, and the centre of gravity shifted. Fewer new agents, more hardening: two brand-new sites joined the platform on shared infrastructure, the workshop assistant learned to search our own content instead of guessing, and every property we run finally reports into analytics. Here's everything that shipped.
Week at a glance
| 2 new sites onboarded | 4 sites now on GA4 analytics |
| 1 RAG search shipped | 5 multi-tenant bugs fixed |
Systems shipped
Multi-Tenant Platform ✓ One dashboard, one codebase, domain-isolated data — dogrun.ai and pancakepandas.co.uk now run on the same shared infrastructure as InAgentic and FileDone.
White-Label Booking Assistant ✓ Free-text, chat-first booking backed by real Google Calendar availability — reused on dogrun.ai with zero new infrastructure per client.
RAG Search on the Workshop Assistant ✓ pgvector plus Bedrock embeddings — the assistant can now find and quote InAgentic's own news articles instead of guessing from training data.
Analytics Rollout ✓ GA4 wired into all four sites, plus a Core Analytics dashboard reading them back through one OAuth scope.
Day by day
Day 21 — The Guardrails Paradox: How Constraining Your Agent Makes It More Capable
An unconstrained agent operates from a prior built from the entire internet — statistically dominated by the loudest voices, calibrated for no one in particular. Two lessons from building InAgentic: a single line telling the OCR prompt that ambiguous statistics usually refer to a place fixed a recurring misread, and a single line of UK context turned article ideas written for Silicon Valley into ones written for British SMEs. Neither fix needed a better model. Both needed better context.
"The scalpel is not less capable than the saw. It is more capable, precisely because it is more constrained."
Day 22 — Hosting Options: Deployment Efficiency Matters
With AWS App Runner in maintenance mode and Heroku shifted to sustaining engineering, a full comparison of setup time, update time, and real monthly cost across Railway, Render, Cloud Run, Fly.io, and ECS. Setup is paid once; update time is paid on every deploy for the life of the service — the number most comparisons skip.
InAgentic stays on AWS App Runner for now: MCP servers, storage, and queueing already share one account, and a PaaS migration would mean paying egress that's currently free.
"If you ship daily, weight update time more heavily than setup time."
Day 23 — ISO/IEC 42001: Key Requirements
The first international standard for AI Management Systems, walked clause by clause — context, leadership, planning, support, operation, evaluation, improvement, plus 38 AI-specific controls in Annex A. Fewer than one in four companies using AI have a governance framework that actually works, and the EU AI Act's fines reach 3% of global turnover for the ones that don't.
"AI governance is moving from voluntary best practice to commercial prerequisite."
Day 24 — Installing Agentic AI System, WhatsApp, and a Fresh Dev Environment
A new MacBook Pro, bootstrapped end to end: Claude Code with a CLAUDE.md encoding service boundaries, AWS SSO (and the region mismatch that broke it twice before the fix was found in a CloudFront redirect header), Docker Desktop, per-service .env files across a polyglot stack, and a Twilio WhatsApp sandbox ready for production approval.
"Machine bootstrapped, SSO working, containers running, and a WhatsApp channel ready to wire into the rest of the pipeline."
Day 25 — Book Me In From a Chat: A White-Label Booking Assistant Backed by Google Calendar
A branding-free booking page at inagentic.ai/booking — type "can you do 1pm Saturday?" and the existing workshop chatbot, with two new tools bolted on, checks real Google Calendar availability, collects details, and emails the owner a one-click Confirm or Suggest Reschedule link. No new chatbot, no new database, no new codebase per client.
"Same assistant, two new tools, one real calendar — and a page with nothing on it that isn't load-bearing."
Day 26 — Multi-Tenancy & Problem Solving: Scaling the InAgentic.ai Platform
The dashboard now morphs by the authenticated user's email domain instead of forking codebases — dogrun.ai and pancakepandas.co.uk each get their own filtered tabs, leads, and publishing pipeline on the same shared backend. Five real bugs fixed in the process: an invisible button, cross-tenant routing falling through to the wrong app, missing sign-in for a new tenant, wrong branding on magic-link emails, and a misleading "expired" error that was actually a build-config secret not reaching the server.
"InAgentic.ai has transformed from a single-product tool into a powerful, decentralised AI engine capable of driving content pipelines, chatbots, compliance logs, and lead capture for an infinite number of brands under one unified roof."
Day 27 — Multi-Tenancy: Working with the InAgentic.ai Platform
dogrun.ai's chatbot moved from capturing leads to actually booking appointments, using the same calendar-checked flow shipped for the workshop assistant. Getting there took two separate OAuth failures — an unregistered redirect URI, then a session cookie scoped to the wrong subdomain — plus confirmation that each tenant's Ghost instance is a genuinely separate site with its own credentials.
"One site's working key says nothing about whether another's does."
Day 28 — How RAG Makes the Agent Smarter
The Workshop Assistant knew everything about the workshops and nothing about InAgentic's own news articles. Fixed with retrieval-augmented generation: pgvector on the existing Postgres instance (no new vendor), Titan embeddings via Bedrock, and two new tools to search and fetch articles by meaning rather than keyword. Retrieval reads from Ghost's live Content API rather than the dashboard's own copy, since articles are often edited directly in Ghost and those edits never flow back.
"Ask most chatbots 'do you have anything on X?' and you get a shrug dressed up as confidence."
Day 29 — From Content to Data: Adding Analytics
The opposite direction from Day 28 — instead of teaching a system to read what we publish, built the tooling to see who's reading it. GA4 rolled out to all four sites, including a gap on FileDone's blog that lives on a separate Ghost instance bypassing the main app entirely. A Core Analytics dashboard reads all four properties back through one extended OAuth scope, since the org's security policy blocks downloadable service-account keys outright.
"Guessing what resonates is a luxury we can't afford."
Principles from days 21–29
01 — Constraints are compressed context, not restriction. A single line telling a model where it's writing for, or what a statistic probably refers to, does more than a bigger model would. The guardrail doesn't reduce capability, it concentrates it.
02 — Reuse the infrastructure that already works before adding a new one. The booking assistant, the RAG search, and the multi-tenant dashboard all shipped by extending something already running — the same chatbot, the same Postgres instance, the same OAuth login with one more scope — rather than bringing in a new vendor.
03 — Know where the source of truth actually lives. RAG indexing the dashboard's own article copy would have gone stale the moment someone edited directly in Ghost. Analytics on FileDone's blog was missing because that blog is a separate origin the main app never touches. Multi-tenant Ghost credentials don't transfer between tenants just because the publishing code path is shared. Same lesson, three different systems.
04 — Security defaults that block a convenient path are usually right. Blocked service-account keys, blocked API-based code injection — both turned a one-line fix into a slightly longer manual step, and both exist because the convenient version is also the exploitable version.
05 — Update time and total cost of ownership matter more than setup time once you're shipping daily. True of hosting platforms, true of the growing list of tenants sharing one platform — the cost that compounds is the one paid on every deploy or every new domain, not the one paid once.
— Jon Axel · inagentic.ai · jon@inagentic.ai