毎日の新着物件を登録客の希望条件と照らして合う人を判定し、物件ごとの案内文を下書きして担当の確認に回す
売買仲介の会社で、その日に入った新着物件を、購入希望の登録客の希望条件と照らします。合う人を物件ごとに判定し、案内文の下書きを付けて担当の確認に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Zapier
- 対象業界
- その他/不動産
- 対象部門
- 営業
- 対象業務
- 書類作成/比較検討
- 主な課題
- 判断に時間がかかる/営業フォローが追いつかない/属人化している
- AIで行う処理
- 判定
- 主な効果
- 対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 朝、物件管理システムに新着物件が登録される
- 担当がそれぞれ、新着物件の一覧を開いて自分の担当エリアのものを見る
- 1件ずつ、登録客台帳をエリアと予算で絞り込む
- 絞り込んだ十数人の「その他の希望」を読み、物件の資料と見比べて、案内する人を決める
- 案内する人ごとに、物件の特徴と希望に合う点を書いた案内文をメールで書く
- 物件がまだ売りに出ているかを元の業者に確かめてから送る
- 送った相手を台帳のメモ欄に書く
- 人朝、物件管理システムから新着物件のCSVを書き出し、共有のスプレッドシートに貼る(いまの登録作業の続き)
- 自動平日の11時に n8n のワークフローが動き、未処理の新着物件と、案内を希望している登録客を読む
- 自動Code ノードが、エリア・予算・面積・間取り・築年数で、物件ごとに候補の客を絞る
- 自動候補の客の自由記述の希望を条件に分け、物件の情報に合うかを1条件ずつAIが判定する
- 自動判定の結果から、`match` / `check` / `no_match` を規則で決める
- 自動`match` と `check` の客について、案内文の下書きを作る
- 自動物件ごとの結果を案内候補シートに書き、担当へ承認依頼のメールを送る
- 人担当が候補の客と判定の理由を確かめ、`check` の客は物件の側の情報を確かめる
- 人担当が承認すると、客ごとの案内文が Gmail の下書きとして作られる
- 人担当が物件がまだ売りに出ているかを確かめ、下書きを直して送る
各工程の詳しい説明を読む
- 朝、物件管理システムに新着物件が登録される
- 担当がそれぞれ、新着物件の一覧を開いて自分の担当エリアのものを見る
- 1件ずつ、登録客台帳をエリアと予算で絞り込む
- 絞り込んだ十数人の「その他の希望」を読み、物件の資料と見比べて、案内する人を決める
- 案内する人ごとに、物件の特徴と希望に合う点を書いた案内文をメールで書く
- 物件がまだ売りに出ているかを元の業者に確かめてから送る
- 送った相手を台帳のメモ欄に書く
(a)案内が翌日に回る。 1件20分で15件なら、担当6人で分けても1人50分です。来店や内見の同行がある日は、新着の案内が翌朝に回ります。
(b)自由記述の希望が読み切れない。 3番の絞り込みは表のフィルタで済みますが、4番は1人ずつ文章を読む作業です。「1階は避けたい」「坂が多い地域は困る」のような条件は、急いでいるときほど読み落とします。 読み落とした客に案内すると、内見で断られます。
(c)案内する相手が担当の記憶で決まる。 自分の客の希望は覚えていても、他の担当の客は台帳を読むまで分かりません。
(d)分からない条件は聞かれないまま落ちる。 物件の資料に学区やペットの可否が書かれていないと、担当は確かめる手間を惜しんでその客を外します。 確かめれば合っていた客が、どれだけいたかは記録に残りません。
- 【人】 朝、物件管理システムから新着物件のCSVを書き出し、共有のスプレッドシートに貼る(いまの登録作業の続き)
- 【自動】 平日の11時に n8n のワークフローが動き、未処理の新着物件と、案内を希望している登録客を読む
- 【自動】 Code ノードが、エリア・予算・面積・間取り・築年数で、物件ごとに候補の客を絞る
- 【自動】 候補の客の自由記述の希望を条件に分け、物件の情報に合うかを1条件ずつAIが判定する
- 【自動】 判定の結果から、
match/check/no_matchを規則で決める - 【自動】
matchとcheckの客について、案内文の下書きを作る - 【自動】 物件ごとの結果を案内候補シートに書き、担当へ承認依頼のメールを送る
- 【人】 担当が候補の客と判定の理由を確かめ、
checkの客は物件の側の情報を確かめる - 【人】 担当が承認すると、客ごとの案内文が Gmail の下書きとして作られる
- 【人】 担当が物件がまだ売りに出ているかを確かめ、下書きを直して送る
8番が、この設計の分かれ目です。 AIが出すのは、条件ごとの判定と、その根拠にした物件の情報までです。誰に案内するかを決めるのは担当です。 ローンの事前審査の状況や、前回の内見で口にしていた本音のように、台帳に書かれていないことを知っているのは担当だからです。
5番を規則で決めているのも意図してのことです。 条件ごとの合う・合わない・分からないはAIが付けますが、「どの条件が1つでも合わなければ外すか」は、客が必須とした条件かどうかで決まります。 その区別は台帳の側に持たせ、規則で読みます。
02今回想定するシステム構成
物件管理システム ── 毎朝CSVを書き出す
▼(人がスプレッドシートに貼る)
Google スプレッドシート
├── 新着物件シート(処理状態の列つき)
├── 登録客台帳(希望条件・必須の印・配信の可否)
└── 案内候補シート(判定と下書きの書き出し先)
▼【トリガー】平日11時
n8n
├── Google Sheets ノード ── 未処理の物件と配信可の客を読む
├── Code ノード ── 表の条件で物件ごとに候補を絞る
├── Basic LLM Chain + Anthropic Chat Model
│ + Structured Output Parser
│ ── 自由記述の希望を1条件ずつ判定し、案内文を下書き
├── Code ノード ── match / check / no_match を規則で決める
├── Google Sheets ノード ── 案内候補シートへ書く
└── Gmail ノード ── 担当へ承認依頼(Send and Wait for Approval)
▼ 承認
Gmail ノード ── 客ごとの下書きを作る(Drafts の create)
▼
【担当が物件の確認をして送る】| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Zapier |
| 処理エンジン | n8n の Code ノード(JavaScript。表の条件での絞り込みと最終の振り分け) | Make の関数と条件分岐 |
| 生成AI | Claude API(n8n の Anthropic Chat Model ノード) | OpenAI API、Gemini API |
| 保管 | Google スプレッドシート(新着物件・登録客台帳・案内候補) | Microsoft SharePoint のリスト |
| メール | Gmail | Microsoft Outlook |
新しく足すのは、n8n のワークフローと、登録客台帳の2つの列だけです。 客が「これだけは外せない」と言った希望に付ける必須の印と、配信の可否です。物件管理システムには書き込みません。
Code ノードは JavaScript と Python で書けます。 公式のページでは、Code ノードからはファイルの読み書きや HTTP のリクエストはできません。この構成の Code ノードは読み込んだ行を比べるだけなので、その制限には当たりません。n8n Cloud では外部の npm モジュールを読み込めないため、標準の JavaScript だけで書きます。
AIを呼ぶのは Basic LLM Chain ノードです。 「Require Specific Output Format」を有効にすると出力パーサーをつなぐよう求められ、その1つが Structured Output Parser です。判定を決まった形の JSON で受け取り、後段で規則にかけるために使います。
担当への確認は、Gmail ノードの「Send and Wait for Approval」で行います。 メールを送り、受け取った人の承認を待ってから続ける操作で、承認の種類は「Approve Only」(既定)と「Approve and Disapprove」です。複雑な承認には Wait ノードを使うよう案内されています。
03どうやって実装するのか
処理の起点を決める
平日の11時に1回動かします。 n8n の Schedule Trigger ノードで「Weeks」の間隔を選び、月曜から金曜を指定して11時0分にします。朝の登録が終わり、昼の休みの前に担当が承認できる時刻です。 午後に入る新着のために、16時のルールを足して1日2回にすることもできます。公式のページでは、1つのノードに複数のトリガーのルールを足せるとされています。
時刻の基準を最初に直します。 公式のページでは、Schedule Trigger はワークフローのタイムゾーン、それが無ければインスタンスのタイムゾーンに従い、自分でサーバーを立てた場合の既定は America/New York です。ワークフローの設定で Asia/Tokyo を選ばないと、11時のつもりが夜中に動きます。
ワークフローは公開しておく必要があります。 公式のページでは、Schedule Trigger を使うワークフローは保存して公開するよう書かれています。作って試しただけで公開していないと、翌朝何も動きません。
新着物件の行には処理状態の列を持たせます。 読むのは「未処理」の行だけで、処理が終わったら「処理済み」に書き換えます。書き換えるのは、案内候補シートへの書き込みまで成功したときだけにします。 途中で止まったものは、次の回にもう一度読まれます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 新着物件 | 物件番号、所在地、価格、面積、間取り、築年、階数、向き、駐車場、管理規約の要点(ペット・楽器)、最寄り駅と徒歩分数、学区、備考 | 新着物件シート |
| 登録客 | 客番号、担当、エリア(複数)、予算の上限、面積の下限、間取り、築年数の上限、その他の希望(自由記述)、必須の印、配信の可否、最終の案内日 | 登録客台帳 |
| 過去の案内 | 客番号ごとに、案内した物件番号と日付 | 案内候補シート |
| 担当の一覧 | 担当の名前とメールアドレス | 担当シート |
質を決めるのは、物件の側の「書かれていること」の量です。 向き・学区・管理規約の要点が空欄の物件では、自由記述の希望のほとんどが「分からない」になります。AIの判定を良くするより、物件の登録のときにこの3つの欄を埋めるほうが効きます。
過去の案内を渡すのは、同じ物件を二度送らないためです。 価格を下げて再び新着に出た物件では、前に案内した客に「価格が変わりました」と書くか、送らないかを担当が決めます。
データの取得方法を決める
| 取るもの | ノード | 設定 |
|---|---|---|
| 未処理の新着物件 | Google Sheets(Get Row(s)) | 処理状態が「未処理」の行 |
| 案内する対象の客 | Google Sheets(Get Row(s)) | 配信の可否が「可」で、状態が「探索中」の行 |
| 過去の案内 | Google Sheets(Get Row(s)) | 直近90日の行 |
| 担当の一覧 | Google Sheets(Get Row(s)) | 全行 |
Google Sheets ノードの操作は、公式のページでは「Get Row(s)」「Append Row」「Update Row」「Append or Update Row」などです。 この構成では、読むのに Get Row(s)、案内候補の書き出しに Append Row、処理状態の書き換えに Update Row を使います。ノードに無い操作が要るときは、Google Sheets の認証情報を使って HTTP Request ノードで API を呼べるとされています。
物件管理システムには直接つなぎません。 毎朝のCSVをスプレッドシートに貼る作業は、いまの登録の流れに1つ手順を足すだけです。システムのAPIに手を入れるより、最初はこのほうが早く動きます。
AIへ渡す前に整形する
- 表の条件で絞る … Code ノードで、物件ごとに客を絞ります。エリアは市区町村か沿線の駅で照らし、予算は上限の5%までの超過を残します。 価格交渉で届く物件を最初から落とさないためです
- 面積・間取り・築年数 … 面積は下限の95%まで、間取りは「3LDK以上」のような書き方をそろえて比べ、築年数は上限ちょうどまでを残します
- 候補の数を抑える … 1物件あたりの候補は最大15人にします。超えるときは、最終の案内日が古い客から順に残します
- 案内済みを外す … 同じ物件を案内済みの客は外し、価格が変わった物件だけは「再案内」の印を付けて残します
- 自由記述の希望を整える … 改行や「・」で区切られた希望を、そのまま1つの文字列で渡します。区切り直しはAIにさせ、その結果を出力に書かせます
- 個人を特定する情報を外す … AIに渡すのは客番号と希望条件だけです。名前、電話番号、メールアドレス、勤務先、年収は渡しません
- 物件の情報を1つの文字列にまとめる … 欄の名前と値の組で並べ、空欄の欄は「記載なし」と書きます
5%と95%の幅は、自社で決める数字です。 狭くすると交渉の余地のある物件が落ち、広くするとAIに渡す人数が増えます。最初の1か月は、担当が「この客にも送りたかった」と書いた件数を見て調整します。
7番の「記載なし」は、AIが「分からない」と判定するための材料です。 空欄のまま渡すと、欄そのものが無かったように扱われます。
AIに処理させる
させるのは、客ごとに自由記述の希望を条件に分け、物件の情報に合うかを1条件ずつ判定し、根拠にした物件の欄を書き出すことです。 そのうえで、合う客への案内文を下書きします。
| 条件の例 | 判定の仕方 | 判断できないときの扱い |
|---|---|---|
| 「南向き」「日当たりがよい」 | 物件の向きの欄と備考 | 向きが記載なしなら unknown |
| 「小学校まで徒歩10分以内」 | 学区の欄と備考の徒歩分数 | 学区だけで距離が無ければ unknown |
| 「大型犬が飼える」 | 管理規約の要点のペットの欄 | 「ペット可」だけで大きさの定めが無ければ unknown |
| 「1階は避けたい」 | 階数の欄 | 戸建なら条件に当たらないので not_applicable |
| 「駐車場2台」 | 駐車場の欄と備考 | 台数の記載が無ければ unknown |
| 「坂が少ない地域」 | 物件の情報からは判断できない | unknown。地図から推測しない |
右端の列が、この構成でいちばん大事な区別です。 fail は物件の情報に希望と反する事実が書かれているということ、unknown はその事実が書かれていないということです。前者は案内しない理由、後者は担当が確かめる事項です。
| させないこと | 理由 |
|---|---|
| 誰に案内するかの決定 | 客の事情を知っているのは担当。AIは判定まで |
| 物件の情報に無いことの推測 | 「この地域なら坂は少ないはず」と書かせない |
| 価格交渉の見込み | 売主の事情は物件の情報に無い |
| ローンが通るかの判断 | 年収を渡していない。渡さない |
| 物件の良い点の誇張 | 案内文に書けるのは物件の情報にある事実だけ |
2行目がいちばん起きやすい失敗です。 生成AIは地名から一般的な知識で答えを作れてしまい、「閑静な住宅街です」「坂は少ない地域です」と書きます。 物件の情報に無いことは、合っていても unknown にさせます。
指示内容を固定する
あなたは不動産の売買仲介の担当を補助する立場です。
新着物件の情報と、購入希望の客の希望条件を照らして、
条件ごとに合うかを判定し、合う客への案内文を下書きしてください。
【判定の手順】
1. 客の「その他の希望」を、条件1つずつに分けてください。
分けた条件は、客が書いた言葉のまま condition に写してください。
2. 条件ごとに、物件の情報のどの欄が根拠になるかを探してください。
3. 次のどれかを result に入れてください。
- pass ............ 物件の情報に、条件を満たす事実が書かれている
- fail ............ 物件の情報に、条件と反する事実が書かれている
- unknown ......... 判断に要る事実が物件の情報に書かれていない
- not_applicable .. この物件の種類には当たらない条件(戸建に階数の条件など)
4. evidence には、根拠にした欄の名前と値をそのまま写してください。
【厳守事項】
- 物件の情報に書かれていないことを、地名や一般的な知識から推測しないでください。
「記載なし」の欄に関わる条件は unknown です。
- 迷ったときに pass を選ばないでください。
- 「ペット可」とだけ書かれ、大きさや種類の定めが分からないときは、
大きさや種類を条件にした希望を unknown にしてください。
- 誰に案内すべきか、案内すべきでないかは書かないでください。
- 価格交渉の見込み、ローン、客の資金については書かないでください。
【案内文の下書き】
- result に fail が1つも無い客についてだけ書いてください。
- 本文は200字以内。冒頭の宛名と末尾の署名は書かないでください。
- 客の希望の言葉を1つ以上引き、それに当たる物件の事実を続けて書いてください。
- 物件の情報に無い長所を書かないでください。「人気」「おすすめ」「閑静」などの
評価の言葉を使わないでください。
- unknown の条件があるときは、「〇〇については確認のうえご連絡します」と書き、
合うとは書かないでください。
- 価格を書くときは、物件の情報の価格の欄をそのまま写してください。
【物件の情報】{listing}
【候補の客(客番号と希望条件)】{candidates}
「迷ったときに pass を選ばない」を明記しないと、合う方に寄ります。 自由記述の希望はあいまいな書き方が多く、何も言わなければ好意的に読みます。pass が増えると、担当の確認が形だけになります。
案内文の禁止語を並べているのは、案内文が広告に近い文書だからです。 1人の客に向けたメールでも、事実と違う長所を書けば客の信頼を失います。物件の情報に無い言葉が出てきたら、それは下書きの誤りです。
出力形式を固定する
Structured Output Parser に、次の形の JSON の例を渡して受け取ります。
{
"listing_id": "",
"clients": [
{
"client_id": "",
"checks": [
{ "condition": "", "result": "pass | fail | unknown | not_applicable",
"evidence": "" }
],
"unknown_items": [""],
"draft": ""
}
]
}
1つ目の理由は、判定と結論を別の層に置けることです。 checks はAIが埋め、match / check / no_match は後段の Code ノードが規則で決めます。
| 振り分け | 条件 |
|---|---|
no_match | 必須の印が付いた条件に fail が1つでもある |
check | 必須の条件に unknown がある、または必須でない条件に fail がある |
match | 必須の条件がすべて pass か not_applicable で、fail が無い |
必須の印は台帳の側にあり、AIには渡していません。 AIは条件ごとの事実だけを返し、どれを重く見るかは客が言ったことに従います。 必須の印を付け直しても、checks を読み直すだけで振り分けをやり直せます。
2つ目は、Structured Output Parser の制約に合わせられることです。 公式のページでは、JSON の例から作った schema はすべての項目を必須として扱い、$ref を使った参照には対応していないとされています。入れ子は clients と checks の2段にとどめ、参照を使わない平らな形で書きます。 unknown_items が無い客にも空の配列を返させます。
3つ目は、evidence で担当の確認が速くなることです。 物件の資料を開く前に、どの欄を見て合うとしたかを読めます。
システムへ連携する
| つなぎ先 | ノード・操作 | 内容 |
|---|---|---|
| 新着物件シート | Google Sheets(Get Row(s)/Update Row) | 未処理の行を読み、終わったら処理済みにする |
| 登録客台帳 | Google Sheets(Get Row(s)) | 配信可の客を読む。書き込まない |
| 案内候補シート | Google Sheets(Append Row) | 物件・客ごとの振り分け、checks、下書きを書く |
| Claude API | Anthropic Chat Model(Basic LLM Chain の下) | 条件ごとの判定と案内文の下書き |
| 担当のメール | Gmail(Send and Wait for Approval) | 物件ごとに候補の客を並べた承認依頼 |
| 営業用のメール | Gmail(Drafts の create) | 承認されたら客ごとの下書きを作る |
承認依頼のメールは、物件ごとに担当1人へ送ります。 宛先は、候補の客の担当のうち人数が多い人です。本文には物件の要点、match と check の客の一覧、check の理由、案内候補シートの該当行へのリンクを書きます。 承認の種類は「Approve and Disapprove」にし、ボタンの文字を「下書きを作る」「今回は見送る」に変えます。
承認されたら、Gmail ノードの Drafts の create で客ごとの下書きを作ります。 宛先は登録客台帳のメールアドレス、本文は宛名と署名の定型の間にAIの下書きを挟んだものです。送信はしません。 送るのは、担当が物件を確かめた後です。
登録客台帳には書き込みません。 最終の案内日を更新するのは、担当が実際に送ったときです。下書きを作っただけで更新すると、送られなかった案内が送ったことになります。
人が確認する
担当が見るのは、承認依頼のメールと案内候補シートの行だけです。 1物件あたり match と check を合わせて数人という想定です。
checkを先に見る …unknown_itemsに並んだ事項を、物件の資料か元の業者への問い合わせで確かめます。多くは学区・ペットの細則・駐車場の台数ですmatchの根拠を確かめる …evidenceを読み、物件の資料の該当欄と合っているかを見ます- 台帳に無い事情を足す … 事前審査の状況、前回の内見での反応など、担当だけが知っていることで案内する相手を足し引きします
- 承認する … 「下書きを作る」を押します。見送るときは理由を案内候補シートに書きます
- 物件の確認をして送る … まだ売りに出ているかを元の業者に確かめ、下書きを直して送ります
1番を省かないでください。 unknown は「AIが分からなかった」という意味ではなく、物件の情報に書かれていなかったという意味です。 確かめれば合う客かもしれず、ここで外すと第3章の(d)に戻ります。
目標は、1物件あたり5分です。 判定の根拠を読む時間と、check の事項を確かめる時間が中心です。check が多すぎる日は、物件の登録で向き・学区・管理規約の欄が空いています。
例外に対処する
| 起きること | 対応 |
|---|---|
| 表の条件で候補が0人 | AIを呼ばず、案内候補シートに「候補なし」と書いて処理済みにする |
| 候補が15人を超える | 最終の案内日が古い順に15人。残りは件数だけを承認依頼に書く |
| 物件の情報の欄の多くが空 | 空欄が半分を超える物件はAIに渡さず、担当へ「登録の確認」として回す |
| AIの出力が形に合わない | Structured Output Parser でエラーになる。その物件は未処理のまま残し、次の回に回す |
| 同じ物件が二度登録される | 物件番号で照らし、2行目は処理しない |
| 価格が変わって再び新着に出た | 前に案内した客は「再案内」の印を付け、案内文を価格の変更の文面にする |
| 担当が承認しないまま夕方になる | 翌朝にもう一度通知する。新着から2営業日を過ぎたら見送りとして閉じる |
| 客のメールアドレスが空 | 下書きを作らず、担当に「電話で案内」として残す |
| Claude API が応答しない | 物件を未処理のまま残す。処理済みにするのは書き込みが成功したときだけ |
上の3行が大半を占めます。 どれもAIの問題ではなく、物件と客の登録のしかたの問題です。 空欄の多い物件が続くときは、判定を工夫するより登録の手順を直します。
記録を残す
- 処理した物件番号と、そのときの物件の情報の全文
- 表の条件で絞った候補の客番号と、そのときの希望条件と必須の印
- AIが返した JSON の全文(
checks、unknown_items、draft) - Code ノードが決めた振り分けと、その規則の版
- 担当の承認・見送りと、その理由
- 担当が足した客と外した客 … AIの振り分けと担当の判断の違い
- 実際に送った日と、その後の内見・申込の有無
2つ目で「そのときの希望条件」を残すのは、希望が後から変わるためです。 客が予算を上げたり、エリアを広げたりすると、過去の判定の意味が変わります。当時の条件が残っていないと、判定の誤りか条件の変化かが区別できません。
6つ目は、表の条件の幅と指示の見直しの材料になります。 担当が足した客が多ければ絞り込みが狭すぎ、外した客が多ければAIが pass を出しすぎています。
04実装レベルの3段階
最小構成は確かめるための段階です。 1件ずつ貼るので、1日15件には使えません。 半自動化で1件20分が5分になり、この段階が本記事の想定です。 本格構成で減るのは、主にCSVを貼る手間と送った記録の手入力です。その代わり、内見と申込の結果が判定とひもづき、どの判定が当たっていたかを数えられます。 段階を飛ばさないでください。 半自動化を1か月回すと、unknown が多い欄と担当が足し引きした客の傾向が分かります。登録と台帳の書き方を直してから物件管理システムにつなぎます。
05工数削減シミュレーション
導入後 300件 × 5分 ÷ 60 = 25 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 中古マンション・戸建・土地の売買仲介で、購入希望の登録客を数百人抱え、新着物件が出るたびに担当が希望条件の一覧を見て案内する相手を探している会社。希望条件のうち、日当たり・学区・ペット・駐車場のような自由記述の部分が多く、表のフィルタだけでは合う人を拾いきれない場合。物件と登録客の情報がスプレッドシートに書き出せる場合。
- 登録客が数十人で、担当が全員の希望を覚えていられる場合。物件の案内をポータルサイトの新着通知や自動配信の仕組みに任せていて、担当が文面を書いていない場合。賃貸の仲介で、物件の回転が速く、案内の前に空室の確認が間に合わない場合。なお、どの物件をどの客に勧めるか、価格交渉の見込み、ローンが通るかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先週の新着物件から10件を選ぶ(担当が案内した物件と、案内しなかった物件を混ぜる)
- 1件ずつ、登録客台帳をエリアと予算で絞り込み、候補の客の希望条件を書き出す。名前と連絡先は消す
- 物件の資料と候補の希望条件を、手元の Claude の画面に貼る
- 「客ごとに、希望を条件1つずつに分け、物件の情報に合うかを pass / fail / unknown で判定し、根拠にした欄を書いてください。物件の情報に書かれていないことは推測せず unknown にしてください」と指示する
- 出てきた判定を、当時の担当が案内した相手と見比べる
10件は必ずやってください。 ワークフローを組む前に、「物件の情報から判定できるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
当時の担当と同じ客が pass になった | ワークフローに進む |
物件の情報に無いことを推測して pass にした | 指示の書き方で直る。構成は有効 |
多くの条件が unknown になった | 物件の登録の欄が足りない。 AIの問題ではない |
3行目が出ることは珍しくありません。 その場合は、物件の登録の欄に向き・学区・管理規約の要点を足し、次の週の新着で試し直します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
物件の情報に無いことを推測して pass にする | 「記載なし」を明示して渡し、推測を禁じる。 evidence が空の pass を後段で check に落とす |
| 「分からない」を「合わない」として落とす | fail と unknown を分け、unknown は担当の確認事項にする |
| Schedule Trigger が夜中に動く | 自分で立てたサーバーの既定は America/New York。ワークフローの設定で Asia/Tokyo にする |
| 翌朝何も動かない | ワークフローを公開していない。 Schedule Trigger は保存して公開する |
| Structured Output Parser でエラーになる | 例から作った schema はすべて必須。空の値と空の配列も返させる |
| 案内文に「閑静」「人気」が入る | 評価の言葉を禁じ、物件の情報に無い言葉を後段で拾う |
| 予算の絞り込みで交渉の余地のある物件が落ちる | 上限の5%までを残す。幅は担当の声で調整する |
| 候補が多すぎて承認が形だけになる | 1物件15人まで。match と check の合計が5人を超える日は絞り込みを見直す |
| 同じ客に同じ物件を二度送る | 過去の案内を渡して外す。最終の案内日は送ったときに更新する |
| 他の担当の客を勝手に案内する | 承認依頼は客の担当に送る。担当の違う客は、その担当の承認を待つ |
| 下書きを作っただけで送ったことになる | 台帳の更新は送信の後。下書きの作成では更新しない |
| 売れた物件を案内する | 送る前に元の業者に確かめる手順を省かない |
上の2行が、この構成の失敗のほとんどです。 「書かれていない」を「合う」にも「合わない」にもせず、担当の確認事項として残せるかで、運用に乗るかが決まります。
下の3行も早く効きます。 二重の案内、担当の頭越しの案内、売れた物件の案内は、どれも1回で客の信頼を減らします。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 登録客の名前・連絡先・希望条件、そして台帳の自由記述の欄に書かれた家族構成、子どもの学校、ペット、勤務地、資金の事情です。
- AIに渡すのは客番号と希望条件だけにする … 名前・電話番号・メールアドレス・勤務先・年収は渡しません。宛名と連絡先は、承認の後に n8n がスプレッドシートから差し込みます
- 自由記述の欄から、判定に要らない個人の事情を外す … 「離婚のため」「親の介護で」のような購入の理由は、物件の条件ではありません。台帳の欄を、希望条件と事情のメモに分けておき、AIには前者だけを渡します
- 案内のメールを自動で送らない … 出すのは下書きまでです。売れた物件や、条件の合わない物件を送れば、その客は次の案内を開きません
- 配信の可否を守る … 案内を希望しなかった客、配信の停止を申し出た客には送りません。配信の可否の列が「可」の客だけを読む設計にします
- この構成は営業の判断を代替しません … どの物件を誰に勧めるか、価格交渉の見込み、ローンの見通しは担当が決めます。AIが出すのは、希望条件と物件の情報が合うかという事実の照合だけです
- n8n の動かし場所を決める … n8n Cloud か自社のサーバーかで、実行の記録に残る個人情報の置き場所が変わります
誤りが起きた場合のリスクは、合わない客に案内することと、合う客に案内しないことの2つです。 前者は推測の pass から、後者は unknown を fail と混ぜることから起きます。どちらも「書かれていないこと」の扱いから出ているので、そこだけは設計で守ります。
10まず何から始めるか
1週目:登録客台帳に2つの列を足す
必須の印の列と配信の可否の列を足し、この3か月に来店した客から付けます。 自由記述の欄は「希望条件」と「事情のメモ」に分けます。
2週目:10件で試す
第8章の手順で試し、物件の情報に無いことで pass にしていないかを最優先で見ます。
3週目:物件の登録の欄を決める
2週目に unknown が多かった欄を数え、物件の登録のときに必ず埋める欄を決めます。 多くは向き・学区・管理規約のペットと楽器の定め・駐車場の台数です。表の条件の幅(予算の5%、面積の95%)もここで決めます。
4週目:判定までをつなぐ
n8n で新着物件シートと登録客台帳を読み、Code ノードで絞り、Basic LLM Chain で判定して案内候補シートに書くところまで作ります。この時点では承認依頼も下書きも作らず、担当が案内候補シートを見て、自分の判断と比べます。
2か月目: 振り分けの規則と、Gmail ノードの承認依頼と下書きの作成を足します。担当が足した客と外した客を毎週数えます。3か月目以降: 1件20分が何分になったかを実測し、内見と申込の結果を案内候補シートに書き足します。担当エリアの外の物件でも合う客に案内が届くようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| ワークフローを公開する必要があること。タイムゾーンの扱いと、自分で立てたサーバーの既定が America/New York であること。複数のルールを足せること | n8n Docs: Schedule Trigger | 2026-10-14 |
| Get Row(s)、Append Row、Update Row などの操作。無い操作は HTTP Request ノードで API を呼べること | n8n Docs: Google Sheets node | 2026-10-14 |
| JavaScript と Python が書けること。ファイルの読み書きと HTTP のリクエストができないこと。Cloud では外部の npm モジュールを読み込めないこと | n8n Docs: Code node | 2026-10-14 |
| Require Specific Output Format で Structured Output Parser などをつなげること | n8n Docs: Basic LLM Chain | 2026-10-14 |
| Claude のモデルを提供するサブノードであること | n8n Docs: Anthropic Chat Model | 2026-10-14 |
例から作った schema ではすべての項目が必須になること。$ref に対応していないこと | n8n Docs: Structured Output Parser | 2026-10-14 |
| Gmail ノードに下書き(Drafts)の create の操作があること | n8n Docs: Gmail node | 2026-10-14 |
| Send and Wait for Approval の動きと承認の種類、ボタンの文字を変えられること。複雑な承認には Wait ノードを使うこと | n8n Docs: Gmail node message operations | 2026-10-14 |
どの物件をどの客に案内するかは、担当が決めてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1474)についてのご相談はこちらから。
