Media > AI活用ユースケース > カスタマーサポート > 管理物件の修繕・設備交換・入居者対応の記録を部屋ごとに探し、担当の交代や入居者からの連絡のときに経緯を根拠付きで引く

管理物件の修繕・設備交換・入居者対応の記録を部屋ごとに探し、担当の交代や入居者からの連絡のときに経緯を根拠付きで引く

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

管理物件の部屋ごとに、過去の修繕・設備交換・入居者対応の記録を探せるようにします。担当者の交代時や入居者から連絡が来たときに、「いつ、何が起き、誰が何をして、何が残っているか」を根拠の記録付きで返します。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
Azure AI/OpenSearch
連携・自動化
Make/n8n/Power Automate
対象業界
その他/不動産/宿泊
対象部門
カスタマーサポート
対象業務
情報検索/要約
主な課題
属人化している/引き継ぎができていない/情報が見つからない
AIで行う処理
検索(RAG)
主な効果
対応スピード向上/属人化解消/検索時間短縮
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
RAG・個別開発(大)
人間の確認
条件付き
現在工数
120h/月
AI導入後
40h/月
想定削減
67%
年間削減
960h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 入居者やオーナーからの連絡、または引き継ぎで、ある部屋の過去の経緯を知る必要が生じる
  2. 賃貸管理システムで物件と部屋を開き、対応履歴を新しい順にさかのぼる
  3. メモに協力業者の名前や「完了」とあれば、保管フォルダを開いて該当しそうな月の完了報告を探す
  4. 見積やオーナーの承認が絡むものは、前任者のメールを検索する。前任者が退職していれば共有のメールボックスを探す
  5. 見つかった記録を並べ、同じ出来事の記録か、別の出来事かを読み分ける
  6. 経緯をメモにまとめ、入居者やオーナーへの説明、または手配の判断に使う
導入後(After)
  1. 自動毎晩、賃貸管理システムの対応履歴、完了報告の本文、共有のメールボックスの修繕関係のメールを取り込み、1件ずつの記録として検索基盤に入れる
  2. 人担当者が、Teams の検索の窓口に質問を書く(「○○マンション302の給湯器、前回は何をした?」)。場面(電話対応中/引き継ぎ/退去前確認)を選ぶ
  3. 自動生成AIが、質問から物件の手がかり、部屋、設備、症状、期間、探し方をJSONで取り出す
  4. 自動ワークフローが物件の手がかりを物件マスタで引き、物件コードを確定する
  5. 自動検索基盤が、物件と部屋で絞ったうえで、言葉と意味の両方で探し、案件ごとに1件にまとめて返す
  6. 自動上位の案件について、その案件に付く記録を日付の順にすべて取り出す
  7. 自動生成AIが、取り出した記録だけを根拠にして、案件ごとの経緯と、残っている事項を書く。文ごとに根拠の記録が付く
  8. 人担当者が根拠の記録を開いて確かめ、入居者やオーナーへの説明、または手配の判断に使う
各工程の詳しい説明を読む
  1. 入居者やオーナーからの連絡、または引き継ぎで、ある部屋の過去の経緯を知る必要が生じる
  2. 賃貸管理システムで物件と部屋を開き、対応履歴を新しい順にさかのぼる
  3. メモに協力業者の名前や「完了」とあれば、保管フォルダを開いて該当しそうな月の完了報告を探す
  4. 見積やオーナーの承認が絡むものは、前任者のメールを検索する。前任者が退職していれば共有のメールボックスを探す
  5. 見つかった記録を並べ、同じ出来事の記録か、別の出来事かを読み分ける
  6. 経緯をメモにまとめ、入居者やオーナーへの説明、または手配の判断に使う

(a)担当が替わると、経緯を知る人がいなくなる。 対応履歴のメモは「給湯器 業者手配」のように短く、前任者の頭の中にあった「なぜそうしたか」が書かれていません。 前任者が社内にいれば聞けますが、退職していれば記録を読み解くしかありません。

(b)言葉がそろっていないので、探しても見つからない。 同じ出来事が、対応履歴では「お湯が出ない」、完了報告では「給湯器エラー 888」、オーナー宛てのメールでは「ボイラー交換」と書かれています。「給湯器」で検索すると、いちばん大事なメールが出てきません。 型番で探せば完了報告は出ますが、入居者の言葉では出てきません。

(c)「前にも言った」に、その場で答えられない。 入居者からの電話の最中に3か所を探す時間はなく、「確認して折り返します」と答えるしかありません。 同じ不具合の2回目の連絡は、入居者の側ではすでに不満になっています。

(d)同じ部屋番号に、前の入居者の記録が混ざる。 さかのぼると前の入居者の苦情も並び、電話の最中に読み上げてしまう危険があります。

  1. 【自動】 毎晩、賃貸管理システムの対応履歴、完了報告の本文、共有のメールボックスの修繕関係のメールを取り込み、1件ずつの記録として検索基盤に入れる
  2. 【人】 担当者が、Teams の検索の窓口に質問を書く(「○○マンション302の給湯器、前回は何をした?」)。場面(電話対応中/引き継ぎ/退去前確認)を選ぶ
  3. 【自動】 生成AIが、質問から物件の手がかり、部屋、設備、症状、期間、探し方をJSONで取り出す
  4. 【自動】 ワークフローが物件の手がかりを物件マスタで引き、物件コードを確定する
  5. 【自動】 検索基盤が、物件と部屋で絞ったうえで、言葉と意味の両方で探し、案件ごとに1件にまとめて返す
  6. 【自動】 上位の案件について、その案件に付く記録を日付の順にすべて取り出す
  7. 【自動】 生成AIが、取り出した記録だけを根拠にして、案件ごとの経緯と、残っている事項を書く。文ごとに根拠の記録が付く
  8. 【人】 担当者が根拠の記録を開いて確かめ、入居者やオーナーへの説明、または手配の判断に使う

2番目で場面を選ばせるのが、この設計の分かれ目です。 電話対応中なら、入居者に付く記録はいまの契約のものだけを返します。引き継ぎなら前の入居者の記録も返しますが、印を付けます。同じ部屋番号でも、返してよい記録の範囲が場面で変わります。

探すのは検索基盤で、生成AIは渡された記録を読んで書くだけです。 「記録が見つからない」も、答えの1つとして返します。

02今回想定するシステム構成

構成図
賃貸管理システム(対応履歴)/完了報告の保管フォルダ/共有のメールボックス
   │【取り込み】毎晩2時
   ▼
n8n ── 1件ずつの記録に分け、物件コード・部屋・案件番号・種類・日付を付ける
   ▼
Amazon OpenSearch Service
   │  取り込みパイプライン(text_embedding)で本文の埋め込みを作る
   │
   │【トリガー】担当者が Teams の窓口に質問を書く
   ▼
n8n ── 場面(電話対応中/引き継ぎ/退去前確認)と質問を受け取る
   ▼
Claude API(呼び出し1)── 検索の条件をJSONで取り出す(structured outputs)
   ▼
n8n ── 物件マスタで物件コードを確定、場面から見せてよい範囲を決める
   ▼
Amazon OpenSearch Service
   │  ① ハイブリッド検索:物件・部屋・範囲で絞り、案件番号でまとめる(collapse)
   │  ② 上位の案件の記録を日付の順にすべて取る
   ▼
Claude API(呼び出し2)── 記録だけを根拠にした経緯と残っている事項(citations)
   ▼
Teams に返す ──【人】根拠の記録を開いて確かめる
役割想定する製品代替候補
検索基盤Amazon OpenSearch ServiceOpenSearch(自社で運用)、Azure AI Search
生成AIClaude API(検索の条件の取り出しと、根拠付きの経緯)OpenAI API、Gemini API
埋め込み日本語に対応したテキスト埋め込みモデル(OpenSearch に接続)同等の多言語埋め込みモデル
連携n8n(毎晩の取り込み、物件マスタの照合、見せてよい範囲の決定、Teams との受け渡し)Make、Power Automate
保管賃貸管理システムと完了報告の保管フォルダ(原本)文書管理システム

賃貸管理システムと保管フォルダは、今のまま使います。 検索基盤に入れるのは記録の写しで、正はあくまで元の記録です。 答えに付く根拠からは、元の対応履歴や完了報告のPDFへリンクします。

Amazon OpenSearch Service は、OpenSearch のクラスターを AWS 上で運用するマネージドサービスで、対応する版は 3.5、3.3、3.1、2.19 などです。案件でまとめる機能を使うため、3.1 以降でドメインを作ります。

OpenSearch を選ぶ理由は、3つの機能が1回の検索でそろうことです。 1つ目はハイブリッド検索で、キーワード検索と意味の検索を組み合わせ、検索パイプラインでスコアを統合します。エラー番号や型番は言葉で、「お湯がぬるい」のような入居者の言い回しは意味で引けます。2つ目は、結果を項目の値でまとめる collapse(3.1 で導入)です。案件番号でまとめれば、1件の水漏れに付く6件の記録が1行になります。 3つ目は、すべての下位の検索にかかる filter です。物件・部屋・見せてよい範囲の条件を1か所に書けば、言葉にも意味にも同じように効きます。

03どうやって実装するのか

Step1

処理の起点を決める

トリガーは2つあります。記録を入れる側と、探す側です。

入れる側は、毎晩2時の定時実行です。前日分の対応履歴、完了報告、修繕の分類が付いたメールを取り込みます。当日の出来事は、賃貸管理システムを直接見れば足ります。

探す側は、担当者が Teams の検索の窓口に質問を書いたときです。質問と一緒に、場面を3つから選んでもらいます。

場面使うとき入居者に付く記録の扱い
電話対応中入居者やオーナーからの連絡の最中いまの契約の記録だけを返す
引き継ぎ受け持ちの棟の把握前の契約の記録も返すが、印を付ける
退去前確認退去の立会いの前いまの契約の記録だけを返す

場面を選ばずに送った質問は、見せる範囲がいちばん狭い電話対応中として扱います。

Step2

入力データを集める

データ中身取得元
対応履歴受付日、物件・部屋、分類、担当者、メモ、状態(受付/手配中/完了)賃貸管理システム(日次の書き出し)
完了報告協力業者名、作業日、作業内容、交換した設備の型番、写真の有無保管フォルダのPDF(文字の入ったもの)
修繕のメールオーナーへの見積の説明、承認の返信、協力業者との日程調整共有のメールボックス(修繕の分類が付いたもの)
物件マスタ物件コード、正式名、通称、旧名、住所、部屋番号の一覧賃貸管理システム
契約の区切り部屋ごとの契約番号と、入居日・退去日賃貸管理システム

質を決めるのは、いちばん下の契約の区切りです。 これが無いと入居者に付く記録の契約が決まらず、場面による見せ分けが成り立ちません。 物件マスタの通称と旧名も欠かせません。担当者は「駅前のコーポ」のように書くからです。

Step3

データの取得方法を決める

取り込みでは、1件の記録を1つの文書として入れ、案件の番号(受付番号)を必ず付けます。 完了報告とメールは次の順で結び付けます。

  1. 本文に受付番号が書かれていれば、それを使う
  2. 無ければ、物件・部屋・協力業者名・日付が近い受付を探し、1件に決まれば結び付ける
  3. 決まらなければ、案件の番号に U- と記録の番号を入れ、link_status を unlinked にする

3番目の記録も捨てません。 1件だけの案件として検索に出ます。

項目型用途
event_id / case_idkeyword記録の番号と案件の番号。case_id は collapse でまとめる項目
property_id / unit_nokeyword物件と部屋。共用部は COMMON
scope / tenancy_idkeywordunit(部屋に付く)/ common(共用部)/ tenancy(入居者に付く)と、その契約番号
event_type / event_datekeyword / date受付・手配・見積・承認・完了・入居者連絡と、その日付
equipment / model_nokeyword設備の種類と型番
body_text / body_embeddingtext / ベクトル本文と、その埋め込み
source_urlkeyword元の記録へのリンク

case_id を keyword にするのは必須です。 collapse でまとめる項目は、keyword か数値の型でなければなりません。 埋め込みは、取り込みパイプラインの text_embedding プロセッサが field_map で指定した body_text から作ります。

探す側は、2回の問い合わせに分けます。 1回目のハイブリッド検索で案件を上位5件まで取り、2回目で、その5件に付く記録を event_date の古い順にすべて取ります。

Step4

AIへ渡す前に整形する

取り込み側

  1. メールの引用と署名を落とす … そのままだと同じ文が何件もの記録に現れます
  2. 完了報告のPDFから文字を取り出す … 文字の無いスキャンは、本文を空にして source_url だけを入れます
  3. 部屋番号の表記をそろえる … 「302号室」「3-02」を 302 に。改装で変わった番号は対応表で寄せます
  4. tenancy_id を決める … 記録の日付を入居日・退去日と比べます
  5. 個人の連絡先を落とす … 経緯を探すのに連絡先は要りません

探す側

  1. 物件の手がかりを物件マスタで引く … 正式名・通称・旧名で照合します。複数に当たったら候補を返して選んでもらいます
  2. 場面から見せてよい範囲を組む … 次の条件を filter に入れます
場面filter の中身
電話対応中物件コードが一致し、scope が unit か common、または scope が tenancy で tenancy_id がいまの契約
引き継ぎ物件コードが一致するもの(tenancy はすべて含むが、後段で印を付ける)
退去前確認電話対応中と同じ

範囲の条件は、生成AIに組ませません。 いまの契約は賃貸管理システムから n8n が引いて組みます。

Step5

AIに処理させる

生成AIは2回呼び、それぞれに1つの仕事をさせます。

呼び出しさせること
1:条件の取り出し物件の手がかり、部屋(共用部は COMMON)、設備、症状、期間、探し方(relevance 関係の深い順/ timeline 新しい順/ open_cases 終わっていない案件)。書かれていなければ null
2:経緯の整理案件ごとの経緯を日付の順に。残っている事項、同じ症状のくり返し、記録どうしの食い違い、見つからなかったこと
させないこと理由
記録にない経緯の補完「おそらく交換した」と書くと、担当者はそれを事実として伝える
費用の負担者の判断契約とオーナーとの取り決めで決まる。人が判断する
入居者の過失の判断入居者との関係に直接ひびく
保証期間の計算設置日と保証の条件が記録にそろっていないことが多い
前の契約の記録の要約を電話対応中に出すこと範囲の条件で渡さないが、指示でも禁じる

いちばん起きやすい失敗は、表の1行目です。 完了報告が無い案件を渡すと「その後、交換されました」と書きたがります。記録が無いことは、残っている事項として書かせます。

Step6

指示内容を固定する

呼び出し1(structured outputs で受け取る)

あなたは賃貸管理会社の社内検索の窓口です。
担当者の質問から、検索の条件を取り出してください。検索そのものはしません。

【取り出す項目】
- property_hint : 物件を指す言葉(正式名・通称・旧名・住所の一部)。書かれた言葉のまま
- unit_no       : 部屋番号。「号室」は付けない。共用部の話なら COMMON
- equipment     : 設備の種類。書かれていなければ null
- symptom       : 症状や出来事を表す言葉。書かれた言い回しを残す
- date_from / date_to : 期間。「去年の冬」のような表現は、今日の日付 {today} から範囲にする
- mode          : relevance / timeline / open_cases のどれか

【厳守事項】
- 書かれていない項目は null にしてください。推測で埋めないでください。
- 物件名を正式名に直さないでください。照合は別の仕組みが行います。
- 部屋番号を補わないでください。「3階の角部屋」は unit_no を null にします。
- 「前回」「この前」は mode を timeline にしてください。
- 「まだ終わっていない」「進行中」は mode を open_cases にしてください。

【質問】{question}

呼び出し2(citations を有効にした文書で渡す)

あなたは賃貸管理会社の物件担当者の補助です。
渡された記録だけを根拠にして、この部屋(または共用部)の経緯をまとめてください。

【書くこと】
1. 案件ごとに、受付から現在までの経緯を日付の順に書く
2. 各案件で残っている事項(完了報告が無い、完了後に再連絡がある、
   見積の承認が無い)を書く
3. 別の案件で同じ設備・同じ症状が出ていれば、くり返しとして書く
4. 記録どうしで食い違いがあれば、両方をそのまま書く
5. 質問に対して記録が見つからない部分は「記録なし」と書く

【厳守事項】
- 渡された記録に書かれていないことを書かないでください。
  記録が無い出来事を「おそらく」「と思われる」で補わないでください。
- 完了報告が無い案件を、完了したものとして書かないでください。
- 費用を誰が負担するか、入居者の過失かどうかを書かないでください。
- 保証の期間や残りを計算しないでください。
- 記録の title に「前の契約」とあるものは、経緯の事実だけを書き、
  入居者の発言や苦情の内容を引用しないでください。

【場面】{scene}
【質問】{question}
【記録】(案件ごとに document ブロックで渡す)

「完了報告が無い案件を完了と書かない」を別に書くのは、「推測しない」だけでは手配の記録の「交換予定」を「交換した」と読むからです。

呼び出しを2回に分けるのは、仕様の制約でもあります。 文書に citations を有効にしたうえで output_config.format を付けると、400のエラーが返ります。

Step7

出力形式を固定する

呼び出し1は、structured outputs で次のJSONを受け取ります。 スキーマは output_config.format に json_schema として渡します。

{
  "property_hint": "駅前のコーポ",
  "unit_no": "302",
  "equipment": "給湯器",
  "symptom": "お湯がぬるい",
  "date_from": null,
  "date_to": null,
  "mode": "timeline"
}

呼び出し2は、記録を1件ずつ plain text の文書として渡します。 citations は要求の中の全文書で有効にするか、全文書で無効にするかのどちらかです。title に event_id と日付を、context に case_id と scope を入れます。title と context はモデルに渡るが、引用の対象になりません。 回答は文と引用(cited_text)の組で返り、n8n が次の形に組み直します。

{
  "scene": "phone",
  "property_id": "P-0148",
  "unit_no": "302",
  "cases": [
    {
      "case_id": "R-2025-03112",
      "summary": [
        { "text": "2025年12月、入居者から湯温が上がらないとの連絡があり、協力業者が点検した。",
          "evidence": [ { "event_id": "E-88121", "cited_text": "" } ] }
      ],
      "open_items": [ "完了報告の記録なし" ],
      "has_prior_tenancy": false
    }
  ],
  "repeat_pattern": "",
  "not_found": [ "給湯器の設置日" ]
}

JSONに組み直す理由は3つです。 evidence を文ごとに持てるので、担当者は気になる文の根拠だけを開けます。open_items と not_found を独立した欄にできるので、「記録が無い」が経緯の文に埋もれません。has_prior_tenancy で、前の契約の記録を含む案件に色を付けられます。

Step8

システムへ連携する

つなぎ先方式内容
賃貸管理システム日次の書き出しと、物件マスタ・契約の参照対応履歴を取り込み、物件コードといまの契約を引く
保管フォルダ/共有のメールボックスn8n のファイル・メール取得前日分の完了報告と修繕のメールを取り込む
Amazon OpenSearch ServiceREST の問い合わせ取り込み(_bulk)、ハイブリッド検索、案件の記録の取得
Claude APIAPI呼び出し条件の取り出し(structured outputs)と、経緯(citations)
Teamsn8n からの投稿質問の受け付けと、経緯の表示

ハイブリッド検索の要求は次の形です。

{
  "size": 5,
  "query": {
    "hybrid": {
      "queries": [
        { "multi_match": { "query": "給湯器 お湯がぬるい", "fields": ["body_text", "model_no"] } },
        { "neural": { "body_embedding": { "query_text": "お湯がぬるい", "model_id": "<埋め込みモデルのID>", "k": 50 } } }
      ],
      "filter": { "bool": { "filter": [
        { "term": { "property_id": "P-0148" } },
        { "terms": { "unit_no": ["302", "COMMON"] } }
      ] } }
    }
  },
  "collapse": { "field": "case_id" }
}

filter は1つの問い合わせの形で書く決まりなので、 場面の条件(scope と tenancy_id)も同じ bool に足します。下位の検索は最大5つまでです。

timeline のときは sort に event_date の新しい順を指定します。 並べ替えを指定すると文書のスコアは null になるため、「前回は何をしたか」に限って使います。collapse と併用した集計は、まとめる前の結果に対して動きます。 案件の数は2回目の問い合わせで数えます。

賃貸管理システムには書き込みません。 対応履歴の追記は、これまでどおり担当者が行います。

Step9

人が確認する

経緯は、担当者が根拠を開いてから使います。 入居者やオーナーへ直接送る経路は作りません。

  1. open_items と not_found を先に読む … 「完了報告の記録なし」は、作業が終わっていないのか、報告が取り込まれていないのかを見分けます
  2. 説明に使う文の根拠を開く … evidence のリンクから元の記録を開きます
  3. 前の契約の印を確かめる … has_prior_tenancy の案件は、入居者の発言を外部へ伝えません
  4. 違っていたら印を付ける … 根拠の誤りや結び付けの誤りを、窓口のボタンで返します

1番目を先にするのは、「記録が無い」が最も誤解されやすいからです。 「何もしていない」と伝えたら、実は協力業者が作業を終えていた、ということが起きます。電話対応中は、その場で伝えるのを日付と作業の有無までにし、詳しい内容は折り返す運用にします。

Step10

例外に対処する

起きること対応
物件が特定できない物件マスタで複数に当たったら候補を返して選ばせる。0件なら「物件名を確認してください」と返す
部屋番号が書かれていない物件全体で探し、部屋ごとの件数を返す。経緯は書かない
改装で部屋番号が変わっている旧番号の対応表で新番号に寄せて探す。答えに旧番号の記録であることを書く
検索で案件が1件も出ない「記録なし」と返す。生成AIを呼ばない
完了報告の本文が空文字の無いスキャンのPDF。source_url だけを示し、開いて読むよう促す
案件に結び付かない記録が上位に出るunlinked の印を付けて別の枠に出す
記録どうしが食い違う両方を並べて出す。どちらが正しいかは判定しない
埋め込みモデルが応答しない言葉の検索だけで探し、そのことを答えに書く
取り込みが夜間に失敗した翌晩に回す。答えに最終取り込み日時を出す

4行目で生成AIを呼ばないのは、呼ぶと一般的な不具合の説明を書き始めるからです。 0件の答えはワークフローの側で決めます。

Step11

記録を残す

  • 質問の文と場面、担当者、日時
  • 呼び出し1が返した条件のJSONと、物件マスタで確定した物件コード
  • OpenSearch に送った問い合わせの全文(filter の中身を含む)
  • 返った案件の番号と、2回目で取り出した記録の番号の一覧
  • 呼び出し2の回答と引用(文ごとの event_id と cited_text)
  • 担当者が付けた印(根拠が関係なかった、結び付けが違っていた)
  • 記録が見つからなかった質問の一覧

3つ目で filter の中身を残すのは、見せてよい範囲を後から確かめるためです。 前の入居者の記録が出たという申し出があったとき、原因が範囲の組み方か取り込みの誤りかを切り分けられます。 最後の一覧は、記録する習慣が無い出来事を見つける材料になります。

04実装レベルの3段階

最小構成:1棟分の対応履歴を手でAIの画面に渡し、質問する / 1棟の中での経緯の読み取り
半自動化:上記+全物件の対応履歴と完了報告を OpenSearch に入れ、物件・部屋で絞ってハイブリッド検索する / 探す作業と、記録の一覧化
本格構成:上記+メールの取り込み、案件番号でのまとめ、場面による見せ分け、根拠付きの経緯を Teams に返す / 探す作業から経緯の整理まで

最小構成では棟をまたげません。確かめるための段階です。 半自動化で探す時間は縮みますが、同じ水漏れの6件の記録を担当者が並べ直す作業が残ります。 本格構成で読み分けも自動になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の段階で1か月運用すると、案件に結び付かない記録の数と、見つからなかった質問の傾向が先に分かります。取り込みの規則を直してから経緯を書かせるほうが、誤った経緯が出にくくなります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
12 名
月間件数
600 件
1件あたり現在時間
12 分
1件あたり導入後時間
4 分
現在  600件 × 12分 ÷ 60 = 120 時間/月
導入後 600件 × 4分 ÷ 60 = 40 時間/月
月間削減時間
80h
削減率
67%
年間削減時間
960h
年間金額換算(時間単価3,000円)
288万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 管理戸数が数千戸あり、修繕の受付・手配・完了報告と入居者からの連絡の記録が、賃貸管理システムの対応履歴、協力業者から届く完了報告のPDF、担当者のメールに分かれて残っている賃貸管理会社。担当者の異動や退職のたびに物件の経緯が分からなくなり、入居者から「前にも言った」と連絡が来てから過去の記録を探している場合。社宅の管理会社や、客室の設備の記録を持つ宿泊施設にも当てはまります。
向いていない
  1. 管理戸数が数百戸までで、担当者が物件の経緯をほぼ覚えている場合。対応履歴を記録する習慣がなく、検索しても探すものが残っていない場合。過去の記録の大半が紙の台帳だけにある場合。なお、修繕費を誰が負担するか、入居者の過失かどうかといった判断は、この構成では代替できません。

07最小構成で試す方法

  1. 受け持ちの多い棟を1つ選び、過去3年分の対応履歴を賃貸管理システムから書き出す
  2. その棟について、この1か月に実際に探した質問を20件、担当者から集める(うち数件は、答えが見つからなかったものを入れる)
  3. 対応履歴の書き出しを、手元の Claude の画面にファイルとして渡す
  4. 「この記録だけを根拠に、次の質問に答えてください。記録が無い部分は『記録なし』と書いてください。推測で補わないでください」と指示し、20件を1件ずつ聞く
  5. 答えを、担当者が当時たどり着いた経緯と突き合わせる

20件のうち、見つからなかった質問に何と答えるかを最優先で見ます。 「記録なし」と答えれば構成は有効です。それらしい経緯を書いたなら、指示の書き方を直します。

出てきた内容判断
当時の経緯と同じ案件にたどり着いた検索基盤と取り込みの設計に進む
同じ出来事の記録を別の案件として並べた案件の番号でまとめる必要がある。 本格構成の collapse が効く
対応履歴だけでは経緯がつながらない完了報告とメールの取り込みが先。 AIの問題ではない

3行目が出ることは珍しくありません。 そのときは、同じ棟の完了報告を文字にして足し、答えがどこまで変わるかを見てください。

08実装時につまずきやすいポイント

問題対策
同じ水漏れが何件も並ぶ案件の番号で collapse する。番号の項目は keyword 型にする
入居者の言葉で型番の記録が出ない言葉と意味のハイブリッド検索にする。型番は言葉の側で拾う
電話対応中に前の入居者の記録が出る見せてよい範囲を filter に入れ、場面の既定を最も狭いものにする
範囲の条件を生成AIに組ませてしまういまの契約は賃貸管理システムから引き、n8n が組む
完了報告が無いのに「完了」と書く予定と実施を分ける禁止を指示に書き、open_items を独立させる
0件のときに一般論を書く0件ならワークフローが「記録なし」と返し、生成AIを呼ばない
メールの引用で同じ文が何件も当たる取り込みで引用と署名を落とす
集計で案件の数が合わないcollapse の前の結果で集計される。件数は2回目の問い合わせで数える
呼び出しを1回にまとめて400が返るcitations と structured outputs は同じ要求で使えない。2回に分ける

上の3行が、この構成の失敗のほとんどです。 1行目と2行目は使われなくなる失敗、3行目は入居者との信頼を失う失敗です。どちらも検索基盤の設定で決まるので、生成AIを足す前に片付けます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 物件と部屋の設備の記録、協力業者とのやり取り、オーナーとの見積の説明と承認、そして入居者からの連絡の内容です。入居者の連絡には、騒音や近隣とのトラブル、家賃の相談のように、本人が他人に知られたくない内容が含まれます。

  1. 入居者に付く記録を、契約の区切りで分ける … 見せ分けを検索基盤の filter に置き、生成AIの指示だけに頼らないでください
  2. 連絡先を取り込まない … 取り込みの段階で落とします
  3. 答えを入居者やオーナーへ自動で送らない … 送る文は担当者が書きます
  4. 費用負担や過失の判断をさせない … 契約とオーナーとの取り決めに基づいて人が判断します
  5. 協力業者やオーナーに検索の窓口を開かない … 使うのは社内の担当者だけにします
  6. 退去後の記録をいつまで検索に残すかを決める … 部屋に付く設備の記録は長く必要ですが、入居者に付く記録は、退去後にどこまで持つかを自社の規程で決め、期限の来た記録は索引から消します

誤りが起きた場合のリスクは、経緯を誤って伝えることと、見せてはいけない記録を見せることの2つです。 前者は根拠を開いて確かめる運用で防ぎ、後者は検索の条件で防ぎます。後者は担当者の注意では防げないので、設計で守ります。

10まず何から始めるか

1週目:探した記録を集める

受け持ちの多い棟を1つ選び、この1か月に担当者が過去の記録を探した場面を20件集めます。何を探し、どこで見つかり、見つからなかったかを書いてもらいます。 見つからなかった場面が、この構成の目標です。

2週目:20件で試す

その棟の対応履歴を書き出し、手元の Claude の画面で20件を聞きます。見つからなかった質問に「記録なし」と答えるかを最優先で見ます。

3週目:場面と見せてよい範囲を決める

電話対応中、引き継ぎ、退去前確認の3つの場面で、入居者に付く記録をどこまで見せるかを、管理部の責任者と決めます。 あわせて、退去後の記録をいつまで検索に残すかを決めます。

4週目:対応履歴を検索基盤に入れる

OpenSearch のドメインを 3.1 以降で作り、全物件の対応履歴を取り込みます。この時点では完了報告とメールは入れず、物件・部屋で絞ったハイブリッド検索だけを試します。

2か月目: 完了報告とメールの取り込みと、案件への結び付けを足し、collapse でまとめます。結び付かない記録の数を毎週数えます。3か月目以降: 生成AIによる根拠付きの経緯と、場面による見せ分けを足し、1件12分が何分になったかを実測します。見つからなかった質問の一覧を見て、記録の付け方を直し始めた時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-30/最終更新:2026-10-01
確認した内容情報源確認日
Amazon OpenSearch Service が OpenSearch のクラスターを AWS 上で作り、運用し、拡張するマネージドサービスであること。対応する OpenSearch の版が 3.5、3.3、3.1、2.19 などであり、3.1 以降は標準サポートの終了が発表されていないこと。インスタンスの時間とストレージの量で課金されること。索引・文書・項目の単位のセキュリティを備えることAmazon OpenSearch Service Developer Guide: What is Amazon OpenSearch Service?2026-09-30
ハイブリッドクエリが複数のクエリのスコアを検索パイプラインで1つに統合し、クエリの句が最大5つであること。filter がすべての下位のクエリにかかり、単一のクエリの形で書くこと。from が0より大きいときは pagination_depth が必要なことOpenSearch Documentation: Hybrid query2026-09-30
ハイブリッド検索がキーワード検索と意味の検索を組み合わせ、検索時に動く検索パイプラインでスコアを統合すること。正規化プロセッサ(スコアに基づく)とスコアランカープロセッサ(順位に基づく RRF)があること。取り込みパイプラインの text_embedding プロセッサが field_map で指定した項目から埋め込みを作ることOpenSearch Documentation: Hybrid search2026-09-30
collapse が 3.1 で導入され、項目の値ごとに最もスコアの高い文書を返すこと。まとめる項目が keyword か数値の型であること。並べ替え・explain・ページ送りと併用できること。集計はまとめる前の結果に対して動くことOpenSearch Documentation: Collapsing hybrid query results2026-09-30
ハイブリッドクエリの並べ替えが 2.16 で導入され、並べ替えを指定すると文書のスコアが null になり、_score で並べた場合だけスコアが残ることOpenSearch Documentation: Using sorting with a hybrid query2026-09-30
citations を文書ごとに citations.enabled=true で有効にし、要求の中の全文書で有効か全文書で無効かのどちらかであること。title と context がモデルに渡るが引用の対象にならないこと。cited_text が出力トークンに数えられないこと。RAG の断片を plain text の文書として渡せること。citations と structured outputs を同じ要求で使うと400のエラーになることAnthropic Docs: Citations2026-09-30
structured outputs が output_config.format に json_schema の形でスキーマを指定して使い、スキーマに合う応答を返すことAnthropic Docs: Structured outputs2026-09-30

修繕費の負担や入居者の過失についての判断は、契約とオーナーとの取り決めに基づいて、担当者と責任者が行ってください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0400)についてのご相談はこちらから。

AI活用について相談する
目次