I built the first schema for a multi-client AI search-visibility dashboard using Claude Code, on an old 2012 iMac, starting from a completely empty GitHub org. The code generation itself was the easy part — the actual barrier for a non-technical founder is everything around it: which account owns the repo, why you need a terminal at all, and what happens when your setup doesn’t have Docker.
Why Do You Even Need a Terminal for This?
The week of August 22, I set out to build a dashboard to track how my clients’ brands, structured schemas, and key pages actually show up in generative search — the Ahrefs-Powered AI Search Performance strategy doc was the blueprint. I created a new GitHub org and repo, UnWired-Web-Solutions/AI_Visibility, from scratch, then installed Homebrew, Node, the GitHub CLI (gh), and Claude Code on a 2012 iMac that had been sitting in the corner.
Every “just describe what you want and Claude Code builds it” pitch skips this part — before a single line of schema gets written, you’re in a terminal authenticating three separate tools, and if you’ve never used one, that’s the actual wall, not the code. It’s the same category of friction as the agentic-tooling problems I ran into with MainBrain.
What’s the Difference Between a GitHub Org and a Personal Account, and Why Did It Matter?
I’d already authenticated the GitHub CLI under my own personal account before I created the org — so my first attempt to push pointed at the wrong namespace entirely. I had to reconfigure the remote to point at UnWired-Web-Solutions instead of my own username before anything would actually land where it belonged.
For anyone running an agency instead of a solo practice, this decision determines who else can ever see or touch the code later — it’s worth getting right before you write anything, not after.
From Zero to First Schema
With the org and the local environment in place, I had Claude Code scaffold the actual data model: a Postgres schema covering clients, markets, prompts, engines, runs, responses, mentions, citations, competitors, and interventions — the full shape of “which client, in which market, asked which engine which prompt, and was mentioned or cited.”
What Happens When Docker Isn’t Available?
The build assumed Docker for the local Postgres instance. This iMac didn’t have it, and getting Docker running on old hardware wasn’t worth the detour — so the fallback was PGlite, a Postgres-compatible database that runs without a separate server. I also hit npm’s approval prompts more than once — they’re a safeguard, but on a machine you don’t develop on daily, each one is a moment of “wait, is this supposed to happen?”
None of this is a knock on Claude Code — the schema itself came together fast and correctly. The gap is between the marketing pitch and the actual first afternoon: the tool did its job, and the job was still mostly plumbing.
Frequently Asked Questions
Do you need to know how to code to do this?
No, but you do need to get comfortable in a terminal — installing tools, authenticating accounts, and reading error messages that Claude Code can help you fix but can’t fully hide from you.
Why use a GitHub org instead of a personal account?
Because the agency, not one individual, needs to own and control access to the repository long-term — ownership and future access matter more here than convenience.
What is PGlite, and why use it instead of a regular Postgres install?
It’s a Postgres-compatible database that runs in-process, without a separate server — useful exactly when Docker or a full Postgres install isn’t practical on the machine you’re using.
What does the schema actually track?
Clients, the markets they operate in, the prompts being tested, which AI engines answered them, the runs and responses, and whether the client was mentioned, cited, or came up against a competitor.
How long did this first pass take?
Long enough that the plumbing — accounts, permissions, the Docker detour — ate up more real time than the schema design itself did.
I’m building this dashboard in public — subscribe to get the next entry when the first real client market goes live in it.