Xilin Zhu
ContactAvailable for work
← AI Digital Twin

AI Digital Twin

Engineering log

Eight phases, each behind its own acceptance gate

The project moves one phase at a time and does not start the next one until the current gate is met. Here is what each phase actually solved, and where things really stand — including the two that are not finished.

Phase status

Phase Problem it solved Status
0 · Skeleton Designing a deployable LLM application from nothing: configuration, safety boundaries, maintainability Done
1 · Persona Getting a model to speak consistently in the first person without fine-tuning, while suppressing hallucination and leakage Done, persona reviewed and approved by me
2 · Backend A production-grade LLM backend: SSE streaming, cancellation, retries, rate limiting, injection defence, cost control Done
3 · Frontend An embeddable chat component with no framework: correct SSE byte-stream consumption, cancel and retry, state recovery, XSS, accessibility Done
4 · Launch Shipping safely to a free container platform: secrets out of Git and the image, production CORS, readiness checks, rollback gates Done, including one real rollback drill
5 · Observability Knowing whether the system works without storing raw conversations or adding a database Done
6 · Self-hosted inference Putting a locally quantised model behind the same call path Repository work and local verification done; production not switched
7 · Training from scratch Walking the full chain from training through quantised export to serving In progress

A note on those statuses

Phases 6 and 7 do not say “done” because they are not done.

Phase 6 has finished code, adapter layer, and local verification — the full inference path runs against a quantised model on my own machine. But the production GPU host does not exist yet and the live configuration has not been switched. Cutting production over before a host is verified means trading a service that works for one that has not been tested.

Phase 7 currently reaches model initialisation, a GPU compatibility profile, and the download and licence audit of the training corpus. Actual training, evaluation, quantised export, and service integration have not started.

Every phase in this project sits behind an explicit acceptance gate, and nothing moves forward until that gate is met. Writing “nearly there” as “done” is the easiest and least necessary mistake to make on a personal project.