0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

会社HPの問い合わせに企業リサーチを自動でかけて、分析メールとNotionのDBに残す仕組みをCodex(GPT-6 Astra)に依頼して作る手順

0
Posted at

会社のホームページに問い合わせが届いたら、相手の社名で検索して、ホームページやIR資料を読み、ニーズを推測してから返信する。この下準備を、問い合わせが届くたびにAIが済ませてくれる仕組みを作りました。非エンジニアの私が自分で作り、いまも自社(株式会社AI Orchestra)で毎日動いています。

動きは次のとおりです。

  1. 会社HPのお問い合わせフォームに問い合わせが届く
  2. AIが相手の会社の基本情報をリサーチし、問い合わせ内容からニーズを推測する
  3. 分析メールが届き、同じ内容が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つです。

  1. 会社の基本情報のリサーチ
  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)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?