AI に補助金マッチングを作らせてみた — MatchCard が結晶化、「会社×制度」が entity-agnostic を証明した(やってみた #173)
/subsidy-matching375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に補助金マッチングを作らせてみた — MatchCard が結晶化、「会社×制度」が entity-agnostic を証明した(やってみた #173)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。MatchCard 狙いの3回目(金融)——補助金・助成金マッチング(自社プロフィール ⟷ 補助金制度・適合度・要件適合)。中小企業向け補助金 SaaS。
結果 — 3.5/5、二者間ペアリングが最後まで穴
tsc 緑・モバイル/デスクトップ両対応。cold AI(群青を一度も触っていない設定):
強い KPI/ランキング/キュー/identity 面を実部品で速く組めた。だが画面の核(自社×制度の二者間マッチ詳細)に primitive が全く無く、索引が指す唯一の物(RelationshipRow)が能動的に間違った道具。 この穴は、これが推薦コンソールである理由そのものなので、コストが大きい。
観測の核 — MatchCard が3回目で結晶化+「会社×制度」が entity-agnostic を証明
自社 × 補助金制度のマッチ詳細(2つを左右に並べ+適合度+要件 factor)——3回目の手組み(MatchDetail.tsx・~250行)だった:
cold AI「MatchCard/PairingPanel/entity-agnostic な二者間 primitive が無い。RelationshipRow は欲しい形**(left+connector+relationshipLabel+right)だが from/to が PersonCellProps 固定で両側に PersonCell をレンダー=people-shaped で会社×制度 にパラメタライズ不能・型も通らない・score/factor 領域も無し。CompanyCell も無く PersonCell(人)だけ。追加すべきは entity-agnostic な MatchCard+CompanyCell=この画面は ~250行手組みが composition に落ち 3.5→4.5+ に上がる。**」
MatchCard は #160 求貨求車(荷物×空車)・#172 M&A(売り手×買い手)・#173 補助金(自社×制度) で3回目=3-confirm。その場で build した——しかも**#173 が決定打**だった:
- #160/#172 は「同種×同種」(荷物×空車、会社×会社)だったが、#173 は「会社×制度」=異なる種類のエンティティ。これが MatchCard が entity-agnostic(people でも company でもなく任意のエンティティ)である必要を証明した。
- build した部品(2つ・連結ペア):
MatchCard=left+right(任意の identity ノード・異なる種類でも可)+中央score+factors[](要件 breakdown)+actions。RelationshipRow(2つの PersonCell 固定・score/factor 無し)とは別物。CompanyCell=組織版 PersonCell(四角ロゴ+名前+業種/所在地)。会社/制度/取引先 を人のアバター/presence に強制しない。
- 索引も是正=マッチ/ペアリング→MatchCard、組織 identity→CompanyCell、RelationshipRow は人専用と明記。
- ブラウザで 協栄精密工業(会社)×ものづくり補助金(制度) の MatchCard 内に CompanyCell が2つ・score 92%・要件 factor を確認=PR#430(#419 クローズ)。結晶化 25・26個目。
学び — 「3つ目の sighting」が仕様を最終確定させる
MatchCard の3つの sighting は、毎回 spec を鋭くした:
- #160 求貨求車(荷物×空車・同種)=「二者間ペアリングが要る」(穴の発見)。
- #172 M&A(会社×会社・同種)=「people 固定の RelationshipRow は誤り・CompanyCell も要る」(people でないと判明)。
- #173 補助金(会社×制度・異種)=「任意の異種エンティティ=entity-agnostic」(最終仕様の確定)。
もし #173 が無ければ、MatchCard を「CompanyCell × CompanyCell 固定」で作ってしまったかもしれない。会社×制度 という異種ペアが、left/right を CompanyCellProps に型付けせず** generic な ReactNode にする決断を強制した**。これは #172 RelationshipRow の逆の教訓=「型を固く付けすぎると(PersonCellProps)別の異種ペアで詰む」。3-confirm の3回目は、build の数合わせでなく仕様を最終確定させる検証だ。
→ そして CompanyCell も build した=PersonCell(人)↔CompanyCell(組織)の対。「人の部品があるなら組織の部品も要る」(#150「表示があるなら入力も要る」の組織版)。
拾った点(陽性)
- ✅ Leaderboard(適合度ランキング)/Meter(適合度 higher-is-better+target)/StatGroup/ActionQueue/FilterChips/MetadataList 全て native=dashboard の8割は速く組めた。
今回 src build = MatchCard + CompanyCell(#419→PR#430)。3.5/5・二者間ペアリング結晶化・entity-agnostic 確定・索引是正。
📊 結晶化スコアボード(build 済 26個)
…DocumentRow / MatchCard / CompanyCell(このセッションで13部品 build/拡張) 進行中:在庫ほぼ枯渇(SimpleDialog 1/3 のみ)
📋 進捗 — 在庫を掘り切った
- 運輸5モード完走 ✅/在庫深掘りで goodWhen/OriginDestination/DocumentRow/MatchCard/CompanyCell を結晶化
- 3-confirm 待ちの在庫はほぼ枯渇(残 SimpleDialog 1/3)。新業種で床の頑健性を試す段階へ。
次回予告(やってみた #174)
- 新業種へ(運輸/会計/金融以外=エネルギー/通信/建設/医療/官公庁 等=新ドメインで床がどう保つか・新しい穴が出るか)。※KeEem に確認。
試す
- gunjo.jp / マッチカード MatchCard(新)/ 企業セル CompanyCell(新)/ ランキング Leaderboard / npm
@gunjo/ui/ GitHub / 前回まで #1〜#172 - GunjoUI by UIXHERO
MatchCard が結晶化した——「会社×制度」という異種ペアが entity-agnostic を証明した。3-confirm の3回目は数合わせでなく、仕様を最終確定させる検証だ。
<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー -->
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import している部品です。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。