Design case · Stand-in domain · Not deployed
LLM cost stays near $11 a month at 1,000 or 20,000 daily users, against up to $15,300 for an LLM on every request (estimates). The home screen never waits on a model, and the ML hire waits until traffic justifies it.
Read the caseThe setting is a stand-in. The original is confidential client work. The domain, values and costs here belong to the stand-in.
LLM cost stays flat as traffic grows: about $11 a month at 1,000 or 20,000 daily users, against $765 and $15,300 for an LLM on every request.
Three other gains come with the design. The home screen never waits on a model, every ranking can be replayed exactly, and the logs are ready for training from day one.
Hiring is staged, too. Stage 2 gives the largest jump in personalisation for $6 more a month. The ML engineer a learned ranker needs waits until traffic justifies it.
How: the LLM runs only as offline batch jobs, tagging listings and drafting rules behind a human-in-the-loop approval gate. Costs are estimates. The design is not deployed, so there are no live metrics.
An LLM on every request would have fixed the name, not the design.
The brief asked for LLM-driven personalisation. My first draft was a nightly batch re-ranked by one set of hand-written rules — the same for every user, with nothing for new users.
A model call per request would grow cost with every app open, make the home screen wait, and rank the same request differently twice. So the LLM stayed, off the request path.
A used-car marketplace in Singapore, where every listing is one car and it sells.
Singapore adds the COE category, COE months remaining, annual depreciation and deregistration value — features in their own right.
Every signal is stored against the car’s segment, so it survives the sale.
The segment is make, model, variant, registration-year band and COE-remaining band. The trade-in lookup keeps only a budget band, body type and COE-expiry bucket. The plate number is dropped.
Filters run before scoring, so a sold car never takes a slot. Shared weights are scaled by each user’s filter habits — 1.6× on value for the user below.
Every response logs what was shown and why. The later stages learn from that log.
Stage 2, weekday lunch: a Civic driver who filters by depreciation and price. Illustrative values.
Three jobs, none on the request path.
The model proposes. Scripts check. People decide.
Fig. 01
The model runs as an offline batch job behind a human-in-the-loop approval gate. The home request reads only what is already stored.
Each stage produces the data the next one needs.
Moving to the next stage is a staffing decision.
Staff cost more than the cloud. Stage 1 needs 20–30% of one person’s time, Stage 2 adds 30–50% of an analyst, and Stage 3 adds half to one full-time ML engineer. All assumed. The stage costs above are cloud bills at 1,000 daily users, estimated.
The argument is the slope: cost follows new listings, not traffic.
The bigger gains are not money. The home screen never waits on a model, every ranking can be replayed exactly, and the logs are shaped for training from day one.
Fig. 02
Monthly LLM cost, estimated from public list prices, September 2026. Tagging 8,000 new listings a month is $9 of the $11.
Three things would break it.
A share, not a label: home requests served from personal candidates rather than the fallback. Every snapshot records which, so the number comes for free.
The levels are my own scale: L1 is context and segment, L2 individual inputs on shared weights, L3 weights learned from data.
Costs are estimates. AWS Asia Pacific (Singapore) on-demand and Claude API list prices, September 2026, with the batch discount for offline jobs. 8,000 new listings a month with 20% re-tagged, 5 home requests per daily user and twelve weekly draft calls. Load balancer, data transfer, monitoring, backups, failover, non-production environments and staff time are not included.
Sources. COE and bidding (LTA), PARF and deregistration value (LTA OneMotoring), loan-to-value limits (MAS). Unique-inventory cold start draws on published eBay, FINN.no, OLX and Airbnb work.
Everything else — weights, bands, thresholds, token counts — is an assumption, not a measurement.
That is one system, designed and costed before a line of code. The rest of my AI work is on the AI page.
Notice — Any screen shown here as a recreation was rebuilt from scratch for this portfolio using fictional data. No client-owned screens, source files or confidential material were used. Publicly published material is credited on the card that shows it. Recreations produced 19 Aug 2026; working files retained. This case is a design worked on paper. It began in confidential client work, so it is set in an unrelated stand-in domain. Values are illustrative and costs are estimates from public list prices.
© 2026 Jiwon Nam · South Korea