ローカルLLMを活用した企業調査の自動化
私は横浜市内に住んでいますが、とある横浜で長らく続く企業のYouTubeチャンネルを見て、その企業への印象が大きくプラスに変わりました。
転職情報サービスをみる限りその企業の採用情報は見つからない。
検索や転職サービスに依存した情報収集では、そもそも「見つかるものしか見つからない」また「見つかったものだけが選択肢」という構造的な制約があります。
そこで他にも家の近場のこんな企業が、またはあのサービスを提供している企業が実は自社サイトだけで採用情報を出している、「存在しているのに見つかりにくい」情報にリーチし選択肢を広げたい考えました。
そんな埋もれた情報の中に、もしかしたら私が強く惹かれる企業があるかもしれない。
しかし調べるといっても際限がないことをずっと手動でやることはしんどそう。
そこで出来るだけ広く情報を収集したいと考え
ローカルLLMを活用した企業調査の自動化を試してみました。
目次
概要
なぜ作るのか?
前提条件と設計方針
今回使用したもの
開発
今のところ...
まとめ
概要
- 検索の素材として企業リストExcelファイルを用意
- リストの内容を基にローカルLLM(Ollama)で検索ワードを生成
- Pythonで検索を実行
- 収集した企業情報をExcelに追記する。
→ 素材がアップデートされ続ける → 検索条件が変わり続ける → 情報の幅が広がる
実行環境は macOS。
CLIベースのツールとして通常は launchd で 定期実行。
日々、リサーチ結果が蓄積され、私はそれを確認するだけにしています。
なぜ作るのか?
転職活動を行う際、これまでの私は
- 転職情報サイトを眺める
- 頂いたスカウトから検討する
といった範囲にとどまっていたように思います。
これは効率的で一般的な方法ではあるものの、
自ら視野を広げる行動が不足しており、外部要因への依存が強い。
より視野を広げること=可能性を広げること
より視野を広げること=より自己理解を深めること
とはいえ、しらみ潰しに企業を探すにも限界がありますし、いかに継続するかが重要。
そこで
検索・情報収集は自動化、自分は広げた視野への判断に集中する
という方針を掲げ、この仕組みを作りました。
前提条件と設計方針
- このツールはあくまで「候補抽出」に特化し、個別の判断は私が行う
- ローカルLLM には抽出方法(検索ワード、条件の生成)を任せる
- 一回で完成とはせず、継続的なチューニングで別角度の抽出を試し続ける
これらを前提として、「情報収集」と「確認・判断」を分ける設計としました。
今回使用したもの
実現にあたって使用したものは以下のとおりです。
- ChatGPT
- 実現に向けての壁打ち+仕様整理
- Ollama(ローカルLLMプラットフォーム)
- 日本語処理や推論の安定性を考慮し qwen2.5:14b モデルを使用
- Tavily API(検索API)
- 手軽に利用できそう、かつ十分な無料枠を考慮して採用
- Python
- 検索実行+Excelの読み書きを担当
開発
まずChatGPTとの壁打ちを繰り返しながら仕様として詰めていくことから開始。
- システムの構成や概略
- 採用するツールの選定
- 仕様として定義すべきこと、考慮すべきこと、または今回やらないこと
以上で概ね 2人日程度。
私はPythonの経験が多くないこと、また今回の目的が「実装そのもの」ではないことから開発自体はOpenAI のCodexに任せました。
策定した仕様をCodexに渡すためのプロンプトをChatGPTにまとめてもらい、あとはCodexにプロンプトを投げて、1時間程度で実装完了。
今回は個人利用のツールなので稼働させながらテスト。
まだ問題が出る場面もありますが修正を重ねながら大きな問題なく稼働しています。
今のところ...
まだ稼働し始めたばかりで条件を広くしているため収集結果にはノイズも少なくありません。
しかし自分が無意識に掛けていたフィルターを超えた結果も得られており、当初の課題に対する有効性を確かに確認できています。
今回は「採用情報の探索」という使い方でしたが、他の課題解決にも応用できそうです。
まとめ
生成AI を活用した開発は既にスタンダードになりつつあると思いますし、短時間である程度のものが実装できることも周知の事実です。
この状況の中、エンジニアにはより「設計の能力」と「理解力」が求められると感じています。
如何に仕様を網羅し言語化するか。
何を行い、何をやらないのか。
今回は私自身の転職活動における課題解決がテーマとなりましたが
なぜ課題と感じているのか?
何を探すかではなく、「どう探すか?」
にフォーカスし、私の考えるエンジニアの役割に沿った意義のあるトライができました。