VIBELINK
Autonomous Contract Job-Hunt Engine
フルリモート業務委託案件を探す自律型エンジン


Overview
概要Hunting for fully-remote contract work is its own full-time job. The boards are noisy — stale listings, roles tagged 'remote' that quietly expect you in an office two days a week, and a hundred near-misses for every genuine fit. Worse, the part that actually wins contracts — a tailored, human first message to the right person — is exactly the part that does not scale when you are doing it by hand a dozen times a day.
フルリモートの業務委託案件探しは、それ自体がフルタイムの仕事です。求人サイトはノイズだらけで、古い募集や「リモート」と書きながら週2日の出社を求める案件、そして本当に合う1件の陰に100件の惜しい案件があります。さらに、契約を勝ち取る決め手になる「適切な相手への、自分の言葉で書いた最初のメッセージ」こそが、手作業では1日に何十回も繰り返せない部分です。
I built VibeLink for myself. After moving to independent contracting I needed a private engine that did the tedious half of the search so I could spend my attention on the conversations that mattered. Access is allow-listed by design — this is a personal tool first, not a public job board, and the front end deliberately shares the stripped-back, monospace aesthetic of this very dossier.
VibeLinkは自分のために作りました。独立して業務委託で働き始めてから、検索の面倒な半分を任せ、大事なやり取りに集中できる専用のエンジンが必要になったからです。アクセスは意図的に許可リスト制にしています。公開の求人サイトではなく、まずは個人用のツールです。フロントエンドも、このポートフォリオと同じ簡素な等幅フォントのデザインにしています。
How it was built
開発The guiding principle was 'surfaced on demand, ranked against your CV, outreach drafted in your voice'. Rather than scraping everything and dumping a list, VibeLink pulls roles when you ask, scores each one against your actual CV so the strongest fits rise to the top, and drafts a first approach in a tone that reads like you wrote it — not like a template.
設計の指針は「必要なときに取得し、自分の履歴書で順位付けし、自分の文体でアプローチ文を下書きする」ことです。すべてをスクレイピングして一覧を並べるのではなく、依頼したときに求人を取得し、実際の履歴書と照らして各案件を採点することで相性の良いものを上位に表示します。最初のメッセージも、テンプレートではなく本人が書いたように読める文面で下書きします。
What it does
機能Fully-remote contract roles are surfaced when you ask for them rather than sitting in a stale, ever-growing feed. The engine fetches and de-duplicates live, so what you see is current.
フルリモートの業務委託案件は、古い情報が溜まり続けるフィードではなく、依頼したときに取得します。その場で取得と重複除去を行うため、表示される情報は常に最新です。
Every role is scored against your own CV — skills, stack, seniority and domain — so the best-matched contracts rise to the top and the obvious mismatches never reach you.
すべての案件をスキル、技術スタック、経験年数、業界の観点から自分の履歴書と照らして採点します。相性の良い案件が上位に表示され、明らかに合わないものは届きません。
The first approach message is drafted in your own voice, ready to review and send. It reads like a human wrote it because the model is grounded in how you actually write, not a generic cover-letter skeleton.
最初のメッセージを自分の文体で下書きし、確認してすぐ送れる状態にします。汎用的なカバーレターの型ではなく、実際の書き方に基づいているため、人が書いた文章として読めます。
Hybrid and on-site listings dressed up as 'remote' are filtered out aggressively. Only genuinely location-independent contracts make it through.
「リモート」と称したハイブリッドや出社前提の求人は徹底的に除外します。通過するのは、本当に場所を選ばない案件だけです。
Google single sign-on gated by an explicit allow-list keeps the tool private. It is an instrument for one operator, not a SaaS — and it stays that way.
Googleのシングルサインオンと明示的な許可リストで、ツールを非公開に保ちます。SaaSではなく一人の利用者のための道具であり、今後もその方針です。
Under the hood
技術の詳細Ranking, not scrapingスクレイピングではなく順位付け
VibeLink doesn't dump a feed. It fetches roles on demand, de-duplicates them live, and scores each one against your actual CV — skills, stack, seniority, domain — so the strongest fits surface first and the obvious mismatches never reach you. The signal-to-noise ratio is the entire product.
VibeLinkはフィードを大量に流しません。依頼時に案件を取得し、その場で重複を除き、スキル、技術スタック、経験年数、業界の観点から実際の履歴書と照らして採点します。相性の良い案件が先に表示され、明らかに合わないものは届きません。情報の質こそがこのプロダクトのすべてです。
Outreach in your own voice自分の文体でのアプローチ
The first approach message is the part that wins contracts and the part that doesn't scale by hand. Gemini drafts it grounded in how you actually write, so it reads human rather than templated — no give-away phrasing, no generic cover-letter skeleton.
最初のメッセージは契約を勝ち取る決め手であり、手作業では量をこなせない部分です。Geminiが本人の実際の書き方に基づいて下書きするため、テンプレートではなく人の文章として読めます。AIらしい言い回しや、汎用的なカバーレターの型はありません。
Private by construction設計段階からの非公開
Access is Google sign-in behind an explicit allow-list, with per-user quotas enforced by a Cloud Functions gateway. It's an instrument for one operator, built to be cheap to run idle and fast on demand — not a SaaS, and deliberately so.
アクセスは明示的な許可リスト付きのGoogleサインインで、Cloud Functionsのゲートウェイがユーザーごとの利用上限を管理します。待機中は低コスト、必要なときは高速に動く、一人の利用者のための道具です。SaaSではなく、あえてそうしています。
Stack
技術構成The front end is Next.js with TypeScript and Tailwind CSS, carrying the same restrained, terminal-inspired visual language as the rest of my engineering work. Identity is handled by Firebase Auth with Google sign-in, gated behind an allow-list so access stays deliberate. The discovery and ranking work runs serverless on Google Cloud Functions, with Gemini doing the language-heavy lifting — scoring each role against the CV and drafting outreach in a grounded, personal voice. Firestore persists session state, saved roles and draft history. The whole thing is built to be cheap to run idle and fast on demand.
フロントエンドはNext.js、TypeScript、Tailwind CSSで構築し、私の他のエンジニアリング作品と同じ、控えめでターミナル風のデザインにしています。認証はGoogleサインインによるFirebase Authで、許可リストによってアクセスを限定しています。案件の取得と順位付けはGoogle Cloud Functions上でサーバーレスに実行し、言語処理の中心はGeminiが担います。各案件を履歴書と照らして採点し、本人らしい文体でアプローチ文を下書きします。セッションの状態、保存した案件、下書きの履歴はFirestoreに保存します。待機中は低コストで、必要なときには素早く動くように作っています。
Where it is now
現状と今後VibeLink runs as a private, allow-listed engine and already does the tedious half of my search end-to-end. Next is widening the sources it draws from and tuning the CV-match scoring with feedback from which outreach actually lands.
VibeLinkは許可リスト制の非公開エンジンとして稼働しており、案件探しの面倒な半分をすでに一貫して担っています。次は取得元を増やし、どのアプローチ文が実際に反応を得たかをもとに、履歴書との照合スコアを調整していく予定です。
VibeLink is a quiet productivity multiplier. It does not promise to find you a job — it removes the friction between you and the few conversations actually worth having, and hands back the hours you would otherwise lose to triage. The best tools are the ones you build for an itch only you have; this was mine.
VibeLinkは静かに生産性を高めてくれる道具です。仕事を見つけると約束するものではありません。本当に価値のある少数のやり取りまでの手間を取り除き、選別に費やすはずだった時間を返してくれます。良い道具とは、自分だけが抱える不便のために作るものです。これは私にとってのそれでした。