> product // clawhq // the making of
ClawHQ
how it was made.
ClawHQ is the assisted-SaaS thesis built in the open: software where an AI does the operating and a human steers. It started as a fork of our vite-flare-ai-starter and, by the second day, was torn back to a single idea: every job, quote, invoice, contact and rule is just a Note, so one agent can move across all of them. What that took, and what got thrown away to get there, is in the log.
The short version
ClawHQ opened on day one as a forked starter with a stack of modules bolted on at once: Jobs, Quotes, Invoicing, a CRM pipeline, Time Tracking, Forms, Channels for Telegram and WhatsApp and Google Chat, a skills system and a super-admin panel. It looked like a finished product within hours. Then, on day two, the architecture was thrown out and rewritten around a single decision: everything is a Note. One CRUD API, one set of AI tools, one flexible data model under every business object. That choice is the spine of the whole story. It is what let the platform go fully dynamic (modules, type configs and feature flags moved out of config files and into the database, per tenant), what let a plugin system carry Australian defaults plus industry verticals for insurance and construction, and what let the agent actually act on the business rather than chat about it. The unglamorous work is here too: dozens of UX-audit bug fixes, a long fight to make AI-generated artifacts render reliably, and a late pivot from a flat Skills model to project-scoped conversations. Live at clawhq.au, multi-tenant on Cloudflare D1 and R2.
// the build log · mined from the commit history, nothing dramatised
A whole platform, forked and assembled in a day
The repo's first commit forks ClawHQ from vite-flare-ai-starter v1.0. By the end of the same day it has Jobs and Quotes, a CRM pipeline and invoicing, time tracking, forms and intake, channel connectors for Telegram, WhatsApp and Google Chat, a skills management UI with dynamic loading, MCP integration discovery, proactive alerts, outbound webhooks and a super-admin operator view. A pluggable architecture, a tool registry and DB-backed skills land the same day. It is a lot of surface area, very fast.
Everything is a Note
The roadmap is replaced and the architecture refactored to the everything-is-a-note pattern. A unified Notes API gives every entity type a single CRUD path, and the AI tools are rewritten as unified note tools with business logic on top. The Soul and Identity system and a Contact 360 view arrive alongside. This is the day ClawHQ stops being a fork-with-features and becomes its own idea.
Modules and config move into the database
A 37-commit day pushes the note model to its conclusion: the sidebar, type configs and per-tenant feature flags all move from config files into the database, so the platform is runtime-configurable per tenant. Config-driven detail views remove the last hardcoded type branches. White-label branding, a client portal that needs no login, an email-as-AI-channel, hybrid FTS5 plus Vectorize semantic search and portable SKILL.md import/export all ship in the same stretch.
Agents that build interfaces, and the reliability fight
The agent gains the ability to generate live pages, charts and rich artifacts, and then the harder problem of making them render reliably. The React #310 artifact crash is chased across several commits, and the breakthrough is porting Dynamic Workers artifact generation, logged as a 95 percent reliability upgrade after wrangler is updated to enable the worker_loaders binding. The Notion-like configurable page editor lands, Lexical is swapped for Tiptap, and the insurance vertical with a policy pipeline starts taking shape.
The platform learns each trade's language
Plugin-as-vertical architecture arrives: a schema, parser and install flow, with construction and insurance-renewals packs built on top. The config/tools.ts file is broken into modules to stay under control, skills gain locale, tone and domain layers with plugin inheritance, and an Australian Business Defaults base skill is added. A v2 plugin format follows, validated by dogfooding a real quoting workflow. Sprints add an email outbox, automation recipes, daily briefings and an 'AI Has Noticed' scheduled scan.
A late pivot, then the first real tests
The flat Skills model is replaced by project-scoped conversations: the full Skills-to-Projects architecture lands, and the SKILLS config-array fallback is removed from the chat, admin and chat-page paths with no backward compatibility kept. Then the work turns to evidence. A conversation-extraction script and a test-suite runner are built, and the first polished test reports land, all passing, with column-name and scope bugs found and fixed along the way.
git log: “Replace roadmap — architecture refactor to everything-is-a-note pattern”
Committed on day two, 20 March. The single decision the rest of ClawHQ is built on.
// the roads not taken
Tried, measured, set aside: the judgement lives here as much as in what shipped.
The whole data model, on day two
ClawHQ launched with separate modules and hardcoded entity types, the way a normal CRM is built. One day later the roadmap was replaced and the architecture refactored to the everything-is-a-note pattern, a single unified model under every business object. The first version's structure was thrown away to make room for it.
Skills became Projects
Conversations were first organised around a flat Skills model. In April it was replaced with project-scoped conversations, and the old SKILLS config-array fallback was removed from every path that used it rather than kept as a compatibility shim.
Hardcoded config, removed without a fallback
Modules, type configs and the sidebar all started life in config files. They were moved into the database to make the platform runtime-configurable per tenant, and the legacy chat route and old URL redirects were deleted outright, with the log noting no backward compatibility was needed.
Repeated UX-audit and stress-test passes
Rather than ship and hope, the log shows wave after wave of fixes tied to UX audits and user testing: 'Fix 9 bugs from user testing', 'Document the 4 UX bugs found and fixed during stress testing', and a long run of small corrections to dates, currency and status badges. The unglamorous hardening is a real part of the build.
Want something built like this?
This is how we work: in the open, measured, honest about the dead ends.