はじめに
こんにちは、ZOZOTOWNアプリのバックエンド開発を担当している佐藤です。弊社では、お客様からの問い合わせに対して、開発エンジニアも調査に関わります。この記事では、OpenAI社のEmbedding APIを活用し、お客様への返信プロセスを簡略化した事例をご紹介します。
目次
課題
開発部門が対応するお客様への返信プロセスについて、既存の対応フローは以下の通りでした。
問い合わせを調査する上で、「対応チームへのエスカレーション判断が属人化している」ことに課題感がありました。ZOZOTOWNの仕様全般に関する問い合わせは1つのSlackチャンネルで受け付けており、担当チームが多岐にわたるため、振り分け役が必要でした。この状況により以下の問題が発生していました。
- 内容の精査と担当チームへの振り分けが特定メンバーに依存
- 月100件程度の通知を捌くため、エンジニアの作業が中断される
- 会議などでアサインが遅れると、リードタイムに影響する
- 担当不明・アサイン漏れなどのヒューマンエラーが生じる
解決アプローチ
これらの課題をまとめて解消するため、エスカレーションの振り分けを自動化できないか検討しました。もともと問い合わせ対応のデータはGoogleスプレッドシートで個人情報を省いた状態で管理しており、類似判定に使える十分な事例データが揃っていました。そのため、対応データを元に担当チームを特定できるEmbedding APIを選定しました。主な技術構成は以下の通りですが、なるべくコストをかけない制約の中で、適切な対応チームをSlackで自動メンションする「問い合わせ自動振り分けBot」ができました。
主な技術構成
ツール・サービス | 役割・用途 |
---|---|
Slack | 問い合わせ投稿(ワークフロー)と調査ログの管理 |
Zapier | Slack投稿をトリガーに、Embedding APIを呼び出す。結果をスプレッドシートに登録する |
Embedding API | 問い合わせ文をベクトル形式に変換 |
GAS(Google Apps Script) | ベクトル比較処理、Slack通知メッセージの生成 |
Googleスプレッドシート | 問い合わせ内容、ベクトル、回答までのリードタイムなどの情報を一元管理 |
補足事項
- 当初Zapierでは類似度計算ができなかったため、比較処理はGASで代替
- Googleスプレッドシートには自動で振り分けられたチームと実際に対応したチームを記録し、精度改善に活用
- Embedding APIの利用コストは月間約100件で1円未満に収まっており、ランニングコストも非常に低い
導入による効果
属人化の排除
- 特定メンバーや時間帯に依存しない即時対応が可能になった
- 月単位の正答率は約82%で、例外的な問い合わせだけを人が対応すれば良い状態になった
作業コストの削減
- 通知処理の自動化により、他作業への割り込みが解消できた
- 回答までの平均リードタイムが約0.4営業日短縮と、シームレスな返信が実現できるようになった
得られた学び
- データ蓄積が属人化を解消に効果的であった
- Slack・Zapier・GASの構成は小規模から導入しやすく、柔軟なスケーラビリティを持つ
- Embedding APIの活用により、過去の問い合わせ知見を機械的に再利用する仕組みを作れた
まとめ
データを取ること自体が業務改善に繋がり、日々の「ちょっとした判断」や「仕分け作業」からでも無理なく始められることが分かりました。Slackを起点とした業務オーケストレーターは拡張性があり、Embedding APIを組み合わせることで、属人化や作業負荷といった課題は着実に解消されました。なにより、「一秒でも早くお客様に返答したい!」という想いを、届けられる体制を作れたことが最大の成果となりました。
さいごに
ZOZOでは、一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください。