October 4, 2026

2 views

An AI assistant that works instead of chatting: how we built an agent into the KralStroy dashboard

KralStroy is a public multilingual job site and a single workspace for the team: a web dashboard, an Android app, an internal chat and an AI assistant. All applications and requests end up in one place. The assistant is the dashboard's key feature: a side panel, like in cloud consoles, where an employee writes in plain language and the assistant does the work.

The idea grew out of my own routine. For eBilim I had to add a lot of content, in four languages: translate every text and fill in every form field by hand. It turned out to be incredibly boring. In KralStroy the same task now takes a single message: an employee describes the vacancy, and the draft is ready.

What it can do. The assistant searches and lists applications and requests by status, age and text, gives an overview by section, and reads vacancies, FAQs, reviews, articles and reference lists. Ask it "how many new applications does this vacancy have, and from whom" and it answers with data from the database, not guesses, linking straight to the records in the dashboard. Its instructions are strict: people, numbers and statuses come only from tools.

Nine actions — all confirmed. The assistant can change data: move an application or request to another status, add a note to it, publish and unpublish vacancies and articles, show and hide FAQs and reviews, and create a vacancy draft. But no change happens on its own. Before anything runs, the employee sees a card with the record's name and two buttons: "Confirm" and "Reject". The assistant does not retry a rejected action unless asked again. It cannot delete records, and it cannot write in the chat on an employee's behalf.

A confirmation that cannot be forged. The "Confirm" button is not just a flag sent by the browser — otherwise anyone could send "approved" and bypass the interface. Each confirmation is signed on the server with a dedicated key, and without a valid signature the tool does not run. Every action of the assistant is logged: who did what, to which record, and with what result.

It sees exactly what the employee may see. The set of tools is assembled for each person. If an employee has no permission to read applications, the assistant simply does not know about them: it has no tool for that. Changing data requires write permission for that section. The assistant can read the employee's conversations in the internal chat, but only their own and read-only. Other people's conversations are off-limits, even for an administrator.

A vacancy in three languages from one sentence. An employee describes the vacancy in their own words, and the assistant creates a draft in Russian, English and Turkmen at once. It looks up the city in the GeoNames catalogue, taking the country into account, takes the industry from the reference list, and defaults to the local currency. It does not invent salary, conditions or schedule: it writes only what the employee said. The draft goes through the same validation as the dashboard form, and only a human can publish it.

Candidate matching. You can ask: "find people for this vacancy". The assistant receives the vacancy details and short cards of open applications. It notes who has already applied and whether the city matches, and returns a top five as a table: why each person fits and what they lack. If nobody fits, it says so. Candidates' phone numbers and email addresses never reach the model. The assistant is not allowed to judge people by nationality, age or gender unless the vacancy requires it.

Protection against tricks hidden in data. The assistant reads applications, requests and chat messages, and those may contain text like "ignore your instructions and do…". So its instructions say to treat all of this as data, not commands, and the last line of defence is a human confirming every change. Links in the assistant's answers are checked too: only internal dashboard pages and ordinary web addresses are allowed, with no redirects to other sites.

Under the hood, the assistant runs on Gemini via the Vercel AI SDK, and the site and dashboard are built with Next.js, Drizzle ORM and PostgreSQL. It can take at most six tool steps per request, and the server limits both the history length and the answer length.

Honestly, a year ago I would not even have thought of this. I think I first saw an assistant like this at Vercel: it genuinely helped me find my way around their interface. Then I noticed one at Hostinger, and in my view Cloudflare has done it best. A helper like this is, first, simply convenient. And second, when you work with an unfamiliar interface and someone is ready to help, the fear of the unknown goes away. That is exactly what I wanted to give the KralStroy team.

You can see KralStroy live on a demo instance with test data: kralconstruction.bridgecore.systems. If you need an assistant like this for your own system — with permissions, confirmations and an audit log — write to us using the form on the home page.

Back to all news