概要
会議の文字起こしを貼り付けるだけで、AI(大規模言語モデル。以下 LLM)が決まった形の議事録に整え、社内に蓄積していく Web アプリを作りました。社内チャット(Slack)のアカウントでログインし、たまった議事録はキーワードや日付で探せるほか、選んだ議事録の内容をもとに AI に質問できます。さらに、Claude(Anthropic 社の AI アシスタント)のアプリから議事録を探したり、作って保存したりできる窓口も用意しました。
課題
-
会議の文字起こしは手元にあっても、そのままでは誤変換が多く読みにくい。議事録に整える作業が担当者の手間になっていた
-
人によって議事録の書き方がばらばらで、「何が決まったのか」「誰が何をするのか」を後から探しにくかった
-
過去の議事録がまとまった場所になく、「あの件はいつどう決まったか」を追うのに時間がかかっていた
-
議事録には社外に出せない話も含まれるため、社内の人だけが、見てよい範囲だけを見られる仕組みが必要だった
作ったもの
議事録の作成画面
-
文字起こしを貼るだけ: プロジェクトと会議日を選び、文字起こしを貼って送ると、LLM が誤変換を直しながら議事録に整理します。タイトルも内容に合わせて自動で付きます
-
いつも同じ形で出る: 「概要」「決定事項」「ToDo」「論点と議論」「重要な数値・期限」「注意点・例外」の決まった見出しで出力し、本文の先頭に目次を付けます
-
元の文字起こしも保存: 画面には出しませんが、元の文字起こしは議事録と一緒に保存し、後から作り直せるようにしています
議事録の閲覧画面
画面
できること
議事録一覧
左に一覧、右に本文を並べた 2 画面構成。プロジェクト・作成者・会議日(カレンダーで範囲指定、「過去 1 週間」「過去 1 か月」のボタン付き)で絞り込み
議事録の詳細
目次から見出しへ移動、本文の一部を選んでコメント・修正(修正前後を履歴として残す)、お気に入り(スター)登録、タイトルの変更
重要点マーカー
ボタンを押すと、LLM が不正・遅延・重要な数値・経営判断など「経営の目線で見落とせない」箇所を最大 10 件選び、本文に黄色いマーカーを引く
共有・書き出し
ログイン不要で読める共有リンクの発行と取り消し、ドキュメントツール(Notion)に貼り付けやすい形でのコピー
全体ダッシュボード
管理者だけが、全員の議事録をまとめて見られる
設定
管理者だけが、利用者の権限、プロジェクト、議事録を作る指示文(プロンプト)、AI の利用単価を管理できる
スマートフォンでは画面下にタブを置き、議事録・チャット・設定を切り替えて使えます。
議事録をもとに答えるチャット
一覧から議事録を選んで(ドラッグでも追加できます)最大 10 件まで「参考資料」として渡し、その内容をもとに AI が答えます。参考資料に書かれていないことは断定せず「記載がありません」と答えるよう指示し、どの議事録を根拠にしたかも示すようにしています。答えは少しずつ表示されるので、長い回答でも待たされません。
Claude のアプリから使える窓口
Claude のアプリにこのシステムを「つなぎ先」として登録すると、会話の中で次のことができます。
-
「先週の予約システム関連の議事録をまとめて」のように頼むと、一覧・キーワード検索で絞り込んでから本文を読み、答えます
-
文字起こしを渡して「議事録にして保存して」と頼むと、このシステムの決まった形式に沿って議事録を作り、保存して URL を返します
-
タイトルやプロジェクトの変更、本文の差し替えもできます。権限は Web 画面と同じで、自分が作った議事録(管理者はすべて)に限ります
この窓口から議事録を作るときは、文章を作る処理を Claude のアプリ側で行うため、システム側の AI 利用料はかかりません。
工夫したところ
AI の出力を安定させる
-
議事録は「タイトル」と「本文」の 2 項目を持つ決まった形のデータとして LLM に返させ、空の結果は失敗として扱います。メインのモデル(OpenAI 社)が失敗したときは、自動で別のモデル(Google 社)で作り直します
-
Claude のアプリから保存するときは、サーバー側で形式を確かめてから保存します。大見出しが混ざっていないか、決まった見出しが 3 つ以上あるか、日付やプロジェクトが正しいかなどを調べ、だめなら理由を返して Claude に直させます
-
重要点マーカーは、LLM が選んだ文が本文にそのまま含まれているかを確かめ、含まれていないもの(AI が言い換えたり作ったりした文)は捨てます。一度作ったマーカーは保存し、2 回目からは AI を呼びません
指示文(プロンプト)を管理する
-
議事録を作る指示文は、プログラムに書かずデータベースに「v2.0.0」のような版番号付きで保存し、管理画面から直せるようにしました。使う版は常に 1 つだけになるよう、データベースの制約で保証しています
-
大きく形式を変えるときは新しい版を追加して切り替え、既存の議事録を新しい形式で一括で作り直すスクリプトを用意しました。実際に形式を改めた際、既存の議事録をすべて作り直しています
-
Claude のアプリから保存するときは、最新の指示文の版番号を一緒に送らないと保存できないようにしました。指示文を変えた後に古い形式で作った議事録が紛れ込むことを防いでいます
AI の費用を見えるようにする
-
AI を呼ぶたびに、使ったモデル・文字量(トークン数)・費用・かかった時間・応答の中身を記録しています
-
費用はモデルごとの単価表から計算します。単価には適用期間を持たせ、値上げ・値下げがあっても過去の記録は当時の単価のまま残ります。単価は管理画面から変更できます
-
使う AI サービスの経路(各社の窓口に直接つなぐか、まとめて管理する中継サービスを通すか)を設定 1 つで切り替えられるようにし、契約状況に合わせて変えられるようにしました
見てよい範囲を絞る
-
ログインは社内チャットのアカウントだけに限り、さらに許可したワークスペースの人しか登録できないよう、データベース側でも拒否しています
-
一般の利用者は自分が作った議事録だけ、管理者はすべてを見られるようにしました。この制限はデータベースそのもの(行単位のアクセス制御)にかけているため、Web 画面からでも Claude のアプリからでも同じ範囲しか読めません
-
Claude のアプリからの接続は、標準的な認可の手順(OAuth 2.1)でログインと同意を経てから使えます。権限は毎回データベースから読み直すので、管理者を外せばつなぎ直さなくてもすぐ反映されます
-
共有リンクは、作成者か管理者が明示的に発行したときだけ作られ、いつでも取り消せます。検索エンジンには全ページを載せないよう設定しています
データを壊さない
-
議事録の保存は「会議 → 文字起こし → 議事録 → AI の利用記録」の順に書き込み、途中で失敗したら最初の会議ごと消して、中途半端なデータを残しません
-
本文の修正履歴は書き換え・削除できない記録として残しています
-
本番と確認用の環境でデータベースを分け、データベースの変更は手順書どおりのファイルとして管理し、本番への反映時に自動で当たるようにしています
