---
id: "lib-2026-11-06-a-home-built-meeting-assistant-anonymous-chrome"
type: "library"
title: "A home-built meeting assistant: anonymous Chrome in a container, calendar via EWS, and two thousand meetings in production (Ассистент Встреч своими руками: анонимный Chrome в контейнере, календарь через EWS и две тысячи встреч в проде)"
lang: "RU"
org: "Habr-Author"
source_type: "Practitioner post"
date: "2026-11-06"
week: "2026-W45"
url: "https://nosov.ai/library/lib-2026-11-06-a-home-built-meeting-assistant-anonymous-chrome/"
original_url: "https://habr.com/ru/articles/1104684/"
tier: "A"
tier_name: "Strong evidence"
tier_reason: "Very detailed first-hand Habr engineering report on an in-house meeting recorder, with four months of production figures from its own databases, measured fixes and a costed server bill."
summary_basis: "full-text"
original_minutes: "37"
tags: ["ai technology", "enablement", "meeting transcription", "on prem speech recognition", "ms teams integration", "knowledge capture for agents"]
---

# A home-built meeting assistant: anonymous Chrome in a container, calendar via EWS, and two thousand meetings in production (Ассистент Встреч своими руками: анонимный Chrome в контейнере, календарь через EWS и две тысячи встреч в проде)

Tier A (Strong evidence): Very detailed first-hand Habr engineering report on an in-house meeting recorder, with four months of production figures from its own databases, measured fixes and a costed server bill.

Summary based on the full text.

## In short

A Habr post (6 November 2026) by an engineer at a Russian company that runs on Microsoft Teams describes a self-built meeting assistant. Regular channel meetings are handled by a team bot that picks up the Teams recording from SharePoint; all other meetings (private, client tenants, Yandex Telemost, MTS Link) get a "Meeting Assistant" account that people invite, which sends an anonymous Chrome guest in a Docker container. Transcription, diarisation and summaries run on an internal service with a local model, so audio stays inside. About 2,100 meetings were processed in four months.

## Key numbers

- ~2,100: meetings processed by both flows in four months (to 31 October 2026)
- 4.4 min: median from end of recording to ready materials for invited meetings (p90 11.2 min)
- 18%: of 1,268 bot join attempts that did not get in; 48% of those were lobby timeouts, i.e. nobody admitted the bot
- ~4.5 rubles: cost per hour of audio on an in-house server with two RTX 3090 cards, at full load
- 19 of 38 vs 38 of 38: correct speaker-name assignments by majority voting versus a two-pass assignment method, on 10 meetings

## What it reports

- Why not built-in tools: on a few internal meetings Teams' Russian transcript captured 26-37 words per minute against 99-108 for the in-house pipeline; Copilot needs a licence per person; other platforms are not covered.
- Invited flow (from 19 August to 31 October): 1,268 join attempts, 227 (18%) failed to get in, 1,015 recordings, 803 hours, 92 unique organisers. With the June-July pilot, about 1,170 recordings and 920 hours.
- Adoption: 6 organisers the week before the public announcement, 34 the week after; median 7 meetings per organiser, 35 people with more than 10.
- Channel flow: 1,121 recordings, 1,004 summaries published in 18 teams; 96.3% published since 1 July; median 4 minutes from recording to summary.
- Lobby: the bot cannot be admitted by API; about 15% of staff press the wrong button on Microsoft's confirmation dialog. Moving the spawn to 50 s before start cut median admission from +135 s to +64 s.
- Speaker naming: polling the speaking indicator every 200 ms raised recall from about 25% to about 100%; a two-pass 1:1 assignment matched all 38 test cases where voting got 19.
- Posting to meeting chats: a browser-based poster produced false successes and failures; switching to delegated Graph raised chat delivery from 91% in September to 99% in October.
- Capacity is CPU-bound: turning off incoming video cut decoded frames by 81% and median CPU per recording from 55% to 37%.
- Cost: about 77 rubles per server hour (hardware, power, support time); one audio hour takes 3.5 server minutes, about 4.5 rubles.
- Transcripts (raw, not summaries) feed an internal digital-staff agent platform, with consent per person and private meetings excluded.

## How they got it

Figures come from the system's own Postgres analytics and logs; some quality checks (transcript comparison, speaker naming on three meetings) were done by hand on small samples, which the author flags.

## Limits

- Transcript-quality comparison with Teams covers only a few meetings; the author calls it a guide, not a benchmark.
- Summary quality is not measured; no user satisfaction data.
- Cost excludes premises and payroll taxes and assumes full server load.

## Why it matters for companies

The recognition model was the easy part. Most of the work went into consent (the bot records only when invited and admitted), identity and permissions in Microsoft 365, delivery to where people already look, and checking delivery on the server side rather than trusting the UI. For firms weighing per-seat meeting copilots against an in-house tool, the post gives real failure rates, adoption curves and a unit cost. Meeting transcripts also become context for internal agents, which raises consent and retention questions to settle up front.

## Key passages in translation

> Распознавание, диаризацию и саммари делает внутренний сервис на своих серверах и локальной модели. Наружу аудио не уходит.

Recognition, diarisation and summaries are done by an internal service on our own servers with a local model. No audio leaves.

> Общий урок: критерий успеха — серверное подтверждение доставки, а не состояние UI.

The general lesson: the success criterion is server-side confirmation of delivery, not the state of the UI.

> Записывать встречи технически несложно. Сложно сделать это так, чтобы сотруднику потом не пришлось ничего делать, а результат приходил туда, где его ждут.

Recording meetings is technically not hard. The hard part is doing it so that staff need to do nothing afterwards and the result arrives where they expect it.

Original: https://habr.com/ru/articles/1104684/
