種別 AIチャットボット・WhatsApp連携
ステータス プロトタイプ(稼働中・テスト段階)
技術スタック Claude API · Supabase · Twilio · Python · Railway
開発時期: 2026年5月
課題
インドネシア・バンドンにある日用プラスチック製品(椅子・ジェリカン・収納用品など)の小売店です。取扱SKUは3,000点以上にのぼります。
毎日、顧客からWhatsAppに同じ内容のメッセージが届きます:
- 「○○ブランドの椅子はいくらですか?」
- 「20リットルのジェリカンは在庫ありますか?」
スタッフはこれらの繰り返しの問い合わせに多くの時間を費やしていました。さらに、商品価格は頻繁に変動するため、3,000点もの商品の最新価格をスタッフが把握し続けることは困難で、誤った価格を案内するリスクがありました。
問題のまとめ: スタッフの工数が低付加価値業務に浪費され、価格案内のミスも発生しやすい状況。
ソリューション
在庫データベースからリアルタイムで情報を取得し、価格・在庫の問い合わせに自動で回答するAI搭載WhatsAppアシスタントを構築しました。
顧客はこれまで通り店のWhatsApp番号にメッセージを送るだけ。アシスタントが24時間365日、常に最新データをもとに即座に回答します。
仕組み
顧客がWhatsAppでメッセージ送信
↓
Twilioがメッセージを受信し、Pythonアプリへ転送(Railwayでホスティング)
↓
PythonアプリがClaude APIを呼び出し
↓
Claudeが必要なツールを判断・呼び出し:
→ get_item_info(item_name) — 価格の問い合わせ
→ get_stock(item_name) — 在庫の問い合わせ
↓
ツールがSupabaseデータベースをリアルタイムで検索
↓
Claudeが結果を受け取り、自然な返答を生成
↓
Twilio経由でWhatsAppに返信
技術詳細
AIモデル: Claude API(Anthropic)— ツールユース(Function Calling)機能を使用
データベース: Supabase(PostgreSQL)— リアルタイム在庫データ
メッセージング: Twilio WhatsApp API
バックエンド: Python(Railwayでホスティング)
検索方式: 大文字小文字を区別しない部分一致検索(ilike)— 商品名の一部入力にも対応
本システムでは、Claudeの ツールユース 機能を採用しています。事前にすべてのデータをプロンプトに詰め込む方式ではなく、Claudeが必要なタイミングで必要なデータのみをデータベースに問い合わせます。これにより、精度・コスト効率・スケーラビリティが大幅に向上しています。
システムプロンプトにはXMLタグ構造(role, scope, fallback)を使用し、Claudeの応答範囲を明確に制限。店舗関連の質問にのみ回答し、顧客の言語(インドネシア語または英語)で返答、商品が見つからない場合は適切なフォールバック応答を返します。
成果
- スタッフがWhatsAppでの繰り返し問い合わせ対応に費やす時間をゼロに
- 価格精度の向上 — データベースから直接取得するため、記憶ベースの案内ミスがなくなった
- 24時間365日対応 — 営業時間外でも顧客が即座に回答を得られる
- 現在プロトタイプ段階 — 実際の顧客トラフィックでテスト中
得られた知見
- データベース連携型チャットボットにはツールユースが最適 — プロンプトへのデータ一括埋め込みより、Claudeが必要に応じてクエリを実行する方式の方がクリーンで信頼性が高い
- システムプロンプトの構造が品質を左右する — XMLタグ(
<role>,<scope>,<fallback>)を使った構造化により、動作の一貫性とデバッグ効率が大幅に改善 - 実業務データには不整合がある。 — 略称SKUが3,000点あることが既知の課題。キーワード・別名カラムの追加で自然言語マッチングを改善予定
現在の制限事項
- 商品名の照合は部分テキスト検索に依存しており、略称SKUによる自然言語クエリの誤マッチが発生することがある(バックログで対応予定)
- プロトタイプ段階 — まとめ買いや特別価格などのエッジケースは未対応
- セッション間の会話記憶機能は未実装
インドネシア・バンドン在住の独立系AIデベロッパーが開発。同様のプロジェクトのご相談も承っております — [ご興味がございましたらお気軽にお問い合わせください。]

