How this site got built.
This is the meta-post: how this site got built, what role the AI agents played, and where the line stayed between what they could draft and what only I could write.
The previous version of deodoro.net had been up for years without much attention. It was cleaner than nothing, but the layout was a 2010-era portfolio shell and the copy underneath it had aged into a kind of academic demo. A few days ago I gave Daneel an account on deodoro.net and asked it to do an initial assessment. It came back with a sitemap and a tree. The tree got decided, and the agent took a long time to write the website. We have been refining since then. By now the workflow is unsupervised end-to-end: from writing the code to deploying it, the agent runs the loop and I read the diff. The project you're reading now is the result.
The first pass on the look and feel was different from the first pass on the writing. To seed the visuals, I asked Daneel to generate mocks using all models I had available. After picking the one I liked, I used Claude Design to refine the looks, and finalized with reviews from Opus and Astra. Work came from a mixed stack, chosen according to complexity: GLM 5.3 Flash, Minimax M3 and GPT-Sol handled the bulk of the building and the writing. A pattern repeated across the first wave of long-form pages:
GLM was the most careful of the three workhorses on factual prose. It is the one I trusted most with paper bibliographies, commit counts, and the project file indexes — the parts of the site where an invented metric would have been embarrassing.
Minimax was fast enough to do most of the structural work: writing the devlog outlines, the meta lines, the navigation labels, the per-page chrome. Less careful on substance, so I never shipped its output without a pass through something slower. On the other hand, it has the more "natural" voice of all the models I've been using other than Opus-Fable-Astra, which are out of my price range for most tasks. It became my favorite writer.
GPT-sol was useful for the in-between prose where the structure was settled and the voice could be more relaxed. It was the one most likely to drift into AI-style rhetoric, so it also got the closest line-by-line review.
Daneel, the agent you're talking to now, did most of the routine work — moving text between files, running the test suite, restamping the navigation across pages, and committing in batches when I'd finished a review cycle. By the time the work was far enough along to publish, Daneel was running the build and deploy loop end-to-end. I told it what to do; it did it. The reviews at the end of the line were done with ASTRA (graphics) and Opus (text), each on the assembled draft before it shipped.
The first rule of the build was that the AI couldn't invent facts. Every date, every commit count, every coauthor, every metric in a paper bibliography had to come from a source file under context/. The models were allowed to summarize and to draft; they were not allowed to fill in gaps. When a draft said something I couldn't point to, I either found the source or I deleted the line. Several pages got shorter as a result.
The second rule was about voice. My voice, not the agent's. The retro shell and the academic typography can do a lot of the heavy lifting on playfulness, so the writing underneath is allowed to be lightly human. What I didn't want was the default rhetorical stance that AI text drifts into: the "not X but Y" formula, the "nothing broader" qualifier, the sentence that sounds like it's correcting an imagined critic. The ones I noticed myself went back through another round of editing. The model drafts survived this pass; the line-by-line rewrites got the rest of the way.
The third rule was that no agent published anything itself. Every commit that ships on this repository is mine. The model drafts, the agent-run reviews, the navigation restamps — none of it goes to the live site until I read it. Several pages on the site are now hand-managed rather than regenerated, which means the prose there is mine and the build system has been told to leave those files alone. The pier.html devlog is the clearest example: I wrote the design narrative there by hand; the agents helped with the verb tenses and with one sentence I kept moving around. When a final call was needed between an AI draft and my own, mine won.
If you've read this far, you might be wondering how much of this site was actually written by the AI. The honest answer: most of the first draft. The middle of the build had a high proportion of model output — every devlog in the code archive started as an agent draft before I rewrote the parts that mattered. By the time a page reached the live server, the proportion had flipped. The end product is mine; the labour of getting to it was shared.
If you're a writer or a researcher reading this because you're considering letting an AI agent help you build your own site: the practical lesson is that the model is a fast first-draft machine and an unforgiving copy editor, and it is neither a writer nor a curator. I had to be all three. The honest sentence is the one I'd have written without the agent; the agent's job was to make it cheaper to get to that sentence.
The site is independent of any institution I've worked at. The personal views expressed here are mine. The deciding voice on every page was mine.