#173スコア 3.5/5金融

AI に補助金マッチングを作らせてみた — MatchCard がコンポーネント化、「会社×制度」が対象を問わないことを証明した(やってみた #173)

ルート: /subsidy-matching
デスクトップ表示
モバイル表示

375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。

解説記事

AI に補助金マッチングを作らせてみた — MatchCard がコンポーネント化、「会社×制度」が対象を問わないことを証明した(やってみた #173)

⁠やってみたシリーズ⁠: 自作のデザインシステム @gunjo/ui群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。⁠MatchCard 狙いの3回目(金融)⁠——⁠補助金・助成金マッチング⁠(自社プロフィール ⟷ 補助金制度・適合度・要件適合)。中小企業向け補助金 SaaS。

結果 — 3.5/5、二者間ペアリングが最後まで欠落

tsc 緑・モバイル/デスクトップ両対応。予備知識ゼロの AI(群青を一度も触っていない設定):

⁠強い KPI/ランキング/キュー/識別の面を実コンポーネントで速く組めた。だが画面の核(自社×制度の二者間マッチ詳細)にコンポーネントが全く無く、索引が指す唯一の物(RelationshipRow)が能動的に間違った道具。⁠ この欠落は、これが推薦コンソールである理由そのものなので、コストが大きい。

観測の核 — MatchCard が3回目でコンポーネント化+「会社×制度」が対象を問わないことを証明

自社 × 補助金制度のマッチ詳細(2つを左右に並べ+適合度+要件の要因)——3回目の手組み(MatchDetail.tsx・~250行)だった:

予備知識ゼロの AI「⁠MatchCard/PairingPanel/対象を問わない二者間のコンポーネントが無い。RelationshipRow は欲しい⁠⁠(left+つなぎ+relationshipLabel+right)だが from/to が PersonCellProps 固定⁠で両側に PersonCell を描画=人物前提で 会社×制度 にパラメータ化できない・⁠型も通らない⁠・スコア/要因の領域も無し。CompanyCell も無く PersonCell(人)だけ。追加すべきは対象を問わない MatchCard+CompanyCell=この画面は ~250行手組みが組み立てに落ち 3.5→4.5+ に上がる。

⁠MatchCard は #160 求貨求車(荷物×空車)・#172 M&A(売り手×買い手)・#173 補助金(自社×制度) で3回目=3回確認。その場で作った⁠——しかも⁠#173 が決定打⁠だった:

  • #160/#172 は「⁠同種×同種⁠」(荷物×空車、会社×会社)だったが、⁠#173 は「会社×制度」=異なる種類の対象⁠。これが MatchCard が ⁠対象を問わない(人でも会社でもなく任意の対象)⁠である必要を⁠証明⁠した。
  • ⁠作ったコンポーネント(2つ・連結ペア)⁠
    • MatchCardleftright(任意の識別ノード・⁠異なる種類でも可⁠)+中央 scorefactors[](要件の内訳)+actions。RelationshipRow(2つの PersonCell 固定・スコア/要因 無し)とは別物。
    • CompanyCell=組織版 PersonCell(⁠四角ロゴ⁠+名前+業種/所在地)。会社/制度/取引先 を人のアバター/在席に強制しない。
  • ⁠索引も是正⁠=マッチ/ペアリング→MatchCard、組織の識別→CompanyCell、RelationshipRow は人専用と明記。
  • ブラウザで 協栄精密工業(会社)×ものづくり補助金(制度) の MatchCard 内に ⁠CompanyCell が2つ⁠・スコア 92%・要件の要因 を確認=PR#430(#419 クローズ)。⁠コンポーネント化 25・26個目。⁠

学び — 「3つ目の目撃」が仕様を最終確定させる

MatchCard の3つの目撃は、⁠毎回 仕様を鋭くした⁠

  • #160 求貨求車(荷物×空車・同種)=「二者間ペアリングが要る」(欠落の発見)。
  • #172 M&A(会社×会社・同種)=「人物固定の RelationshipRow は誤り・CompanyCell も要る」(人物でないと判明)。
  • #173 補助金(会社×制度・⁠異種⁠)=「⁠任意の異なる種類の対象⁠=対象を問わない」(最終仕様の確定)。

もし #173 が無ければ、MatchCard を「CompanyCell × CompanyCell 固定」で作ってしまったかもしれない。⁠会社×制度 という異種ペアが、left/rightCompanyCellProps に⁠型付けせず** 汎用の ReactNode にする決断を強制した⁠。これは #172 RelationshipRow の逆の教訓=「型を固く付けすぎると(PersonCellProps)別の異種ペアで詰む」。3回確認の3回目は、作る数合わせでなく⁠仕様を最終確定させる検証**だ。

→ そして CompanyCell も作った=PersonCell(人)↔CompanyCell(組織)の対。⁠「人のコンポーネントがあるなら組織のコンポーネントも要る」⁠(#150「表示があるなら入力も要る」の組織版)。

拾った点(良好)

  • ✅ Leaderboard(適合度ランキング)/Meter(適合度 higher-is-better+target)/StatGroup/ActionQueue/FilterChips/MetadataList 全て そのまま合う=ダッシュボードの8割は速く組めた。

⁠今回 src で作ったもの = MatchCard + CompanyCell(#419→PR#430)⁠。3.5/5・二者間ペアリングのコンポーネント化・対象を問わないことの確定・索引是正。

📊 コンポーネント化スコアボード(作成済 ⁠26個⁠

…DocumentRow / ⁠MatchCard / CompanyCell⁠(このセッションで13コンポーネントを作成/拡張) 進行中:ストックほぼ枯渇(SimpleDialog 1/3 のみ)

📋 進捗 — ストックを掘り切った

  • 運輸5モード完走 ✅/ストック深掘りで goodWhen/OriginDestination/DocumentRow/MatchCard/CompanyCell をコンポーネント化
  • ⁠3回確認 待ちのストックはほぼ枯渇⁠(残 SimpleDialog 1/3)。新業種で土台の頑健性を試す段階へ。

次回予告(やってみた #174)

  • ⁠新業種へ⁠(運輸/会計/金融以外=エネルギー/通信/建設/医療/官公庁 等=新しい領域で土台がどう保つか・新しい欠落が出るか)。※次回までに決める。

試す

MatchCard がコンポーネント化した——「会社×制度」という異種ペアが、対象を問わないことを証明した。3回確認の3回目は数合わせでなく、仕様を最終確定させる検証だ。

この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。

使用した @gunjo/ui コンポーネント

この画面のソースが直接 import しているコンポーネントです。

cold AI が組み上げた実コード

ファイル名をクリックでソースを展開できます。

業界別「AI指示書パック」、先行登録を受付中です。