バックエンドテスト
判定ロジック・スロット状態・パック生成をカバーするテスト駆動スイート
Loading project...
設計者・実装者・運用者(単独)
1人(実装・敵対的レビューはAIエージェントチーム)
9日間のハッカソンスプリント:2026-09-18に事業検証着手 → 09-26に提出
第5回 Agentic AI Hackathon with Google Cloud への提出物です。自宅が水濡れ被害に遭った直後、掃除や修繕で証拠が失われ、保険請求が減額・否認される — その「証拠の滅失」を防ぐWebアプリです。アップロードのたびにGemini 2.5 Flashが査定実務の8つの証拠スロット(部屋全体/被害中景/被害接写/水の経路候補/二次被害/日付根拠/対比境界/スケール目安)を全件再判定し、無関係な写真は充足させません。出力は写真・チェックリスト・manifest.jsonを同梱した検査可能なZIPパック。9日間のスプリントで設計・実装・審査・提出まで完走し、water-damage-claim-pack.web.app で稼働中です。
水濡れ被害の直後、被災者は片付けや修理を急ぎ、保険請求の根拠になる証拠を自ら失わせます。査定実務では複数の構図 — 部屋全体・被害の中景と接写・水の浸入経路・濡れた部位と健全部位の境界・規模が分かるスケール対象 — が求められますが、多くの人は被害箇所の接写だけを撮って現場を復旧してしまいます。後から不足を指摘されても現場は既に元通りで、再撮影は不可能。この「証拠の滅失」は請求の減額・否認の一因になりえます。原因は単純で、何を撮るべきかを、遅すぎるタイミングまで誰も教えないことです。
写真を1枚追加するたびに、スロット全体を再判定するエージェントを作りました。Gemini 2.5 Flashが8つの証拠スロットすべてを毎回評価し直すため、どのスロットも充足しない写真は何も変えません。不足スロットは「次に撮るべき1枚」として、写真上の矢印オーバーレイと1行の指示文で具体的に示します。AIが写っているものを検出できなかったスロットは、利用者本人の申告チェックで充足相当(本人申告による充足扱い)にできます。パック上では「本人の申告でありAIが確認したものではない」と構造的に分離して記載し、混ぜません。セットが揃うと、写真・キャプション・チェックリスト・事故状況報告書の素材・各判定の根拠を持つmanifest.jsonを同梱した、検査可能なZIPを生成します。
水濡れ被害の直後、被災者は片付けや修理を急ぎ、保険請求の根拠になる証拠を自ら失わせます。査定実務では複数の構図 — 部屋全体・被害の中景と接写・水の浸入経路・濡れた部位と健全部位の境界・規模が分かるスケール対象 — が求められますが、多くの人は被害箇所の接写だけを撮って現場を復旧してしまいます。後から不足を指摘されても現場は既に元通りで、再撮影は不可能。この「証拠の滅失」は請求の減額・否認の一因になりえます。原因は単純で、何を撮るべきかを、遅すぎるタイミングまで誰も教えないことです。
写真を1枚追加するたびに、スロット全体を再判定するエージェントを作りました。Gemini 2.5 Flashが8つの証拠スロットすべてを毎回評価し直すため、どのスロットも充足しない写真は何も変えません。不足スロットは「次に撮るべき1枚」として、写真上の矢印オーバーレイと1行の指示文で具体的に示します。AIが写っているものを検出できなかったスロットは、利用者本人の申告チェックで充足相当(本人申告による充足扱い)にできます。パック上では「本人の申告でありAIが確認したものではない」と構造的に分離して記載し、混ぜません。セットが揃うと、写真・キャプション・チェックリスト・事故状況報告書の素材・各判定の根拠を持つmanifest.jsonを同梱した、検査可能なZIPを生成します。
誠実さを免責文ではなく構造に埋め込みます。この製品は保険金の支払いや約款の解釈を判断しません — 「否認を防ぐ」ことを目指さず、「証拠の滅失を防ぎ、証拠集めを完結させる」ことに絞った製品です。AIが確認した証拠と本人申告の証拠は別のレコード型なので、レビュアーは常にどちらかを区別できます。スロット定義は検出のしやすさで選ばず、査定実務から来ています。AIが確認できないスロットはチェックリストから落とさず、「未確認」と明示して人間に渡します。ビルド記録も同じ方針で、提出リポジトリには事業検証の敵対的審査(○1/△4/×2の条件付きGo判定)から要件-実装のトレーサビリティ(要件と実装の対応記録)、内部セッション記録まで全工程の記録が残っており、審査者が検査できます。
写真を1枚追加するたび、Gemini 2.5 Flashが8スロットすべてをbbox(検出領域を示す矩形)根拠つきで評価し直します。どのスロットにも合わない写真は何も充足しない — 種類の違う写真が誤ってチェックを満たすことはありません。
不足スロットは「濡れている部分と乾いている部分が同じ写真に入るように撮る」といった具体的な指示 — 既存写真への矢印オーバーレイと1行の指示文 — として表示し、現場が片付く前に何を撮るべきかをその場で伝え続けます。
AIが検出できないスロットは、利用者がチェックで「本人申告」として充足相当にできますが、パック上ではAI確認とは別の記録として明示されます。その区別は生成されるZIPにもそのまま引き継がれ、曖昧にされません。
出力は素のZIPです。キャプション付き写真、スロット別チェックリスト、事故状況報告書の素材、利用者が添付した参考書類、そして各判定の根拠を持つmanifest.json — 査定者(や懐疑的な読者)が、各項目がなぜ入っているかを自分で検証できます。
作る前に検証しました。企画はコードを書く前に事業設計の敵対的審査を通り(指摘○1/△4/×2の条件付きGo判定)、3段階の仕様(要件→設計→タスク)でスコープを確定。実装はAIエージェントチームで分担し — builderサブエージェントがコードを書き、別個体の敵対的レビュアーが攻め(P0/P1指摘はマージ前に修正)、要件と実装の対応はトレーサビリティ文書に写します。デモと提出物も同じゲートを通過。2026-09-26に提出し、リポジトリには市場概算からセッションログまで全行程の記録が残っています。
判定ロジック・スロット状態・パック生成をカバーするテスト駆動スイート
査定実務の構図に対応。無関係な写真はどのスロットも充足しない
実装UI上の目安:写真8枚・全3ステップ。途中で止まっても続きを足せる
事業検証・仕様・実装・レビュー・デモ・提出までの全工程

入口 — 掃除・修理の前に撮るよう警告。被害前の家向けのベースライン記録モードも併設