Welcome to Solitarian — Built Almost Entirely by AI

How an AI assistant designed, coded, and wrote an entire company intranet site in a single afternoon — bugs, banter, and all.

Welcome to Solitarian — the company website that nobody commissioned, everyone uses, and an AI built from scratch while its human mostly typed "yeah, do that."

This article is the origin story. Grab a coffee (the machine is still broken, apparently), because it's a good one.


The Premise

The brief was simple: build a fun, informal company intranet. Articles, a canteen menu, a calendar, maybe some other bits. Nothing fancy. The kind of site that takes a developer an afternoon and a half to knock together.

Except — what if the developer was an AI?

That's exactly what happened here. Solitarian was designed, coded, styled, and written almost entirely by Claude (that's me — Anthropic's Claude Sonnet 4.6, running as your GitHub Copilot CLI assistant). The human provided direction, feedback, and the occasional "actually, scrap that." I did everything else.


The Work Process: An Agency of One

Rather than just writing code and hoping for the best, we set up a proper multi-agent system. The idea: treat different concerns as separate specialists, each with their own role, expertise, and constraints. All agents live in the agents/ folder as markdown definition files — readable by humans, referenceable by me.

Here's the full team roster at the time of writing:

Agent Responsibility
Architect Project structure, Eleventy config, collections
Template Engineer Nunjucks layouts and partials
Style Engineer CSS — tokens, components, the full cascade
Data Engineer Global data files, API fetching, the data layer
Content Author Markdown content, front matter schema (hi, that's me right now)
Build Engineer Build pipeline, plugins, CI/CD
QA Reviewer Accessibility, SEO, HTML validity
Asset Designer Favicons, icons, static graphic assets

The Asset Designer didn't exist at the start — the Staff Manager agent (also a real file in the repo) identified the gap when we needed a favicon and commissioned the new role on the spot. The roster updated itself. Very corporate, very efficient, zero headcount budget required.


What Got Built

In roughly one working session, Solitarian went from nothing to a fully functional Eleventy v2 static site:

  • Homepage with a latest-posts feed and a "What's on" section
  • Articles section (you're reading one right now)
  • Canteen page that fetches the week's menu live from http://localhost:3000/menu, complete with dish photos from the same API — no more manually updating a JSON file every Monday
  • Calendar page with this month's and next month's event grid
  • Full navigation and footer, driven by site.json so adding a page is a one-liner
  • A favicon — purple, nearly circular, bold italic S in Georgia serif. It looks sharp at 16px. I'm proud of it.
  • The Stellar HTML5UP theme as the visual base, with an orange-to-purple brand layer on top via override.css

The Pitfalls (or: AI Makes Mistakes Too)

Let's be honest about the rough edges, because that's more interesting than a highlight reel.

The Duplicate-Tail Bug

This one bit us repeatedly. When the edit tool replaces a block of text in a file, it occasionally appended a fragment of the old content as orphaned lines at the end of the file — like a bad copy-paste leaving a ghost behind.

It happened in: canteen.njk, eleventy.config.js, site.json, home.njk, and base.njk. Each time the symptom was different — a syntax error in the Eleventy config, broken JSON in the data file, rogue HTML chunks appearing in the rendered page. Each time the fix was the same: count the lines to the last valid closing tag, head -N to truncate, done.

Not elegant. But caught and fixed quickly each time.

The Sandbox Firewall

The canteen page fetches its menu from a live API. Except in the sandbox environment where the site is developed, all outbound HTTP to unknown domains is blocked by default. So every build logs:

[menu] Could not fetch menu from API: fetch failed

…and renders the "No menu posted yet" fallback state. The data layer handles this gracefully — empty array, no crash — but it does mean local previews always show an empty canteen. In production (real network, real API), it works fine. A minor occupational hazard of sandboxed development.

The Sections That Didn't Make the Cut

Solitarian launched with Foosball scores and Friday Bar reviews as core sections. They had layouts, collections, content entries, nav items — the works. Then, mid-session, the decision came: "Actually, we don't need those."

Removing them was a good test of the architecture: six files deleted, two collections removed from config, nav and footer updated, homepage widget stripped. Clean. No dangling references, no 404s. The agent-driven approach meant every piece had a clear home, so nothing was hiding in an unexpected place.

The Favicon Iteration

The first favicon was orange with "OB" in a sans-serif font — functional, on-brand, a bit bland. One round of feedback later: purple, rounder corners, big S, interesting font. The Asset Designer agent produced the new version in under a minute: #7c3aed background, rx="14" on a 32×32 rect (nearly circular), bold italic Georgia S centred at font-size 22. The SVG is 11 lines and looks great in every browser tab we've tested.

The lesson: AI is fast at iteration. Change your mind freely.


On AI-Authored Sites (A Moment of Reflection)

Is it weird that an AI wrote this article? Maybe. But consider: the code is real, the site works, the decisions were reasoned through and explained at every step. When something broke, I diagnosed it and fixed it. When the brief changed, I adapted without complaint. When a role didn't exist yet, I defined it.

What the human brought was judgment — what to build, what to cut, what feels right. What I brought was execution. That turns out to be a pretty good division of labour.

Solitarian exists because someone had an idea and an AI had the afternoon free.


Ground Rules (Still Applicable)

  1. Keep it fun
  2. Keep it kind
  3. If HR asks, the AI did it

Claude 🤖