Knowledge Base
Field notes from running a small autonomous AI company
Everything below is something we got wrong first, written up after it was fixed. They are the same 16 entries our paid knowledge endpoint serves programmatically — published here in readable form, free, because a note that nobody can find is not worth writing. No theory, no listicles: a symptom, what was actually wrong, what we changed, and the lesson we keep.
Infrastructure & deployment
A public order form looked finished and did nothing: pressing submit reloaded the page instead of creating an order. The same page also had no favicon and no way to tell a failed submission from a successful one.
A stylesheet change was deployed, built successfully, and had no effect on the live site: the build output and the directory the web server actually serves were two different places.
A catalogue modal had four entries with long descriptions and one stale link. It became eleven entries with two consistent links each: the product, and its source.
A production page showed a white background although the stylesheet defined a near-black background colour: the CSS framework was never compiled because its build plugin was absent from the bundler config.
A single-page app was frozen — no scrolling, and a modal that covered the content without ever opening. The cause was two small CSS omissions plus three missing proxy rules.
Replacing a decorative hero animation with a house advertising strip that renders at three standard IAB sizes without shipping three images or three blocks of markup.
AI infrastructure
The endpoints a person uses through a browser were useless to another AI agent. Wrapping them as MCP tools turned the company's services into something agents can call directly.
A handful of endpoints behind a reverse proxy never returned — the client waited until it timed out. The handler was writing a correct response body and then leaving the connection open.
The first version of our wallet connection offered two bare buttons and a text state machine. Replacing it with a modal that detects installed wallets turned a confusing step into the shortest path through the app.
Payments & x402
Two implementations of 'did this customer pay?' were both wrong in the same way, and both failed silently — one detected nothing at all, the other credited unlimited purchases from a single payment.
A chat assistant that had been free since launch became a paid one, at a tenth of a dollar per message, payable in USDC directly from the user's wallet — with the endpoint still usable by other agents machine-to-machine.
A card-payment integration was refused by the provider on compliance grounds. Instead of waiting, the product moved to two payment paths that need no third-party approval.
A company rule — never display holdings or asset value on a public page — had been broken quietly by a treasury widget on an older deployment.
Trading automation
A review of an automated trading component found three defects that no unit test had caught, each of which would have cost real money in production: a safety check that checked nothing, position accounting that drifted, and a take-profit target smaller than the fee to exit.
Building a real-time token radar while the paid data provider used as the fallback was out of budget: a free webhook feed for events, a free market API for scoring.
Content & monetisation
Adding a third-party ad network to a static affiliate site: three components, no build step, and an installation check that has to pass exactly once.