
メタ情報
役割: 一人開発(要件定義 → 実装 → 運用) / 期間: 2026-04〜稼働中 / チーム: ソロ + Claude Code/Codex / 状態: 自社運用中(クライアント案件への転用可能)
概要
副業フリーランスが「毎朝30分かけて案件サイトを巡回 → 該当案件をピックアップ」していた作業を自動化。条件に合う案件のみ Discord に通知する仕組みを一人で構築・運用している自社運用ツール。応募候補ピックアップを 30分/日 → 0分(自動)にした。
背景・課題
副業稼働は週15〜20時間しかなく、応募候補のピックアップだけで日次30分(月15時間)を消費していた。応募件数が伸びない直接原因がここにあった。手作業でサイト巡回を続ける限り、稼働時間の大半が「探す」工程に消え、肝心の応募文作成・案件分析に時間を割けない状態が続いていた。
実装内容
① 新着案件の自動スクレイピング
CrowdWorks / Lancers の新着案件を毎朝 06:00 にスクレイピング。GitHub Actions の cron で完全クラウド化し、ローカル PC を起動しっぱなしにしない設計。
② 条件フィルタリング
キーワード・予算レンジ・競合人数などの条件で一次フィルタを実施。案件タイトル・本文・タグから自分の対応領域に合致するものだけを残す。
③ AI スコアリング
Letta(Claude ベースのメモリエージェント) を使って「自分が刺さる案件か」を判定。文脈ベースのスコアリングで上位10件に絞り込み、単純なキーワードマッチでは取れない案件適性を判定。
④ Discord Webhook 通知
スマホで朝の出勤前に確認できるよう、Discord に整形済みの案件サマリーを通知。タイトル・予算・競合数・応募リンクを1件1ブロックで配信。
技術スタック
- 言語: TypeScript
- フレームワーク: なし(Node.js + 軽量ライブラリ構成)
- DB / ストレージ: なし(GitHub Actions の Secrets + Repository に状態保持)
- AI / 外部 API: Letta(Claude ベースのメモリエージェント)(スコアリング判定)
- デプロイ・インフラ: GitHub Actions(cron)+ Discord Webhook
工夫点・技術的判断
ローカル PC を起動しっぱなしにしない設計を選び、GitHub Actions の cron で完全クラウド化。サーバ運用コストゼロ・PC 起動忘れによる取りこぼしゼロ。代替案として VPS 常駐や PC 上の cron も検討したが、可用性・コスト・運用負荷の3点で GitHub Actions が優位だった。AI スコアリングを単純なキーワードマッチではなく Letta(Claude ベースのメモリエージェント) の文脈判断に任せた点も特徴で、「初心者歓迎」「未経験OK」のラベルがなくても文脈で適性を拾える。
成果・指標
- 応募候補ピックアップ時間: 30分/日 → 0分(自動)
- 月次稼働時間の節約: 約15時間/月
- 通知精度: 受信案件のうち応募価値ありと判定する割合 約60%(自己評価)
- 運用コスト: サーバ代ゼロ(GitHub Actions 無料枠内で完結)
→ この実績は「業務自動化 / RPA / Claude Code を使った内製ツール構築」案件で武器になる。特に副業フリーランス支援・中小企業の社内自動化・定型作業の AI 化案件、IT インフラを持たない小規模事業者向け案件に転用可能。
関連リンク
- GitHub リポジトリ(動く証拠): https://github.com/tanasato118/job-digest-bot