ジャンル入力を起点に、AIによる自動検索・フィルタリング処理を実行し、結果をスプレッドシートへ自動入力する営業リスト作成ツールを開発しました。
【課題】
営業リストの作成は、担当者が手動でWeb検索・情報収集・スプレッドシートへの転記を繰り返す属人的な作業となっており、1リスト作成に数時間を要していました。また、複数回の収集によってデータが蓄積されるにつれ重複エントリが増加し、リストの品質低下や無駄なアプローチが発生するという課題も抱えていました。特に9,000件を超える大規模データセットでは、手動での重複チェックが現実的に不可能な状況でした。
【施策・工夫】
GASを基盤として採用した理由:Google WorkspaceとのネイティブなAPI連携が可能で、スプレッドシートへの書き込みや定期実行をサーバーレスで実現できるため選定しました。別途インフラを用意せず、ツール単体で完結する構成にできる点も評価しました。
GASの6分制限を回避する5バッチ設計:GASには1処理あたり6分という実行時間制限があり、全国規模の企業検索をそのまま実行すると制限に抵触するという技術的な壁がありました。これを解決するため、日本全国を5つの地域ブロックに分割し、1バッチ=1地域として5回の処理で全国をカバーする設計を採用しました。無理に一括取得を狙うのではなく、制約の中で確実に動作する構造を優先した判断です。
安定性を重視した取得件数の設計:Serper APIは1リクエストで最大50件取得可能ですが、大量取得による処理の不安定化を避けるため、1処理あたり10件ずつ取得する設計にしました。取得件数を絞ることでAPIレスポンスの安定性を確保しつつ、バッチ分割と組み合わせることで全国規模のデータ収集を破綻なく実現しています。
Gemini APIによるフィルタリング・排除項目の設計:取得した検索結果をGemini APIで精査し、ジャンルとの関連性が低い情報や、あらかじめ設定した排除項目(フランチャイズ・求人サイト・まとめサイト等)に該当するものを自動除外する仕組みを実装しました。単純なキーワードマッチでは対応できない文脈的な判断をAIに委譲することで、リストの精度を大幅に向上させています。
Serper APIを「URL取得専用」として活用するコスト最適化設計:Serper APIは検索結果の取得時点では起動せず、Geminiのフィルタリングを通過した企業名のみを対象に、正確な公式URLを取得するステップで初めて呼び出す設計にしました。不要な企業への検索リクエストを発生させないことで、APIコストの無駄遣いを排除しつつ、リストに登録される企業のURLの正確性を担保しています。「必要な情報だけを、必要なタイミングで取得する」という設計思想が、コストと精度の両立につながっています。
重複排除の工夫:表記ゆれ(株式会社・(株) の違いや全角・半角の混在など)を正規化処理で吸収した上で重複チェックを実施。9,000件超のデータセットに対しても高精度な重複排除を実現しています。
【結果】
• 営業リスト1件あたりの作成時間を数時間から数分に短縮(約90%削減)
• Serper APIの呼び出しをフィルター通過後に限定することで、不要なAPIコストを大幅に削減
• 重複排除の自動化によりリスト品質が向上し、無駄なアプローチ件数を削減
• GASの実行制限という制約をバッチ設計で克服し、追加インフラコストゼロで全国規模の検索を実現