Over the life of the project: ChatGPT and Codex, Cursor, Grok, Claude in three forms (the chat app, the API, and a desktop agent with file and shell access), Gemini in two (direct and through OpenRouter), DeepSeek, open models on Together AI, and one 3D generator. It is sorted by job rather than by vendor, because that is how the choice gets made.
| Job | What did it |
|---|---|
| Daily caption: seeing the frame | Gemini 2.5 Flash through OpenRouter, with Gemma 3n on Together as the second vendor. Verified from the resolver. |
| Daily caption: writing the line | Gemini 2.5 Flash-Lite through OpenRouter; Llama 3.3 70B on Together second. Claude Haiku was the original and is still last in the chain. Verified. |
| Planning, measuring, orchestrating | Claude, as a desktop agent. The performance plan for the 3D site and the recon behind these pages are dated documents it wrote. Verified from the authored files. |
| Bulk implementation | Cursor, with Grok as the model it runs today. Most of the code on these pages passed through it; a rules file in the repo names it as the implementation lane. Which lines are its is not recorded. |
| Front-end and visual work | Codex, on a retained ChatGPT plan. Operator's account. |
| Independent review of a design | Grok, Gemini 2.5 Pro and DeepSeek, each handed a design document and asked to attack it before it was built. Operator's account; the reviews that changed code were kept. |
| A quick, bounded second opinion | Gemini 2.5 Flash, called from a script with the measured page timings pasted in and asked to rank five proposed fixes in 250 words, thinking budget zero. The script is in the 3D repo. Verified. |
| 3D from a photograph | Tripo v3.1, multiview then model, 70 credits for the current cat. Verified from the task logs; the whole story. |
| First drafts in a chat window: press pitches, page copy, product blurbs | ChatGPT, Claude and Grok, in whatever window was open. Operator's account. The drafts that survived review are in the repo; the conversations are not. |
| The live streams, the detector, the treat, the payments | No language model. ffmpeg, OpenVINO, Stripe, Home Assistant. |
Each one, plainly
Claude
Good at long agentic loops with files and a shell: measure first, then propose, then write the plan document a cheaper tool executes. Good at the awkward patch to a live file where one wrong line takes a site down. That is where it earns its cost, as the one that writes the brief and reads the report. Bad at being affordable as a bulk worker, and its API account is the one whose spend cap took the caption pipeline down on 2026-08-23. Would use again as the orchestrator. Not as the thing that writes four hundred captions.
Cursor
Volume. It is the tool the implementation tickets go to, and most of the code on these pages passed through it at some point. Where it lets you down is judgement about a system it cannot see: it will confidently edit a config for a camera it has never pinged. Pin the model it runs rather than leaving it on auto, and read the diff; the pin today is Grok. Would use again.
ChatGPT and Codex
Front-end and visual work, and a second voice when a draft needs one. It does not see the server or the cameras, so anything it writes about them is a guess until someone runs it. The operator keeps the seat and says it earns it on UI.
Grok
Adversarial review. Handed a design document and told to attack it rather than improve it, it produced lists of blockers that were real and got fixed. It has since become the model the operator runs inside Cursor, so it now does the bulk implementation as well; which lines are its in that seat is not separately recorded. As a reviewer with no stake in the code: yes, again.
Gemini
The workhorse. 2.5 Flash sees every frame; Flash-Lite writes every line; 2.5 Pro wrote an architecture review that is still in the repo; Flash ranked the performance fixes. Fast, about a second a call, and cheap. One quirk that cost an afternoon: through OpenRouter it spends its thinking budget out of max_tokens and returns an empty string when the budget is small, so the resolver floors the budget and turns reasoning off. It is what runs, and the log is the answer.
DeepSeek
Used as a reviewer and for second opinions, where it was competent and inexpensive. It is not in the caption chain today. Would use again for the same jobs.
The open models on Together AI
A second vendor that answers. Gemma 3n takes the frame and Llama 3.3 70B takes the line whenever the first lane does not respond, and nobody notices, which is exactly the job. One gotcha: it sits behind Cloudflare and returns a 403 without a browser-like User-Agent. As insurance: yes.
Tripo
The one generator on this build. It made a cat that passes "it is Helen" from a single photo for seventy credits, and then needed a compression pass, a turn, a scale and a hand fix before it shipped. Good at the thing it does and no idea whether the thing it did is any good; the judging was a person.
What the operator would tell you
- Pick by job, not by brand. The same vendor was the right choice for one job and the wrong one for another.
- Two vendors for anything unattended. Not because either is bad; because both will have a billing day.
- The expensive model writes the brief and reads the report. It does not see the four hundred items in between.
- Use a reviewer that did not write the code. The best fixes came from a model with no stake in the design it was attacking.
- A routing rule is only as real as the file that enforces it. Write the resolver first, then write the rule.
- Cap everything in the vendor's dashboard before the first lane runs. Code caps are for the second time.
- Trust the log, not the plan. The plan can say anything. The log says which model answered.
What this page cannot tell you
Which model writes better code, because nobody here measured that. What Cursor or ChatGPT cost per useful line, because that is a subscription and a feeling. Whether any of it will still be true next quarter; the caption chain changed twice in August alone. What it can tell you is which tool was standing in the room when each part of this got built, and whether the cat ended up on the screen. She did.
The prompts, the filter and the resolver are on the AI page. The one generator gets its own page.