Challenge
A buyer on a development’s website wants to know one thing: is this flat still available and how much does it cost. The developer already had an AI assistant, but a comparison test exposed errors that sales cannot accept. It described a reserved unit as available, offered two-room flats when asked about three rooms, and counted available units from the knowledge base instead of from the offer.
The second problem was architecture. The previous solution served a single client and was hard to extend. We wanted a platform where more developers could be added safely, each with separate data, cost limits and a dashboard.
Approach
We set a rule that numbers and prices come only from live data. Hard criteria such as the number of rooms, budget or development are resolved by an ordinary database query, and the model receives the full list of matching units, not a sample. Semantic search is left for descriptive questions about the area, standard and deadlines.
We chose the model after testing six candidates for accuracy, resistance to attacks, cost and time to first word. Where a prohibition in the model’s instructions proved too weak, the rule is enforced in code. For example, conversation summaries are checked by a separate filter, because the prompt alone was not enough.
Implementation
We built the platform from scratch as a multi-client system: an API, a dashboard with conversations and leads, a widget embedded on the website (about 5.5 KB) and a WordPress plugin. The offer can be fed from a file, a feed, WordPress or data published on dane.gov.pl. Large withdrawals of units wait for approval, so that an import error cannot wipe the offer.
Security has several layers: invisible traffic verification, client data isolation at database level (RLS), a prompt injection filter in front of the model and an output guard that cuts off an answer when it tries to leak instructions. The first client was switched over on 29 September 2026, with the old system kept as a way back.
Results
In a comparison test on 106 scenarios, the new version won 81 times, drew 18 and lost 6. Answers with invented facts fell from 5 to 0. The average accuracy score rose from 3.38 to 4.16 on a scale of 1-5, and the median answer length dropped from 403 to 178 characters. An independent judge model did the scoring, without knowing which version was the new one.
Optimising the prompt for caching cut the cost per answer by 59%, and time to first word fell from 1.6 to 0.85 s. In security tests the assistant repelled 20 out of 20 attacks. We will measure the effect on the number of sales enquiries after a full season.











