管理物件の空室の期間と反響・内見の数を毎月見て、長く空いている部屋の募集条件の見直し案とオーナーへの提案の文面を作る
管理物件の空室を毎月見て、60日を超えて空いている部屋について、自社の過去の成約から「今の条件のままだと決まるまで何日かかりそうか」を出します。そのうえで、賃料・初期費用・設備のどれを見直すかの案と、オーナーへの提案の文面を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate/Python
- 対象業界
- 不動産/建設
- 対象部門
- 営業
- 対象業務
- 書類作成/集計・分析
- 主な課題
- 判断に時間がかかる/属人化している/書類作成に時間がかかる
- AIで行う処理
- 予測
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 月初に、担当者が賃貸管理のシステムから空室の一覧を出し、自分の担当で60日を超えた部屋を拾う
- ポータルサイトの管理画面で、その部屋の反響の件数を見る
- 鍵の貸出の記録から、内見の回数と、仲介会社から聞いた見送りの理由を拾う
- 同じ駅の似た部屋の掲載をポータルサイトで探し、賃料を比べる
- 賃料を下げるか、礼金をなくすか、フリーレントを付けるか、設備を足すかを考える
- オーナーへの提案の文面を書き、上長の確認を経て送る
- オーナーの返事を受けて、募集条件を変え、ポータルサイトの掲載を直す
- 人月末に、ポータルサイトの管理画面から反響の件数のCSVを出し、決まったフォルダに置く
- 自動毎月1日の朝に Google Apps Script が動き、空室の一覧、反響、内見の記録、成約の記録を読み込む
- 自動空室60日を超えた部屋について、反響・内見・申込の数を、似た部屋の過去の水準と比べ、止まっている段階を判定する
- 自動自社の過去の成約から似た部屋を集め、今の賃料の位置と、その位置の部屋が決まるまでの日数の中央値を出す
- 自動見直しの候補ごとに、似た部屋の成約の中で見直し後の条件に当たる部屋の日数の中央値を出す
- 自動OpenAI API に材料を渡し、見直し案とオーナーへの提案の文面を構造化した形で受け取る
- 自動担当者ごとに、担当する部屋の案を一覧にし、提案の文面を下書きにする
- 人担当者が案を確かめ、部屋の状況を知っている立場で直す
- 人上長が確認し、担当者がオーナーへ送る
- 人オーナーの返事を受けて募集条件を変え、ポータルサイトの掲載を直す
各工程の詳しい説明を読む
- 月初に、担当者が賃貸管理のシステムから空室の一覧を出し、自分の担当で60日を超えた部屋を拾う
- ポータルサイトの管理画面で、その部屋の反響の件数を見る
- 鍵の貸出の記録から、内見の回数と、仲介会社から聞いた見送りの理由を拾う
- 同じ駅の似た部屋の掲載をポータルサイトで探し、賃料を比べる
- 賃料を下げるか、礼金をなくすか、フリーレントを付けるか、設備を足すかを考える
- オーナーへの提案の文面を書き、上長の確認を経て送る
- オーナーの返事を受けて、募集条件を変え、ポータルサイトの掲載を直す
(a)見直しの案が担当者しだい。 5番目で、ある担当者は必ず賃料を下げる案を出し、別の担当者はまず礼金をなくす案を出します。部屋の状況ではなく、担当者の癖で案が決まっています。
(b)相場の根拠が競合の掲載賃料になる。 4番目で比べているのは、いま空いている部屋の募集の賃料です。決まらずに残っている部屋の賃料と比べているので、相場を高く見誤ります。 自社の成約の記録は使われていません。
(c)止まっている段階を見ていない。 反響が十分あるのに賃料を下げる提案をすることがあります。内見で見送られている部屋は、賃料を下げても決まりません。 オーナーは下げた分だけ収入を失います。
(d)相談が遅れる。 1件の準備に時間がかかるため、月初に拾った40戸のうち、相談できるのは月の後半になる部屋が出ます。その間も空室は続き、次の繁忙期を逃します。
- 【人】 月末に、ポータルサイトの管理画面から反響の件数のCSVを出し、決まったフォルダに置く
- 【自動】 毎月1日の朝に Google Apps Script が動き、空室の一覧、反響、内見の記録、成約の記録を読み込む
- 【自動】 空室60日を超えた部屋について、反響・内見・申込の数を、似た部屋の過去の水準と比べ、止まっている段階を判定する
- 【自動】 自社の過去の成約から似た部屋を集め、今の賃料の位置と、その位置の部屋が決まるまでの日数の中央値を出す
- 【自動】 見直しの候補ごとに、似た部屋の成約の中で見直し後の条件に当たる部屋の日数の中央値を出す
- 【自動】 OpenAI API に材料を渡し、見直し案とオーナーへの提案の文面を構造化した形で受け取る
- 【自動】 担当者ごとに、担当する部屋の案を一覧にし、提案の文面を下書きにする
- 【人】 担当者が案を確かめ、部屋の状況を知っている立場で直す
- 【人】 上長が確認し、担当者がオーナーへ送る
- 【人】 オーナーの返事を受けて募集条件を変え、ポータルサイトの掲載を直す
4番目と5番目の数字は、AIではなくスクリプトが出します。 見込みの日数はオーナーとの話の中心になる数字です。AIが文章の流れで作った数字が、オーナーへの提案に載ることがないようにします。
9番目と10番目は自動にしません。 募集条件を変えるのはオーナーの判断で、管理会社が勝手に条件を変えることはできません。 この構成は、相談の材料と文面の下書きまでを作ります。
02今回想定するシステム構成
賃貸管理のシステム(空室・部屋の属性・募集条件)── CSV(毎月末) ポータルサイトの管理画面(反響の件数)────────── CSV(毎月末) 内見の予約と鍵の貸出の記録(見送りの理由)──── スプレッドシート 自社の成約の記録(5年分)─────────────── スプレッドシート ▼【トリガー】毎月1日 7時台 Google Apps Script ├──▶ 止まっている段階の判定(反響・内見・申込を似た部屋の水準と比べる) ├──▶ 似た部屋の成約の抽出(駅・間取り・面積・築年) ├──▶ 今の賃料の位置と、見込みの日数(中央値) ├──▶ 見直しの候補ごとの見込みの日数 ▼ OpenAI API ── 構造化出力 │ ① 見直す条件の選択と順位 │ ② 担当者向けの理由 │ ③ オーナーへの提案の文面 ▼ Google Apps Script ── 数字の突き合わせ(AIの書いた数字が入力と一致するか) ├──▶ 担当者ごとの一覧(スプレッドシート) └──▶ Gmail の下書き(オーナーへの提案) ▼ 【人】担当者と上長が確認 → オーナーへ送る
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Python、Power Automate、Make |
| 生成AI | OpenAI API | Claude API、Gemini API |
| 台帳 | Google スプレッドシート(空室・反響・内見・成約の記録、判定の記録) | Microsoft Lists |
| メール | Gmail(賃貸管理部の共有アカウント) | Outlook |
新しく足すのは、スクリプトと OpenAI API の利用だけです。 賃貸管理のシステムとポータルサイトからはCSVを出すだけで、どちらにも書き込みません。最初の準備作業は、成約の記録を1行1成約の表にそろえることです。 駅、間取り、専有面積、築年、成約賃料、管理費、募集を始めた日、申込の日、礼金、フリーレントの月数を列にします。
実行環境は Google Apps Script です。 時間主導型のトリガーは月1回の間隔でも設定でき、毎月1日の朝に動かせば、担当者は月初に案の一覧を受け取れます。 時刻は1時間の幅の中で選ばれます。
AIの出力の形は、OpenAI API の構造化出力で固定します。 Responses API で text.format に type: "json_schema"、strict: true とスキーマを渡すと、応答がスキーマに沿った形になります。すべての項目を required にし、additionalProperties: false にする必要があります。 見直す条件の種類を enum で絞ります。
03どうやって実装するのか
処理の起点を決める
毎月1日の朝7時台に、月1回の時間主導型のトリガーで動かします。 空室の日数、反響、内見はどれも月単位で見るもので、毎日動かしても案はほとんど変わりません。 月1回にして、担当者が月初に相談の準備を始められるようにします。
ただし、ポータルサイトの反響の件数のCSVは、月末に担当者が置く必要があります。 動き始めたら、まずCSVの対象の月を確かめます。前月の分が無ければ、案を作らずに担当者へ「反響のCSVが届いていない」とだけ送ります。反響の件数が無いと止まっている段階を判定できず、どの部屋にも賃料を下げる案が出てしまいます。
繁忙期の前には、月の半ばにもう一度動かす設定を足せます。 1〜3月は空室の動きが速く、月初の案が月の半ばには古くなることがあります。その場合も、反響のCSVを月の半ばに出せることが前提です。
トリガーは賃貸管理部の共有の管理用アカウントで作ります。 インストール型のトリガーは作った人のアカウントで動き、失敗したときのメールもその人に届きます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 空室の一覧 | 部屋ID、駅、徒歩分数、間取り、専有面積、築年、募集を始めた日、今の賃料・管理費・敷金・礼金・フリーレント、設備 | 賃貸管理のシステムのCSV |
| 反響 | 部屋ID、月ごとの問い合わせの件数、掲載の閲覧数(取れる場合) | ポータルサイトの管理画面のCSV |
| 内見と申込 | 部屋ID、内見の日、仲介会社、見送りの理由のメモ、申込の有無 | 内見の予約と鍵の貸出の記録 |
| 成約の記録 | 駅、間取り、専有面積、築年、成約賃料、募集を始めた日、申込の日、礼金、フリーレント、設備 | 成約の記録のシート |
| 見直しの方針 | オーナーごとの下限の賃料、礼金とフリーレントの可否、設備の投資の可否 | オーナーの方針のシート |
質を決めるのは、成約の記録です。 見込みの日数は、似た部屋の過去の成約から出します。成約の記録に、募集を始めた日が無ければ、決まるまでの日数が出せません。 5年分のうち、募集を始めた日が残っている成約だけを使います。
オーナーの方針のシートは、案の範囲を絞るために持ちます。 「賃料はこれ以上下げない」「フリーレントは付けない」というオーナーに、その案を出しても使えません。担当者が知っているオーナーの意向を、表にしておきます。
データの取得方法を決める
CSVとスプレッドシートは、範囲を1回でまとめて読み、スクリプトの中で計算します。 40戸の部屋それぞれに、成約の記録の数千行から似た部屋を探します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 空室の日数と今の条件 | 空室の一覧 | 対象の部屋の抽出、今の賃料の位置 |
| 直近3か月の反響の件数 | 反響のCSV | 止まっている段階の判定 |
| 直近3か月の内見の回数、見送りの理由 | 内見の記録 | 止まっている段階の判定、AIへの材料 |
| 似た部屋の成約 | 成約の記録 | 賃料の位置と見込みの日数 |
| オーナーの方針 | 方針のシート | 案の範囲 |
似た部屋の条件と、見込みの日数の出し方は、次の手順に決めます。
似た部屋 = 同じ駅 かつ 同じ間取り かつ 専有面積が ±15% かつ 築年が ±10年 の、直近24か月の成約
賃料の位置 = 今の㎡あたりの賃料(管理費込み)が、似た部屋の成約の㎡あたりの賃料の何パーセンタイルか
見込みの日数 = 似た部屋のうち、賃料の位置が今の部屋と同じ帯(25%刻み)だった成約の、募集から申込までの日数の中央値
見直しの候補ごとの日数も、同じ手順で出します。 賃料を下げる候補なら、下げた後の位置の帯の成約の中央値、礼金をなくす候補なら、似た部屋のうち礼金が無かった成約の中央値です。似た部屋が8件に満たないときは、日数を出さずに「似た成約が少ない」とします。 数件の成約から出した中央値は、オーナーへの提案に載せられる数字ではありません。
AIへ渡す前に整形する
- CSVの対象の月の確認 … 空室の一覧と反響のCSVが前月末の分かを確かめます
- 対象の部屋の抽出 … 募集を始めた日から60日を超え、申込が入っていない部屋だけにします
- 止まっている段階の判定 … 直近3か月の反響の件数を、似た部屋の過去の水準と比べ、少なければ
inquiry(反響で止まっている)とします。反響が足りていて内見の割合が低ければviewing、内見があって申込が無ければapplicationとします - 似た部屋の成約の抽出と、賃料の位置の計算 … 「データの取得方法」の手順で出します
- 見直しの候補ごとの見込みの日数 … 賃料を1段下げる、礼金をなくす、フリーレントを1か月付ける、の3つについて出します。オーナーの方針で使えない候補は外します
- 見送りの理由のまとめ … 内見の記録のメモから、その部屋の分を時系列で並べます。仲介会社の担当者名と内見者の情報は消します
- 賃料のそろえ方 … 成約の記録と空室の一覧で、管理費を賃料に含めているかどうかが違うことがあります。どちらも管理費込みの㎡あたりの賃料にそろえてから比べます。 そろえないと、管理費の高い部屋ほど相場より安く見えます
3番目の判定を、AIに任せないでください。 段階の判定は、見直す条件を決める根拠そのものです。線をシートに置き、スクリプトで判定しておけば、なぜその案になったかを後から説明できます。
5番目で設備の候補を数字にしていないのは、成約の記録に設備の有無が揃っていないことが多いからです。 記録に設備の列があれば、設備の有無で分けた中央値も出せます。無ければ、設備の案はAIに理由だけを書かせ、日数は付けません。
AIに処理させる
させるのは、止まっている段階と、候補ごとの見込みの日数と、見送りの理由のメモを読んで、見直す条件を選び、オーナーへの提案の文面にすることです。 日数の計算と段階の判定は前処理で終わっています。
| 止まっている段階 | 見直しの中心 | 材料 |
|---|---|---|
inquiry(反響が少ない) | 賃料、掲載の写真と文面 | 賃料の位置、候補ごとの日数 |
viewing(内見が少ない) | 初期費用(礼金、フリーレント)、条件の細部 | 候補ごとの日数、見送りの理由 |
application(申込が無い) | 設備、室内の状態 | 見送りの理由 |
insufficient_data | 人が判断する | 似た成約が少ない、記録が足りない |
選ぶ条件は、1部屋に最大2つまでにします。 賃料も礼金も設備も、と並べると、オーナーはどれも決められません。第1案と第2案に絞り、それぞれに理由と見込みの日数を添えさせます。
| させないこと | 理由 |
|---|---|
| 見込みの日数の計算・推定 | 前処理の数字をそのまま使う。AIの数字を提案に載せない |
| 候補に無い賃料の提示 | 前処理で出した候補の賃料だけを使う |
| オーナーの方針に反する案 | 方針のシートで外した候補を戻さない |
| 成約を約束する書き方 | 「この条件なら決まります」は書かない。見込みは過去の中央値 |
| 内見者の属性に触れる理由 | 見送りの理由に内見者の情報が残っていても、文面に使わない |
4行目が、オーナーへの文面でいちばん起きやすい失敗です。 何も言わなければ「この賃料に見直せば、早期の成約が見込めます」と書きます。見込みの日数は過去の似た部屋の中央値で、この部屋が決まる約束ではありません。 約束に読める文面は、決まらなかったときにオーナーとの関係を損ないます。
指示内容を固定する
あなたは賃貸住宅の管理会社で、空室が長引いた部屋の募集条件について、
オーナーへ相談する担当者を支える立場です。
与えられた数字と記録だけを使ってください。推測で埋めないでください。
【あなたの仕事】
部屋ごとに、見直す条件を最大2つ選んで順位を付け、
担当者向けの理由と、オーナーへの提案の文面を書いてください。
【条件の選び方】
- stage が inquiry なら、rent_down(賃料)か listing(掲載の写真と文面)を中心に選ぶ
- stage が viewing なら、key_money_zero(礼金)か free_rent(フリーレント)を中心に選ぶ
- stage が application なら、equipment(設備)か room_condition(室内の状態)を中心に選ぶ
- stage が insufficient_data なら、選ばずに human_review を返す
- candidates に無い条件は選ばない
【厳守事項】
- 賃料、日数、件数は入力の値をそのまま書いてください。計算や推定をしないでください。
- candidates に無い賃料や、方針で外された条件を提案しないでください。
- 「決まります」「成約が見込めます」など、成約を約束する書き方をしないでください。
日数は「似た部屋の過去の成約では、中央値で○日でした」と書いてください。
- 見送りの理由のメモから、内見した人の年齢、家族構成、国籍などに触れないでください。
- 設備の案に日数が付いていない場合は、日数を書かないでください。
- オーナーへの文面は、です・ます調で、400字以内にしてください。
- 担当者向けの理由には、選ばなかった条件を選ばなかった理由も1文で書いてください。
【部屋の情報】{room_json}
【止まっている段階】{stage}
【候補と見込みの日数】{candidates_json}
【見送りの理由のメモ(時系列)】{feedback}
【オーナーの方針】{owner_policy}
「選ばなかった条件の理由」を書かせるのは、担当者が確かめやすくするためです。 賃料を下げない案が出たときに、なぜ下げないのかが書かれていれば、担当者はオーナーから「賃料を下げればいいのでは」と聞かれたときの答えを持てます。
出力形式を固定する
次の形のJSONで受け取ります。
{
"room_id": "R-10234",
"stage": "viewing",
"proposals": [
{
"rank": 1,
"lever": "rent_down | listing | key_money_zero | free_rent | equipment | room_condition | human_review",
"candidate_id": "C2",
"expected_days_median": 0,
"reason_for_staff": "",
"not_chosen_reason": ""
}
],
"owner_message": ""
}
1つ目の理由は、candidate_id で前処理の候補とつなげられることです。 AIが選んだ案が、どの候補の数字を根拠にしているかを、スクリプトが確かめられます。expected_days_median が、その候補の前処理の値と一致しなければ、その案を捨てます。
2つ目は、lever を決まった値に絞れることです。 自由文で案を書かせると、「家賃の調整」「条件緩和」と言い方が毎月変わり、どの見直しで決まったかを後から数えられません。 決まった値なら、半年後に「viewing の部屋で key_money_zero を選んだら何日で決まったか」を記録から出せます。
3つ目は、構造化出力の決まりで、項目の欠けが起きないことです。 OpenAI の構造化出力ではすべての項目を required にするため、not_chosen_reason を空にしたくても、項目そのものは必ず返ります。 空の文字列が返ったときは、スクリプトの側で「理由なし」と表示します。
拒否のときは、スキーマに沿わない応答が返ります。 安全上の理由で応答しない場合、応答に refusal の項目が入ります。refusal があればその部屋は人に回し、文面の下書きを作りません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受け渡しフォルダのCSV | スプレッドシートへの読み込み | 空室の一覧と反響の件数 |
| 内見・成約の記録、方針のシート | 範囲をまとめて読む | 段階の判定、似た部屋、方針(書き込まない) |
| OpenAI API | UrlFetchApp.fetch で呼ぶ | 見直し案と文面を構造化出力で受け取る |
| 担当者ごとの一覧 | 範囲をまとめて書く | 部屋ごとの数字・案・理由 |
| Gmail | 下書きの作成 | オーナーへの提案の文面(送信しない) |
OpenAI API は UrlFetchApp.fetch で呼びます。 method を post、contentType を JSON にし、headers に API キーを入れます。muteHttpExceptions を true にして、失敗の応答でも例外で止めずに応答のコードを見ます。 API キーはスクリプトのプロパティに置きます。
オーナーへの文面は、Gmail の下書きにします。 createDraft で下書きを作り、replyTo に担当者のアドレスを、name に会社と担当者の名前を指定します。送信はしません。 上長の確認を経て、担当者が送ります。郵送やFAXのオーナーには、下書きの本文を手紙の文面に使います。
賃貸管理のシステムとポータルサイトには書き込みません。 募集条件を変えるのは、オーナーの返事を受けた後の担当者の作業です。
人が確認する
担当者が、自分の担当の部屋の案をすべて確かめます。 40戸を4名で分けるので、1人10戸ほどです。
- 段階の判定を確かめる … 反響と内見の数が、自分の知っている状況と合うかを見ます。ポータルサイトの掲載が止まっていた月があると、反響が少なく出ます
- 案が部屋の状況に合うかを確かめる … 室内の状態、オーナーとの過去のやり取りを知っているのは担当者です
- 数字を確かめる … 見込みの日数と似た部屋の件数を見ます。似た部屋の件数が少ない案は、文面から日数を外します
- 文面を直す … オーナーとの関係に合わせて、言葉を直します
- 上長の確認 … 賃料を下げる案は、必ず上長が確認します
1番目を省かないでください。 掲載を止めていた月、写真を撮り直していた月の反響は、部屋の人気とは関係ありません。その月を含めて判定すると、inquiry と出て賃料を下げる案になります。
5番目の上長の確認は、賃料を下げる案だけに絞ります。 礼金やフリーレントの案は担当者の判断で送れるようにしておかないと、月初に40戸の相談がそろう意味が薄れます。賃料はオーナーの収入に直結し、一度下げると戻しにくいので、二人の目を通します。
目標は、40件をならして1件15分です。 数字と案の確認に10分、文面の手直しに5分を想定しています。
例外に対処する
| 起きること | 対応 |
|---|---|
| 反響のCSVが届いていない | 案を作らず、担当者に知らせる |
| 似た部屋の成約が8件に満たない | 日数を出さず、insufficient_data として人へ |
| 募集を始めた日が空室の一覧に無い | 空室の日数が出せない。その部屋を一覧の末尾に出す |
| 掲載を止めていた月がある | 担当者が印を付け、その月を除いて判定し直す |
| オーナーの方針が登録されていない | 賃料の下限なしとして扱わず、human_review にする |
| OpenAI API が応答しない・失敗の応答 | 数字と段階だけを一覧に載せ、文面の欄を空ける |
refusal が返る | その部屋の文面を作らず、人へ回す |
| AIの日数が前処理の値と違う | その案を捨てる。AIの数字を提案に載せない |
| 同じ建物で複数の部屋が空いている | 部屋ごとに案を作るが、一覧では建物ごとにまとめ、同じ建物の部屋で条件がばらばらにならないかを担当者が見る |
| 1回の実行が6分を超えそう | 部屋を担当者ごとに分け、どこまで終わったかをシートに残して続きから動かす |
上から3行目までが、最初の数か月の大半を占めます。 どれもAIの問題ではなく、成約の記録と空室の一覧の整備の問題です。 似た部屋が少ない駅は、似た部屋の条件を「同じ駅」から「隣の駅まで」に広げるかを、担当者と決めます。
記録を残す
- その月に読み込んだCSVのファイル名と対象の月
- 部屋ごとの段階の判定、似た部屋の件数、賃料の位置、候補ごとの見込みの日数
- AIに渡した入力と、返ってきたJSONの全文
- 担当者が直した案と文面
- オーナーの返事(採用した条件、見送った条件)と、その後に決まるまでの日数
- そのときの似た部屋の条件と、段階の判定の線
5つ目が、この構成を良くしていく材料です。 見直しの後に実際に何日で決まったかを記録すれば、次からは「自社がこの見直しを提案した部屋が、何日で決まったか」を候補の数字に使えます。
04実装レベルの3段階
半自動化で、1件45分が15分になります。この段階が本記事の想定です。 材料集め、似た部屋の検索、見込みの日数、案と文面の下書きが自動になり、担当者の時間は、部屋の状況を知っている立場での確認と、文面の手直しになります。 本格構成は、賃貸管理のシステムとポータルサイトとの連携が要ります。 利用しているシステムに条件の更新の仕組みがあるかどうかで、できる範囲が変わります。条件を変えた後に古い条件の掲載が残らないことが大事で、半自動化の段階でも、掲載の直し漏れを一覧で確かめられるようにしておきます。
05工数削減シミュレーション
導入後 40件 × 15分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 数百戸から数千戸の賃貸住宅を管理し、空室が長引いた部屋の募集条件の相談をオーナーへ毎月持ちかけている管理会社。自社で過去の成約の記録(成約賃料と募集から成約までの日数)を残しているが、相談のときに使えていない場合。賃料を下げるか、初期費用を軽くするか、設備を足すかの判断が担当者の経験に任されている場合。
- 管理戸数が数十戸で、担当者が地域の相場と各部屋の状況を頭に入れている場合。過去の成約の記録が残っておらず、類似の成約を引けない場合。家賃の保証付きの一括借上げで、募集条件を管理会社だけで決められる場合。なお、募集条件を変えるかどうかを決めるのはオーナーで、この構成はその判断を代替しません。
07最小構成で試す方法
- 先月、60日を超えて空いていた部屋から10戸を選ぶ
- その10戸について、反響と内見の数、見送りの理由を表にし、似た部屋の成約を成約の記録から手で5〜10件ずつ拾う
- 部屋の住所と、内見者や仲介会社の名前を消し、手元のAIサービスに表を貼り付ける
- 「反響・内見・申込のどこで止まっているかを踏まえて、賃料・初期費用・設備のどれを見直すかを最大2つ選び、理由を書いてください。表に無い数字は書かないでください。成約を約束する書き方をしないでください」と指示する
- 出てきた案を、担当者が実際にオーナーへ提案した内容と、その後に決まったかどうかと突き合わせる
10戸は必ずやってください。 スクリプトを書く前に、「自社の成約の記録から、似た部屋を引けるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 担当者の提案と同じか、より筋の通った案が出た | スクリプトでの自動化に進む |
| 成約を約束する文面になった | 指示の書き方で直る。構成は有効 |
| 似た部屋の成約が拾えない部屋が多い | 成約の記録の整備が先。 募集を始めた日の列を埋める |
3行目が出ることは珍しくありません。 成約の記録には成約賃料しか残っていないことが多いからです。その場合は、賃貸管理のシステムの契約の履歴から、募集を始めた日を拾い直すところから始めます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 相場を競合の掲載賃料で見る | 自社の成約の記録を使う。 残っている部屋の賃料は相場ではない |
| 成約の記録に募集を始めた日が無い | 契約の履歴から拾い直す。無い成約は使わない |
| どの部屋にも賃料を下げる案が出る | 止まっている段階を先に判定し、段階で見直す条件を変える |
| 掲載を止めていた月の反響で判定する | 担当者が印を付け、その月を除く |
| 似た部屋が少ない駅で日数が揺れる | 8件に満たなければ日数を出さない |
| AIが日数を自分で推定する | 日数を候補の数字に限り、前処理の値と突き合わせる |
| 成約を約束する文面になる | 約束の書き方を禁じ、日数は過去の中央値と書かせる |
| 内見者の属性が文面に出る | 見送りの理由のメモから個人の情報を消し、使わないよう指示する |
| オーナーの方針に反する案が出る | 方針のシートで候補から外してから渡す |
| 条件を変えた後に古い掲載が残る | 変更した部屋の掲載の直しを一覧で確かめる |
上の3行が、この構成の失敗のほとんどです。 どれもAIの前の段階の問題で、相場をどう見るか、どこで止まっているかを先に数字にしておけば、案は自然に部屋の状況に合います。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 部屋の募集条件と成約賃料、オーナーの方針、内見の記録の見送りの理由です。見送りの理由には、内見した人について仲介会社が書いた情報が混ざることがあります。
- 内見者の情報をAIに渡さない … 見送りの理由のメモから、内見者の年齢、家族構成、勤め先、国籍などを消してから渡します。文面に使わないことも指示に書きます
- オーナーの名前と住所を渡さない … 文面の宛名は、スクリプトの側で下書きを作るときに付けます
- 成約を約束しない … 見込みの日数は過去の似た部屋の中央値です。オーナーへの文面で約束に読める書き方をしないことは、指示と担当者の確認の両方で守ります
- 条件を決めるのはオーナー … この構成は提案の材料までを作ります。条件の変更も掲載の更新も、オーナーの返事を受けて人が行います
- 掲載の表示と実際の条件をそろえる … 条件を変えた後に古い条件の掲載が残ると、入居を検討している人に実際と違う条件を見せることになります。変更した部屋の掲載の直しを、その日のうちに確かめます
- API キーをスクリプトの本文に書かない … スクリプトのプロパティに置き、編集権限を賃貸管理部の管理者に限ります
同じ建物の既存の入居者にも配慮します。 空室の賃料を下げると、同じ建物の入居者との賃料の差が生じます。その扱いはオーナーと管理会社で決めることで、AIの文面では触れさせません。
誤りが起きた場合のリスクは、必要の無い賃料の引き下げを提案することと、決まる約束に読める提案をすることの2つです。 前者は段階の判定で防ぎ、後者は文面の指示と確認で防ぎます。
10まず何から始めるか
1週目:成約の記録をそろえる
直近24か月の成約を1行1成約の表にし、駅、間取り、面積、築年、成約賃料、募集を始めた日、申込の日、礼金、フリーレントの列を埋めます。募集を始めた日が無い成約は、契約の履歴から拾い直します。
2週目:10戸で試す
先月の長期の空室から10戸を選び、手で似た部屋を拾い、手元のAIサービスで案を出させます。担当者の実際の提案と突き合わせ、成約を約束する文面になっていないかを最優先で見ます。
3週目:似た部屋の条件と段階の線を決める
面積の幅、築年の幅、8件の下限、反響と内見の水準の線を、担当者と上長で決めます。オーナーの方針のシートも、担当者への聞き取りで埋めます。
4週目:見込みの日数までをスクリプトにする
Apps Script で空室と成約の記録を読み、段階の判定と見込みの日数を出すところまで作ります。この時点ではAIを呼ばず、数字の一覧だけを担当者に渡して、相談に使ってもらいます。
2か月目: OpenAI API による案と文面の下書きを足します。担当者が案を直した件数を数えます。3か月目以降: オーナーの返事と決まるまでの日数を記録に残し、1件45分が何分になったかを実測します。自社が提案した見直しの結果が、次の月の候補の数字に使えるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 時間主導型のトリガーが毎分から月1回までの間隔で設定でき、時刻が1時間の幅の中で選ばれること。インストール型のトリガーが作った人のアカウントで動くこと。失敗時に失敗をまとめたメールが届くこと | Google for Developers: Installable Triggers | 2026-10-06 |
| 1回の実行が6分まで、Google Workspace のアカウントで URL Fetch が1日100,000回であること。上限が予告なく変わりうること | Google for Developers: Quotas for Google Services | 2026-10-06 |
fetch(url, params) の method・contentType・headers・payload。muteHttpExceptions を true にすると失敗の応答でも例外を投げずに応答を返すこと | Google for Developers: Class UrlFetchApp | 2026-10-06 |
| スクリプトのプロパティがすべての利用者に共有されるアプリ全体の設定値の置き場所であること。値が文字列で保存されること | Google for Developers: Properties Service | 2026-10-06 |
createDraft で下書きを作れ、htmlBody・name・replyTo・cc・bcc・attachments を指定できること。https://mail.google.com/ のスコープが要ること | Google for Developers: Class GmailApp | 2026-10-06 |
Responses API で text.format に type: "json_schema"・strict: true・スキーマを渡すと、応答がスキーマに沿うこと。すべての項目を required にし、additionalProperties: false にする必要があること。拒否のときはスキーマに沿わず refusal の項目が入ること | OpenAI API: Structured model outputs | 2026-10-06 |
募集条件の見直しの判断と、オーナーへの提案の進め方は、自社の管理の契約とオーナーとの取り決めに従ってください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。賃貸管理のシステムとポータルサイトからのCSVの出し方は、利用しているサービスの案内を確認してください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0552)についてのご相談はこちらから。
