会社のホームページに問い合わせが届いたら、相手の社名で検索して、ホームページやIR資料を読み、ニーズを推測してから返信する。この下準備を、問い合わせが届くたびにAIが済ませてくれる仕組みを作りました。非エンジニアの私が自分で作り、いまも自社(株式会社AI Orchestra)で毎日動いています。
動きは次のとおりです。
- 会社HPのお問い合わせフォームに問い合わせが届く
- AIが相手の会社の基本情報をリサーチし、問い合わせ内容からニーズを推測する
- 分析メールが届き、同じ内容がNotionの問い合わせデータベースに溜まる
この記事では、動画で実演した「Codexに依頼して作る手順」を、依頼文つきでまとめます。後半には、自社で動かしてからつまずいた所を書きました。
画面の操作も含めて動画で見たい方はこちら: 会社HPの問い合わせをAIで自動分析!GPT-6 Astraで受注率を爆上げ(YouTube・5分39秒)
前提
- Codex(ChatGPTデスクトップアプリから使います)。モデルは GPT-6 Astra を選ぶ(理由は手順3)
- 問い合わせフォームのある自社サイト。サイトのコードが手元にあり、Codexから読み書きできること
- Notionのワークスペース
私の環境では、サイトは Next.js で作って Vercel に載せています。フォームの内容はデータベース(Supabase)に保存し、メールはメール送信サービス(Resend)から送り、Notion へは Notion API で書き込んでいます。同じ構成である必要はありません。下の依頼文は、構成を指定しない書き方になっています。
手順1 人がやっていることを書き出す
最初から「問い合わせ対応を自動化して」とは頼みません。先に、いま人がやっていることを書き出します。
私の場合、問い合わせが届いたときにやっていたのは次の流れでした。
- 社名で検索して、従業員数や売上高などの会社規模を調べる
- ホームページやIR資料を読む
- 問い合わせに書かれた内容から、ニーズを推測する
- そのうえで提案資料を作り、最初の商談に臨む
整理すると、やっていることは2つです。
- 会社の基本情報のリサーチ
- ニーズの推測
手順2 Codexに渡すコンテキストを3点そろえる
次に、どこまで伝えれば思ったとおりに動いてくれるかを考えます。渡したのは3点です。
| 渡すもの | 中身 | 渡す理由 |
|---|---|---|
| 会社ホームページのURL | 問い合わせフォームのある場所 | フォームの記入項目に合わせてリサーチが走るため |
| 人がやっているワークフロー | 手順1で書き出した2つ | 何を自動化したいのかを、人の手順のまま伝えるため |
| アウトプットの形 | 通知メール・分析メール・Notionのデータベース | 結果をどこで受け取るかを先に決めるため |
手順3 Codexに依頼する
3点をそのまま1つの依頼文にします。次は、動画で送った依頼文をもとにした文面です(記事用に一部を省いています)。動画では音声入力で入れています。URLは自社サイトのものに置き換えてください。
https://www.ai-orchestra.ai/#contact
ここにお問い合わせフォームがあります。
お問い合わせがあったら、
1. 会社の基本情報のリサーチ
2. お問い合わせ内容から分かるニーズの推測
を自分で手動でやっているんですが、これを自動化する仕組みを作りたいです。
お問い合わせがあったら、通知メールと分析メールを送ってほしい。
あと、Notion にお問い合わせのデータベースを溜めていってください。
送る前に、入力欄のモデルが GPT-6 Astra になっていることを確かめます。安いモデルで試すと、AIの今の限界値が分かりません。事業で使うなら、まずフロンティアモデルで頼み、「このくらいはできる」という感覚を先につかむほうが大事だと考えています。
受け取り方: メールはフロー、Notionはストック
出来上がると、問い合わせ1件につき次のものが届きます。
| 受け取るもの | 種類 | 中身 |
|---|---|---|
| 通知メール | フロー | 問い合わせが届いたことと、その内容 |
| 分析メール | フロー | 見込み度と判定理由、会社規模、サマリー、会社の基本情報、Notionのページへのボタン |
| Notionの問い合わせデータベース | ストック | 1件が1ページ。会社規模・公式サイト・受信日時・問い合わせ種別・売上高・営業利益・対応ステータスなどの列で一覧できる |
分析メールの件名は、動画のデモ(架空の会社)ではこうなっています。
【見込み度:中】リサーチ完了 株式会社ABC商事様(法人AI研修の問い合わせ)
件名に見込み度が入っているので、受信箱の一覧だけで優先度が分かります。
メールは届いた順に流れていく情報です。あとから「どんな会社から問い合わせが来ていたか」を一覧で見たいときには向きません。そこで、流れる情報(フロー)はメール、溜める情報(ストック)はNotionと、受け取り方を2つに分けています。
自社で動かしてつまずいた所
動画で見せているのは、依頼文を送って仕組みができるところまでです。自社で毎日動いている仕組みは、最初の版を入れたあと、実際の問い合わせを受けながら直してきました。そのたびにAIに原因を調べてもらい、修正を頼んでいます。実際に踏んだものを並べます。
1. リサーチは数分かかる。フォームの送信と切り離す
Web検索を重ねる調査は、1件に数分かかります。送信ボタンを押した人を待たせるわけにはいかないので、順番をこうしました。
フォーム送信
→ 内容を保存し、受付メールと通知メールを送る(ここで送信者に結果を返す)
→ 結果を返した後に、裏でリサーチを始める
→ 候補企業の照合 → 本調査 → Notionにページ作成 → 分析メール
※ 途中で止まった分は、5分おきの定期実行が拾い直す
リサーチ側で何が起きても、フォームの送信そのものは失敗させない作りにしています。
2. 裏の処理は止まることがある。状態を持たせて拾い直す
問い合わせ1件ごとに「未処理・処理中・完了・失敗」の状態を持たせ、5分おきの定期実行が未処理と失敗を拾い直します。再試行は3回までです。
ここで起きたのが二重処理でした。送信直後の処理と定期実行が同じ問い合わせを同時に拾うと、Notionのページとメールが重複します。処理を始めるときに「この1件は自分が取った」という印を1回の更新で付け、取れなかった側は何もしない形にして防ぎました。Notionのページを作った直後にそのページのIDを保存しておくと、途中で止まって再実行になっても、ページを作り直さずに済みます。
3. 長い調査が、毎回300秒前後で「Request timed out」になった
直るまでいちばん長引いたのがこれです。関数の実行時間の上限を延ばしても、SDKのタイムアウトを延ばしても、呼び出し開始からおよそ300秒で失敗しました。
原因は、AIのAPIを非ストリーミングで呼んでいたことでした。調査が終わるまで応答のヘッダーが返らず、Node.js標準のfetch(undici)のヘッダー待ちの上限(既定300秒)が先に切れていました。呼び出しをストリーミングに変えたところ解消しています。締め切りは自前のタイマーで管理する形にしました。
4. 同じ社名の別の会社を調べてしまう
社名だけで検索すると、同名の別会社の情報でレポートが埋まることがあります。対策として、本調査の前に「候補企業を照合する段」を入れました。
- メールアドレスが法人ドメインなら、そのドメインの公式サイトを最優先の手がかりにする(フリーメールは手がかりにしない)
- 問い合わせ本文に書かれた事業内容と、候補企業の事業内容を比べる
- 問い合わせに所在地が書かれていれば、候補企業の所在地と矛盾しないかを見る
- 独立した手がかりが2つ以上そろったときだけ最有力候補として採用し、絞り切れないときは「不明」と書かせる
5. フォームの本文を、AIへの指示として読ませない
問い合わせの本文は、外から届く未検証の文章です。そこに「これまでの指示を無視して」のような文が書かれていても従わないよう、フォームの本文は分析対象のデータとしてだけ扱うことを、プロンプトに明記しています。
6. 数字を作らせない
売上高などの財務情報には、どの会計期間の数字かを必ず添えさせます。開示が見つからなければ「非公開」、調べ切れなければ「不明」と書かせ、推測には「〜と推測」と付けさせています。空欄を埋めるための数字が混ざると、商談の準備には使えません。
7. 通知メールと分析メールは、別のメールにする
通知メールは、そのまま返信すれば問い合わせた方に届くよう、返信先を相手のアドレスにしています。ここに分析の内容のような社内向けの情報まで載せると、返信したときの引用で相手に見えてしまいます。分析メールは社内宛て専用にして、返信先を付けていません。依頼文で「通知メールと分析メール」を分けて頼んでいるのは、この使い分けとも合っています。
8. Notionの列名を画面で変えると、書き込みが黙って失敗する
コードはNotionの列名(プロパティ名)と選択肢名を指定して書き込みます。Notionの画面で列名を直すと、それ以降の書き込みがエラーになります。列名と選択肢名は「変えるときはコードと同時に」という一覧にして残しました。もう1つ、Notionのテキストは1つのまとまりに入る文字数に上限があるので、長いレポートは分割して書き込んでいます。
9. 失敗に気づく経路を先に作る
- 調査やNotionへの書き込みが失敗したら、その時点で失敗の通知メールを送る
- 3回目も失敗したら、問い合わせの情報だけを載せた暫定ページをNotionに作る(一覧から問い合わせが抜け落ちないようにする)
- 毎朝1回、外部サービスの鍵やモデルの指定が生きているかを確かめる(問い合わせが来てから気づくのを避ける)
導入前に確かめておくこと
問い合わせで預かる情報には、会社名・お名前・メールアドレスなどが含まれます。それを外部のAIサービスやNotionで扱うことになるので、プライバシーポリシーの記載や社内の取り扱いルールと合っているかを、導入前に確かめてください。判断に迷う部分は、専門家への確認をおすすめします。
まとめ
- 先に、人がやっていることを書き出す(会社の基本情報のリサーチ・ニーズの推測)
- Codexに渡すコンテキストは3点(会社HPのURL・人がやっているワークフロー・アウトプットの形)
- 受け取り方は、フロー(通知メール・分析メール)とストック(Notionのデータベース)で決める
- 動かし始めてからは、送信との切り離し・拾い直し・同名の別会社・失敗の通知を順に固める
依頼文を入力して送るところから、届いた分析メールとNotionのデータベースの画面までは、動画で見せています。
画面の操作も含めて動画で見たい方はこちら: 会社HPの問い合わせをAIで自動分析!GPT-6 Astraで受注率を爆上げ(YouTube)