先日、住宅販売事業者・不動産仲介会社向けに、中古住宅の概算査定をチャット形式で行うAIシステムをリリースしました。
このシステム自体の紹介は[プレスリリース]「中古住宅AI概算査定チャットボット」のご案内に譲るとして、今日はその裏側で、私たちが何にこだわり、何と格闘してきたかを書いてみようと思います。技術的な詳細にはあまり踏み込みませんが、「AIをちゃんと仕事道具として使う」ということが、想像以上に地道な作業の積み重ねだった、という話です。

 

開発のきっかけ

そもそもの発端は、ごく個人的な興味からでした。
自分が今住んでいる家が、今売ったらどのくらいの価格になるんだろう。ふと気になって調べてみたのが、すべての始まりです。
調べながら、ふと思いました。「これ、AIを使えば自分でも作れるんじゃないか」と。
同時に、こうも思いました。自分と同じように「とりあえずどれくらいの価値があるのか知りたい」と考えている人は、きっと他にもたくさんいるはずだ、と。

ただ、そういう人たちの多くは、まだ不動産会社の担当者に相談するような段階ではないはずです。「売る」と決めたわけでもないのに、いきなり営業担当者に連絡を取るのは、なんとなく気が引ける。かといって、無料の一括査定サイトに個人情報を登録してまで知りたいわけでもない。

一方、不動産会社の側から見ても、事情は同じだろうと思いました。「本当に売却してくれるかどうか分からない」「まだ顧客になるかも分からない」という段階の問い合わせに、担当者がその都度時間を割いて調査し、査定額を出すのは、決して割に合う仕事ではありません。

つまり、ユーザーにとっても、事業者にとっても、「まだ相談するほどではない、でも気軽に知りたい」という段階を埋める窓口が、どちらの側にも用意されていなかったのです。
だったら、試しに自分で作ってみよう。そう思い立ったのが、このプロジェクトの出発点でした。

 

数時間で出来た(と思った)

作り始めてから、実質数時間ほどで、それらしく動くものができました(さすがClaude Codeだと思いました)。
物件情報を入力すると、AIが会話しながら査定額を出してくれる。思っていたよりずっと早く形になったので、正直、拍子抜けするくらいでした。

試しに、自分が知っているエリアの物件で査定させてみると、実勢価格とほぼ近い金額が返ってきました。もう一件試しても、また近い。「これは筋がいいぞ」と、その時は本気で思いました。
もうこれで十分じゃないか。あとは細部を整えるだけで、リリースできるんじゃないか。そんな気持ちになりかけていました。
ただ、念のため、もう数件だけ試しておこうと思い立ちました。ここまでの数件がたまたま良かっただけかもしれない、という、ごく軽い確認のつもりでした。

ところが、続けて試した物件で、査定額が立て続けに的外れになりました。実勢価格から2割近くズレるものが、連続して出てきたのです。
最初は「たまたま相性の悪い物件が続いただけだろう」と思っていました。でも、原因を一つずつ追いかけていくと、そうではないことが分かってきました。太陽光発電やウッドデッキがあっても、その価値が査定額にまったく反映されていない。同じエリアのはずなのに、参考にしている土地の坪単価が、物件によって2倍近くブレている。

最初に見えていた「良い結果」は、精度が高かったからではなく、たまたま条件の良い物件ばかりを試していただけだったのです。条件が少し複雑になった途端、査定の仕組みそのものが、簡単に破綻することが分かりました。
ここから、本当の意味での戦いが始まりました。

 

「会話」と「計算」を、はっきり分ける

見つかった不具合を、一つずつ直していきました。でも、直したはずの場所から、また少し形を変えた不具合が顔を出す。そんなことを何度か繰り返した末に、あることに気づきました。

これは、個別の不具合じゃない。

「会話をしながら、その場で数値計算までAIにやらせる」という設計そのものが、そもそも危ういのではないか。同じ物件情報を入れても、聞くたびに微妙に違う金額が返ってくる。なぜその金額になったのか、AI自身にもう一度聞いても、後付けの説明しか返ってこない。これでは、実際にお客様に提示する査定額として、責任を持てません。

そこで私たちは、思い切った設計変更をしました。
「会話」と「計算」を、はっきり分けることです。
ユーザーとの自然なやり取りは、これまで通り生成AIが担当します。でも、査定額そのものの計算は、決まった手順で必ず同じ答えを出す、プログラムに任せることにしたのです。

 

直したはずなのに、また新しいズレが見つかる

役割を分けたことで、精度は大きく改善しました。でも、本当の意味での試練は、ここからでした。
実際の物件情報でテストを重ねるたびに、新しい「あれ、なんかおかしいな」に出会うことになったのです。

ある日は、AIが会話の中で日付を勘違いしていることに気づきました。「今年の5月に完了したリフォームです」というお客様の回答を、AIは「これから完了予定のリフォーム」と読み違えていたのです。理由を掘り下げると、AI自身が「今日が何年何月か」を正確に把握していなかったことが分かりました。人間なら当たり前に持っている「今日の感覚」を、AIには改めて教えてあげる必要があったのです。

またある日は、参考にしていたデータファイルの先頭に、目には見えない特殊な文字が紛れ込んでいることに気づきました。この見えない1文字のせいで、「この市区町村のデータだけを見る」という絞り込みが、実はずっと機能していなかったことが判明しました。

さらに、人の手で入力されたデータの中には、「駅名」と「駅からの所要時間」が1つの欄にまとめて書かれてしまっている行が、全体の6割以上も紛れていることも分かりました。機械的に処理する以上、こうした人間らしい入力の癖ひとつひとつが、計算結果を静かに歪ませていたのです(この「表現のゆらぎ」やデータベースへの情報の格納の仕方は結構問題で、例えば郵便番号や携帯電話のハイフォンありなし、ここにあるような住所の表記の差やひとつのセルに入れる情報量など、厳密な運用ルールを設けてデータベースを運用しないといけないんですけど、実際に現場はそうはいかないし、お客さんはそこまできっちり入力してくれなかったり、入力ミスもあります)。

 

たった1件のデータで、査定額が破綻した夜

一番印象に残っているのは、ある郊外エリアの物件をテストしたときのことです。査定レンジが、実勢価格とかけ離れた、あり得ない幅で返ってきました。
原因を追いかけると、そのエリアの参考データが、たった1件しかなかったことが分かりました。しかもその1件が、たまたま相場より高めの、特殊な物件だったのです。統計というものは、母数が少なすぎると、簡単に嘘をつきます。

これをきっかけに、私たちは国土交通省が公開している、実際の不動産取引データを取り込むことにしました。希望価格ではなく、実際に取引が成立した価格です。これにより、データの薄いエリアでも、ある程度の説得力を持った査定ができるようになりました(もちろん、公的データを利用する際のルールに則り、出典もきちんと明記しています)。

 

最後の落とし穴は、「自分自身」でしか見つけられなかった

システムが十分に安定してきた頃、私たちは最後のテストとして、このチャットボットを、外部の実際のWebサイトに埋め込んでみることにしました。
その「外部サイト」というのが、冒頭に貼った[プレスリリース]「中古住宅AI概算査定チャットボット」のご案内です。

驚いたことに、社内でのテストでは何の問題もなかったのに、実際に外部サイトに埋め込んだ途端、エラーが出るようになりました。原因を突き止めると、「このアクセスは、正しい埋め込み先から来ているか」を確認する仕組みが、自分自身のサイトでしか検証されていなかったために、他のドメインでは正しく動かない設計になっていたことが分かりました。

これは、身内でのテストだけでは絶対に見つからなかったバグです。「自分たちのサイト」という、一番身近で、一番手軽な「本物のお客様」役を用意してみたからこそ、発見できました。

 

おわりに

こうして振り返ると、この開発は「AIに賢く計算させる」話ではなく、「AIに、正直な仕事のさせ方を教え続ける」話だったように思います。
見えない文字、人の入力の癖、データの薄さ、そして自分たちの思い込み。技術的な派手さはなくても、こうした地道な発見と修正の積み重ねこそが、実際に使ってもらえるツールを作る上で、一番大事な作業だったと感じています。
ホント、AIの言う事を盲信したらダメですね。必ず自分の目でもチェックして、検証して、常に、「これは正しいのか?」という疑いの目で見て検証する。何なら、別のAIにかけてみて検証、チェックすることが大事ですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

D.I.O
WEB Director D.I.O Assistant
Digital Intelligence Organism