К содержимому
Hub
Projects

Savol — an AI assistant for support teams

AI2026ИИRAGИнтеграции

A bot answers routine questions from the company knowledge base and hands over anything it isn't sure about.

Eighty percent of support tickets were the same: where's my order, how do I change my plan, why isn't the email arriving.

We wired the assistant to the company knowledge base — it answers only from there and doesn't invent. When confidence is low, the conversation goes straight to a human with the context already gathered.

We deliberately did not build a bot that answers everything. A bad automated answer annoys people more than waiting for a real operator.

How it's built

A fragment of the project's real code — so you can see what's inside.

TypeScript
type Bucket = { count: number; resetAt: number };const buckets = new Map<string, Bucket>();/** * Ограничение частоты запросов. * Защищает формы от перебора и спама. */export function rateLimit(  key: string,  limit = 8,  windowMs = 60_000,): RateLimitResult {  const now = Date.now();  const bucket = buckets.get(key);  // Окно истекло или его не было — начинаем заново.  if (!bucket || bucket.resetAt < now) {    buckets.set(key, { count: 1, resetAt: now + windowMs });    return { ok: true, remaining: limit - 1, retryAfter: 0 };  }  if (bucket.count >= limit) {    return {      ok: false,      remaining: 0,      retryAfter: Math.ceil((bucket.resetAt - now) / 1000),    };  }  bucket.count += 1;  return { ok: true, remaining: limit - bucket.count, retryAfter: 0 };}
Get in touch

Project request

Fill in the form — we'll discuss scope and timing.

Regarding: Savol — an AI assistant for support teams
Next project

Maktab — a school portal