ほとんどのスモールビジネスは、パイプラインをスプレッドシートと後ろめたさで回している。それを直すのにSalesforceは要らない — 必要なのは、こぼれ落ちない連絡先、案件、フォローアップだ。私たちはまさにそれを、実在のドメイン上で、午後のうちに作った。そしてこのビルドは、退屈なほど再現可能だ。
唯一のルール:容赦ないスコープ管理
CRMは「あともう1つだけフィールドを」と追加した瞬間から腐り始める。コツのすべては、それがやらないことを決めることにある。私たちのCRMは3つの名詞だけを扱い、それ以外は何もしない。
- 連絡先(Contacts) — 名前、会社、メール、電話、担当者。
- 案件(Deals) — タイトル、金額、ステージ、紐づく連絡先。
- 活動(Activities) — メモ、または期日付きのフォローアップ。
カスタムフィールドなし、自動化なし、レポートなし。後でそれらが必要になったら、自分で分かる。
スタック
Labのすべてのビルドと同じ背骨だ。データベース、認証、行レベルセキュリティには Supabase。その上にAIビルダーがUIを足場として組み立てる。テーブルは3つ、deals → contacts と activities → deals の外部キー、そして owner カラムを持たせて、行レベルセキュリティがすべてのクエリをサインイン中のユーザー(またはそのチーム)にスコープできるようにする。
ビルド、プロンプトごとに
- 足場づくり — 「CRM。メールでのサインイン。連絡先、案件、活動。」数分で認証付きの動くアプリが手に入る。
- パイプライン — 「案件にはステージがある:Lead → Contacted → Proposal → Won/Lost。kanbanボードとして表示し、ドラッグでステージを変更できるように。」
- フォローアップ — 「活動には期日がある。今日が期日のものをすべてホーム画面に表示して。」これこそ、実際に元を取ってくれる機能だ。
- 権限 — 「行レベルセキュリティを追加して、ユーザーが自分の連絡先、案件、活動だけを見られるように。」
- インポート — 「連絡先のCSVを貼り付けられるようにして。」
AIが間違える部分
毎回、2つある。1つ目、AIは喜んでUIを更新するkanbanを生成するが、ステージ変更の永続化を忘れる — カードをドラッグして、リロードすると元に戻ってしまう。書き込みを明示的に要求すること。2つ目、要求しない限りAIはほぼ決して行レベルセキュリティを追加せず、デフォルトではすべてのユーザーが全員のデータを見られてしまう。顧客の連絡先を保持するCRMにとって、これは致命的だ — RLSを後回しにせず、プロンプトに含めること。
出荷する
プレビューURL上のCRMは、チームが使うCRMではない。自分のドメインに向けよう — 10分の作業だ — そして「今日が期日」ビューを全員のホーム画面に置こう。
結論
勝ち筋はソフトウェアではない。スコープだ。3つの名詞、実際に効く権限、今日が期日ビュー、自分のドメイン上で。これを今日の午後に作れば、もうスプレッドシートには勝っている — しかも、1年がかりで機能をオフにし続けることになるプラットフォームに登録せずに。