冷メール 440 通送って、本物の返信は 0 だった。
3 週間かけて、地方の税理士事務所、クリニック、建設会社、EC、不動産業者、計 10 業種に「うちの AI 実装サービス、どうですか」と送り続けた結果がこれ。
俺は 6 SaaS を本番に乗せて売上ゼロの個人開発者。AI で実装は 95% 自動化できてる。でも「売る」が全然できてない。今回も同じ轍。
ただ、3 週間で学んだことはあった。最大の学びは、ICP(誰に売るか)が完全に間違ってたこと。地方店舗系は「AI 困ってる」客じゃなかった。
この note では、その 3 週間の全工程と、ICP を引っ繰り返した経緯を書く。あと、その途中で AI に冷メール文面書かせたら嘘が量産された話と、それを止める hook を作った話も。
長くなるので心して読んでくれ。
▼ 第 1 章:旧 ICP(地方店舗系)が死んでた 4 つの理由
最初に、俺が選んだ ICP は「地方の中小企業」だった。10 業種:
- 税理士事務所
- 美容クリニック
- 整骨院
- 建設会社
- EC ショップ
- 不動産仲介業者
- 個人事業主の士業
- 飲食店経営会社
- 介護事業者
- 工務店
理由は単純で、「AI まだ使ってない側に AI 売り込んだら大きな市場」と思ったから。米国の AI 導入率 88% に対して日本は 42.7%(業界調査)。残り 57.3% にリーチすればいいやろと。
これが 4 つの理由で破綻した。
理由 1:「使ってない側」は AI に困ってない
冷メールの 1 行目で「米国 88% 導入、日本 42.7%、貴社は?」と煽っても、相手は「いや、別に困ってないけど」が普通。
AI を「使ってない」と「困ってる」は全く別の状態。地方の税理士事務所は、AI なくて十分回ってる。困ってないところに「AI どうですか」は、健康な人にサプリ売るのと同じ。
ICP を選ぶ時に俺がやらかしたのは、「市場サイズ(57.3%)」だけ見て「pain(実際に困ってる)」を見てなかったこと。pain がない market は market じゃない。
理由 2:info@ ゲートキーパー問題
地方店舗系に冷メールを送る時、抽出できるのは大抵 info@xxx.co.jp だけ。HP に書いてあるのは「お問い合わせ先」一択。
info@ は経営者の inbox じゃない。事務員 / 営業窓口の人が捌くインボックス。AI 導入みたいな経営判断のメールは、そこで止まる。
決裁者が読むメアドは別にある(recruit@ 代表 IT 室長 等)が、地方の中小には専門メアドはほぼない。社長の個人メアドを見つける手段もない。
つまり、ICP の選び方に「届くメアドがあるか」を入れてなかった。市場として届かないなら、市場じゃない。
理由 3:業種混在で文面が機能しない
10 業種に同じ件名・同じ本文を送ってた。「AI 導入率 88% / 42.7%」のようなテンプレ文面で、税理士にも建設にも EC にも。
業種ごとに「使えそうな AI」が全然違う。税理士なら自動仕訳、建設なら工程管理 AI、EC なら接客 chatbot、整骨院なら予約受付。これを 1 文で書けない。
業種絞り込みなしで「全業種に AI」って言ったら、全業種から「で、何ができるの?」になる。具体性ゼロのメールは即捨てられる。
理由 4:bounce 率 8% でドメインが死にかけてた
地方の中小企業の HP は古い。HP に書いてあるメアドが 5 年前で、もう使われてないことが普通にある。これが bounce する。
bounce 率 8% は B2B 健全水準(< 3%)の倍以上。Instantly 経由で bounce が積み上がると、送信ドメインの reputation が落ちる。落ちると、まともなメアドにもスパム判定で届かない。
3 週間目には、open 率は 86% と一見良さそうだったけど、これは Apple Mail Privacy Protection が tracking pixel を全部 prefetch してる嘘の数字。実際の人間 read 率は 30-40% 程度。reply 率は 0%。
数字をまとめる:
送信数:440 通
bounce:~35 通(8%)
"open":~378 通(86%、Apple Mail で水増し)
実 read(推定):~130 通(30%)
真の reply:0
この数字を見て、俺は「ICP 自体が破綻してる」と気づくのに 3 週間かかった。
▼ 第 2 章:ICP pivot の決断(5/9)
5/9 朝、ChatGPT に reply 0 の状況を相談したら、論破された。
「440 通送って 0 返信なら、ICP が間違ってる確率が一番高い。地方店舗系は AI を『使ってない』だけで『困ってない』。困ってる側を狙え。」
「困ってる側」って何やねん、って聞き返したら、こう返ってきた。
「自己申告で『AI 人材足りない』って言ってる側を狙え。それ、求人に書いてある」
これが転機だった。
求人を出してる時点で、その会社は「AI 人材を内製で確保できない」を自己申告してる。Wantedly や PR Times を見ると、「AI エンジニア募集」「機械学習エンジニア募集」「LLM 実装エンジニア募集」が大量にある。
これは Forge(俺がやってる業務委託エンジニア紹介サービス)のオファーとピタリ合う。「貴社で募集してる職種、Forge の業務委託エンジニアでも対応できますよ。月額のフィーは 30%、合わなければ 0 円」。
ICP の定義が変わった瞬間:
旧 ICP:AI 使ってない地方店舗(広いが pain ない)
↓
新 ICP:AI エンジニア募集中の企業(狭いが pain 顕在化)
新 ICP に切り替える決断を、その日の昼に固めた。
▼ 第 3 章:新 ICP の見つけ方(playbook)
新 ICP「AI エンジニア募集中の企業」を見つける具体的な手段を 3 つ。
Source 1:Wantedly(無料 API、最速)
Wantedly は気軽に応募できる SNS 型求人サイト。検索結果ページが SPA で HTML scrape は効かないけど、内部 API(/api/v1/projects?type=engineering&q=AI...&page=N)は健在。
const res = await fetch(
`https://www.wantedly.com/api/v1/projects?type=engineering&q=AI&page=${page}`,
{ headers: { 'X-Requested-With': 'XMLHttpRequest' } }
);
const data = await res.json();
返ってくる JSON には:
- 募集タイトル
- 会社名
- 会社 URL
- 場所
- 公開日
会社 URL が分かれば、そこから contact ページや採用ページを scrape して、recruit@ careers@ hr@ info@ のメアドを取りに行ける。
Source 2:PR Times(AI 導入プレスリリース系企業)
PR Times は企業が自社プレスリリースを出す場所。/topics/keywords/AI%E5%B0%8E%E5%85%A5(AI 導入トピック)から、AI 関連プレスリリースを出した企業 ID を抜ける。
各プレスリリースのページから、外部リンク(公式 HP)を取って、そこから採用ページに飛んで、メアド抽出。
Source 3:GitHub(AI SDK 使ってる org)
GitHub Code Search で import anthropic @anthropic-ai/sdk import openai で検索。出てきた repo の owner profile を見て、location が日本なら、その org は AI 開発してる。
gh api -X GET search/code -f q='import anthropic language:python' -f per_page=10
org の HP が分かれば、メアド抽出。
メアド優先順位の鉄則
抽出したメアドの中で、優先順位が決まってる:
recruit@ > hr@ > careers@ > saiyou@ > info@ > contact@ > 他
recruit@ が一番、決裁者寄り。次が hr@。info@ は最後の手段。
俺が書いた priorityEmail() 関数:
function priorityEmail(emails) {
const priorities = ['recruit', 'hr', 'careers', 'saiyou'];
for (const p of priorities) {
const found = emails.find(e => e.startsWith(`${p}@`));
if (found) return found;
}
return emails.find(e => e.startsWith('info@')) || emails[0];
}
この関数で 100 社をスクリーニングしたら、recruit@ がある会社は 12%、hr@ が 8%、careers@ が 5%、残り 75% は info@ だけ。地方店舗系よりは決裁者寄りメアドの確保率が圧倒的に高い。
▼ 第 4 章:subplot — AI に冷メール文面書かせたら嘘を量産した話
ここから別のドラマが始まる。
5/9 夜、ICP pivot を決めて 30 件の lead を取得した。これを Forge の冷メール用に personalize する作業を、Claude Sonnet 4.5 にやらせた。
プロンプトはざっくりこんな感じ:
あなたは Forge のセールス担当者。
以下の会社に冷メールを書いてください。
- 会社名: {company}
- 募集職種: {wantedly_title}
- HP: {url}
35 件の本文を 3 分で生成。これを Instantly に push して、5/12 火に送信予定だった。
5/10 朝、出力 preview させたら、20 件中数件で問題発覚。
問題 1:LLM が相手の状況を勝手に推測してた
ある会社の本文:
Quartz を活用した生成 AI 環境のセットアップ支援を拝見しました。導入後の内製化フェーズで、LLM 実装や RAG 構築の実務経験者が不足するケースが多いとお聞きします。
「お聞きします」?俺は誰からも何も聞いてない。LLM が勝手に「相手の状況」を推測して書いた。
別の会社(LLM プラットフォームを提供してる業界大手)には:
貴社では、LLM 基盤の拡張やエンタープライズ対応が加速するフェーズかと存じます。
「かと存じます」も俺の知らないこと。LLM が想像で書いた。
これは Forge / mint brand「失敗 transparency」と完全に矛盾する。受信者が「想像で書いてる」と気づいた瞬間、信用が消滅する。
問題 2:会社名 typo
業界大手の社名で、頭文字 1 文字 LLM が間違えた(K → N の入れ替え)。LLM が変換時に typo した。これは送信したら一発アウト。
問題 3:ICP 不適合 lead が混ざってた
LLM 開発プラットフォームを提供してる業界大手に「Forge から AI エンジニア紹介します」のメール。彼らは LLM 開発プラットフォームを 提供してる側。Forge から AI エンジニアを紹介されても、彼らの方が圧倒的にエンジニア持ってる。
これも俺の ICP fit check 漏れ。Wantedly で AI 求人出してる ≠ Forge ターゲット ICP、ということを LLM 生成前のフィルターに入れてなかった。
3 件削除、残り 17 件は再生成必要。
解決策:memory ≠ skill ≠ hook の 3 層防御
5/9 夜、俺は「捏造禁止」というルールを memory file に書いた:
~/.claude/projects/.../memory/no-invented-numbers.md
▼ **ルール**
- 想像で相手の状況を書かない
- 数字は memory 裏付けある実数のみ
- 想像系の禁則語使わない
5/10 の昼、Claude が同じ間違いを再発した。memory に書いても、Claude は読まない / 忘れる。
次に「skill」を組んだ:
~/.claude/skills/no-fabrication/SKILL.md
▼ **トリガー**
コールドメール / X 投稿 / note 記事を書く時
これも効かなかった。skill は Claude が「自分で発動条件を判定して呼ぶ」passive な機構。Claude が autopilot mode で ship を急いでる時、メタチェックの呼び出しが落ちる。
最後に「hook」に降りた。Claude Code の harness(OS 層)が強制実行する layer:
~/.claude/hooks/check-fabrication.sh
#!/bin/bash
# PostToolUse on Write|Edit
input=$(cat)
file_path=$(echo "$input" | jq -r '.tool_input.file_path')
# 対象ファイルのみ check
case "$file_path" in
/tmp/forge_*draft*.json|*/articles/*.md)
;;
*)
exit 0
;;
esac
# 禁則語 grep
banned_file="$HOME/.claude/state/forge-banned-phrases.txt"
while IFS= read -r phrase; do
if grep -qF -- "$phrase" "$file_path"; then
echo "🚨 FABRICATION DETECTED: $phrase" >&2
exit 2 # block
fi
done < "$banned_file"
exit 0
settings.local.json で登録:
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "$HOME/.claude/hooks/check-fabrication.sh"
}]
}]
}
}
これだと、Claude が想像系フレーズを含む draft を書こうとした瞬間、harness が exit 2 で書き込みを block する。Claude 本人が忘れても効く。
3 層を表にすると:
| Layer | 効果 | 弱点 |
|---|---|---|
| memory | 弱 | 参照のみ、Claude が読まないと無効 |
| skill | 中 | Claude が自分で呼ばないと動かない |
| hook | 強 | OS 層、harness が強制実行 |
memory ≠ skill ≠ hook。強制実行は OS 層しか効かない、というのが今回の学び。
▼ 第 5 章:5/12 火 送信開始
5/10 夜の時点で、最終的に campaign に残った lead は 21 件:
- 4 件は手書き(5/8 から練ってた hand-curated v2、200-360 字)
- 17 件は LLM 再生成(strict prompt、禁則語 self-check 付き、3 回 retry loop)
送信スケジュール:
5/12 火 10:00-15:00 JST → 15 通送信
5/13 水 10:00-15:00 JST → 残り 6 通送信
5/14 木〜5/16 金 → reply 監視
5/16 金 → 判定
Etc/GMT-12 timezone で 13:00-18:00 にすると、JST 10:00-15:00 のゴールデンタイムに着弾する。Tue-Thu のみ送信、月金週末は B2B で逆効果なので除外。
daily_limit は 15 に絞った(旧 30 から削減)。新ドメインは 4 月取得で warmup 中、bounce 率を絶対 3% 未満に抑える必要がある。
▼ 第 6 章:5/16 金 判定ロジック
5/16 金の時点で reply 数を見て、次の打ち手を決める:
| Forge reply | 次のアクション |
|---|---|
| 1+ 来た | ICP 検証 OK → 50 通版でテスト規模拡大、source 拡大 |
| 0 | ICP も悪い疑い濃厚 → 「AI 開発受託」vs「業務委託エンジニア紹介」vs 別の何か、根本見直し |
ちなみに この記事を書いてる 5/15 金 18:00 時点の reply 数:0件。残り 24 時間で結果が出る。5/22 月の note #3 で全数字載せる予定。
▼ 第 7 章:3 週間で学んだ 5 つ
-
ICP は「困ってる側」を狙え、「使ってない側」じゃない
- 市場サイズだけ見て pain を見ないと死ぬ。求人 = 自己申告で困ってる人。
-
入口(メアド)は ICP より先にチェック
-
info@で送るのは事務員に売り込むのと同じ。recruit@hr@代表 経路を確保できない ICP は ICP じゃない。
-
-
業種混在は禁止、1 campaign に 1 ICP
- 10 業種に同じ文面を送ったら、全業種から無視される。1 ICP に絞り込んで、文面も最適化する。
-
数字は嘘を言う、reply 率しか見るな
- bounce 8% / open 86% / read 推定 30% / reply 0% で、open に騙されない。reply だけが Truth。
-
AI に文面書かせる時、必ず人間 review、できれば hook 強制
- LLM は想像で書く。送信前に必ず diff 確認、捏造防止 hook を強制実行。memory も skill も効かない、hook まで降りる。
▼ 次回予告:5/22 月 note #3
5/16 金の Forge campaign 結果数字を、全部載せる:
- 21 通送信したうち bounce 何件
- open 何件(実 read 何件)
- reply 何件(本物 / 自動返信)
- 反応あった会社のプロフィール
- 次の打ち手
俺はこの数字が 0 でも全部出す。それが mint だから。
──
▼ 俺が運営してるプロダクト
🎬 VideoTracker — 不動産業者向け動画自動生成 SaaS
動画1本¥596。SUUMO 問合せ平均1.8倍。
→ https://komugi-ai.jp/realestate
🤖 Mint Agent — Slack で @AI に話しかけて業務代行(近日リリース)
議事録投稿・メール返信・データ集計が Slack 内で完結
→ ベータ Waitlist:https://agent.komugi-ai.jp
🏭 Forge — 企業向け AI 実装・運用ファーム
構築 → 評価 → 運用まで一気通貫で請け負う
→ https://forge.komugi-ai.jp
業務効率化・SaaS 開発相談 → X DM @mintnekoneko0
過去記事まとめ:https://note.com/mintototo1
▼ mint について
mint は永遠に無料。広告もサブスクも作らない。
俺ら個人開発者の戦いを、嘘なく続ける場所が必要だから、ただ続ける。
「AI で楽に稼げる」が溢れる SNS で、現実の数字を出す場所は、俺の方が珍しいと思う。
X で続けてる:@mintnekoneko0
note の前回記事:#1 冷メール 0 返信は ICP じゃなく入口(メアド)が真因だった
来週 5/22 月の #3 で、結果の数字を全部出す。
#個人開発 #saas #失敗談 #startup #buildinpublic