This site has an AI clone of me that answers questions about my work. I built it on two constraints: it may only state figures that appear in its knowledge base, which is compiled from the same verified content as the rest of the site, and it runs only on free models. Both constraints shaped every problem that followed.

Free models fail often, so fallback is the product

Free models on OpenRouter are rate-limited, and they appear and disappear. The clone checks a live catalogue for models priced at exactly zero, keeps a preference order, and falls back from one model to the next when a request fails. If every model fails, it answers from pre-written responses and says so. I treat the fallback chain as the product and the model as a replaceable part.

The first real failure: the model thought out loud

Soon after launch, the question "How did you scale ZenCabs?" got an answer that began "Here's a thinking process". A free reasoning model had written its working into the reply, including the rules it had been given. Another request thought silently for so long that the platform's time limit cut it off and the visitor saw a gateway error.

The fixes were structural. The response now starts immediately and every model is tried inside a fixed time budget. The first 80 characters of each answer are held back and checked, and a model whose opening reads like reasoning is dropped for the next one before the visitor sees a word. Reasoning models moved to the back of the queue.

Then it was slow

The next complaint was lag in both chat and voice. Voice was waiting for the whole answer to be turned into audio before playing anything, so it now speaks sentence by sentence and fetches the next sentence while the first plays. Chat was waiting up to 15 seconds on a slow model before trying another, so it now starts a second model after 4 seconds and keeps whichever produces a clean answer first. The knowledge base was trimmed by about a fifth, removing lines the case studies already covered.

Then answers were cut off

Answers started losing their last word. The filter that removes hidden reasoning tags held back the last few characters in case they were the start of a tag, and once an answer was showing, it never released them. Every test I had run checked how answers began, and none checked how they ended. The lesson I took is to test the way a person reads, all the way to the last line.

Style is a constraint too

A clone that writes like a chatbot undermines the point of the site. The model is instructed to write plain sentences without dashes or stock phrasing, and because free models ignore instructions some of the time, dashes are also normalised as the answer streams. The pre-written fallback answers were rewritten in the same style.

What I took from it

Getting a model to produce a good answer once was the easy part. Nearly all the work went into what happens when it fails, stalls, leaks or drifts: the fallbacks, the time budget, the checks on the opening, the test on the ending. That matches what I saw with the internal audit AI tool at PwC India, where adoption and reliability took more effort than the model did, and it is why my thesis on applied AI puts reliability and adoption at the centre.

You can test the result yourself: ask the clone anything about my work.