
An assistant in the VITON ID cabinet that answers from its own catalogue first — cards with real prices, in the member’s language — and calls a self-hosted model only when nothing else fits.
Overview
Members signed in to VITON ID should be able to ask what VITON13 sells and get real items with real prices in their own language, not a model’s guess. An earlier version gave the model only site-search hits, meaning titles and paths; asked how much a website costs, it had nothing to answer with, so it hedged or invented a figure.
The assistant also must not shop for the member. It may suggest items, but the member chooses, and nothing goes into the bag without that choice.
84
catalogue items per language: 32 products, 52 studio packages
Source: Assistant catalogue, 19 Sep 2026
5
languages the assistant works in
Source: VITON ID cabinet, 19 Sep 2026
6
cards at most in one answer
Source: Assistant route in the code
8 per 5 min
message limit per member
Source: Assistant route in the code
Approach
I built the VIT LIVE tab of the cabinet, where the panel is titled VIT ASSISTENT, and the server route behind it. Every request is checked for a signed-in session: a visitor who is not signed in gets a 401 response and never reaches the assistant.
Behind the panel sit three layers. A catalogue of 84 items for each language: 32 products from Old Money, RISE, ANIRI and VITON XIII, and 52 studio packages from 13 service pages. Fixed replies for greetings and for questions about the assistant itself, plus exact answers on prices, ordering, discounts, bonuses and reply times, read from the service price ladders and the bonus rules. And, as the last step, a self-hosted language model that works from a fact sheet and the site’s own search.
Every message goes through the same order, and the first step that matches gives the answer. For questions about buying, products, services, the store or the bag, a keyword matcher ranks the catalogue for the cabinet’s language and replies with up to six priced cards, labelled VITON13 CATALOG, without calling a model. Only if nothing matches does the question reach the model, served by Ollama, which is told to answer in the member’s language in one to three sentences and to say that the price is confirmed after the brief instead of guessing.
Gallery
Results
The VIT LIVE tab is part of the VITON ID cabinet in all five site languages. On 19 September 2026 the live route turned away a visitor who was not signed in with 401 REGISTRATION_REQUIRED, as intended. The catalogue holds 84 items in each language: 32 products and 52 studio packages.
The model step is used when the model server is configured; the code names gemma3:4b as the default model and lets the server’s environment choose another. Eleven automated tests cover the model call and its error when the server is down, the fact sheet, the rules for when web search runs and the fixed replies; all eleven passed on 19 September 2026.
What this does not prove
This is VITON13’s own product, not client work. It is not a public chat widget: only members signed in to VITON ID can use it, and there are no usage or conversion figures to report. It does not take orders or pass requests to the studio; those go through the forms on the service pages.
Matching is by keywords, not meaning: there are no embeddings and no vector store. The word lists have gaps and differ between languages, so some questions miss the right cards. The catalogue is not the whole site either: it holds 3 of the 5 VITON XIII fragrances and no VIT MARKET goods, and the fixed answers on prices and ordering are written only in Russian and English.
The case does not show the model running in production or judge the quality of its answers.
Planning something similar? I read every message myself.
Next project
VITON13 brand identitiesMarks and wordmarks
Internal2026
All work (19)
