Whether you are between roles or aiming for your next step up, a focused search beats a scattered one. The Job Search Command Center is a free, build-your-own AI agent that helps you stay organized, motivated, and moving forward, all from a single source of truth. Think of it as someone in your corner.
It is a template, not a service. You run everything in your own accounts, your pipeline lives in your own Google Sheet, and your data stays entirely under your control. FutureInSites builds AI agents like this for organizations; this one is free for anyone who is searching. The guide below walks you through every step.
Why it helps
No technical skills needed
If you can copy, paste, and follow steps, you can run it. There is nothing to code.
Your data, your accounts
Everything lives in your own Google Sheet and your own accounts. Nothing routes through anyone else.
Open it anytime, anywhere
Because your pipeline is a Google Sheet, you can review, sort, and edit it by hand whenever you like, from any device.
Auditable, with a fail-safe
A spreadsheet you can read means you can always check what the agent did, and you keep a durable backup if anything ever goes sideways.
A clear read on fit
The triage scores your real likelihood of an interview, how well your background matches, and whether the pay lines up, so you know which roles deserve your energy and how much to invest.
Cover letters that fit
It holds your resume, the full job details, and your past notes, so it drafts outreach and cover letters specific to the role instead of generic ones.
Effortless tracking
Give it a quick update in plain language and every role, application, and follow-up stays in order.
A plan that keeps you moving
It turns your pipeline into focused weekly and daily plans, so you always know the next step to take.
What it does
It operates in two modes and infers which one you need automatically. TRIAGE evaluates a new role: paste a job description or a link and it scores the opportunity on three dimensions, assigns a verdict, flags risks and gaps, and saves it. TRACK updates a role already in your pipeline: tell it "I applied today" or "recruiter replied, set to waiting on them" and it finds the right record and updates it without creating a duplicate.
Three more modes round it out. DRAFT writes a cover letter, follow-up email, or LinkedIn reach-out for a specific role, grounded in your resume and that opportunity's details instead of a generic template. DAILY PLAN builds today's job-search plan from the current state of your pipeline. REFRESH ALL runs diagnostics: stale follow-ups, applications with no response, and records missing key information.
The scoring methodology
Every role is scored 0 to 100 on three dimensions, then combined into one weighted number so roles are always comparable:
- Background Fit (50%) — how well your profile matches the role's stated and implied requirements.
- Likelihood of Interview (30%) — your probability of advancing given the role's filters: seniority, geography, internal-candidate risk, recency of relevant experience.
- Compensation Reality (20%) — alignment between the role's likely band and your target. If comp is undisclosed it is scored as neutral rather than penalized.
The weighted score maps to a verdict: Strong Yes (85+), Apply (70 to 84), Investigate (55 to 69), or Pass (below 55). Anything scoring 55 or above is automatically saved to your pipeline.
How it works
The Command Center is four small pieces wired together. Your custom GPT is the brain. It talks to a lightweight proxy on Vercel, which forwards requests to a Google Apps Script web app, which reads and writes your Google Sheet. The proxy exists so the key to your spreadsheet is never exposed to the GPT.
Build your own
Five steps, about 30 minutes. Work top to bottom. Every file referenced here is in the kit at the bottom of the page, and the long ones are shown inline with a copy button.
1Create your Google Sheet
Create a new Google Sheet. Rename the first tab to exactly Job Search Command Center - Opportunities. Paste the header row below into row 1, starting in cell A1. These column names are the contract between the Sheet and everything else, so keep them exactly as written.
Loading…
The header row is the single tab-separated line in the file. Columns are matched by name, not position.
2Deploy the Apps Script
In your Sheet, open Extensions → Apps Script. Delete any starter code, paste the script below, and save. Then open Project Settings (the gear) and under Script Properties add a property named API_KEY with a long random string as its value. Keep that value handy.
Finally, Deploy → New deployment → Web app. Set Execute as to Me and Who has access to Anyone, then deploy and copy the resulting web app URL (it ends in /exec). That URL is your APPS_SCRIPT_URL.
Loading…
3Deploy the Vercel proxy
The proxy is two small serverless functions plus a package.json. The simplest path: download the three files from the kit, put them in a folder with proxy.js and proxy-bulk.js inside an api/ subfolder and package.json at the top, push it to a new GitHub repo, and import that repo into Vercel as a new project. No build settings to change.
Before your first successful call, add three Environment Variables in Vercel → Project → Settings → Environment Variables, then redeploy:
| Name | Value |
|---|---|
PROXY_TOKEN | A long random string you invent. Your GPT will send this as its API key. |
APPS_SCRIPT_URL | The Apps Script web app URL from step 2 (ends in /exec). |
APPS_SCRIPT_KEY | The API_KEY value you set on the Apps Script in step 2. |
Your three endpoints become /api/proxy (GET to read, POST to write one) and /api/proxy-bulk (POST to write many). Here are both functions:
Loading…
Loading…
200 with { "opportunities": [] } means the whole chain works.
curl -H "x-api-key: YOUR_PROXY_TOKEN" "https://YOUR-PROJECT.vercel.app/api/proxy?limit=1"
4Create the custom GPT
In ChatGPT, go to Explore GPTs → Create, then open the Configure tab. Fill it in:
- Name: Job Search Command Center
- Description: Triage, track, and plan daily job search execution using a canonical opportunity record.
- Instructions: paste the full instructions below.
- Conversation starters: the five shown below.
- Capabilities: turn on Web Search and Canvas. Code Interpreter is not needed.
Loading…
TRIAGE: Evaluate and prioritize a new role (Paste a job description or link)
TRACK: Update the status of an existing opportunity (e.g., "I applied today" or "Recruiter replied, set to waiting on them")
DRAFT: Write a cover letter, follow-up email, or LinkedIn reach-out
DAILY PLAN: Create today's job-search plan (Assume follow-ups later today unless I say otherwise)
REFRESH ALL: Run diagnostics on my pipeline (Flag stale follow-ups, no-response applications, and missing info)
Add the Action
Scroll to Actions → Create new action. Set Authentication to API Key, auth type Custom, with custom header name x-api-key, and paste your PROXY_TOKEN as the key. Then paste the schema below into the Schema box and change the one servers URL near the top to your own Vercel project URL.
Loading…
5Personalize it, then test
The published instructions ship with a placeholder where your background goes, because OpenAI caps instructions at 8,000 characters and a full resume would not fit. The GPT solves this for you. Open your new GPT and type setup. It will ask for your resume, then return a tight CANDIDATE PROFILE block sized to fit. Copy that block, open Configure → Instructions, replace the placeholder block with it, and save.
Now test the real thing. Start a TRIAGE: paste any job description and confirm the GPT scores it and writes a row to your Sheet. Then test TRACK by updating that same role. If both land in the Sheet, you're done.
The kit
Every file, ready to download. Right-click and save, or open and copy.
How it works
The Command Center is a chain of small pieces you own end to end. Claude is the brain. It reaches your pipeline through a custom connector, which talks to a tiny MCP server on Vercel, which forwards each request to a Google Apps Script web app that reads and writes your Google Sheet. The server holds the key to your spreadsheet, so it is never exposed to Claude.
Two ways to use it on Claude
One thing to know up front. A custom GPT in ChatGPT gives you clickable starter buttons layered over your subscription chat, for free. Claude has no equivalent no-code button UI over its subscription chat. So this guide gives you two surfaces, both running on the same backend, and you pick the one that fits:
Cowork (a desktop panel)
A pinned panel with a real dashboard: live pipeline counts and buttons for the model-free actions (Daily Plan, Refresh, Track). Triage and Draft are typed into the Cowork chat, since those need the model. Lives on one desktop machine.
Claude Chat (a Project)
A Claude Project that works anywhere, including mobile, with the full-quality model for every mode. No buttons: you drive it by typing commands from a cheat-sheet that ships with the kit.
Same connector, same Google Sheet underneath, so the two stay in sync. Many people run Cowork at the desk and Chat on the go. Use the surface selector at the top of the page to switch the Part 2 steps below between the two. Cowork is the default.
Build your own
Part 1 builds the backend and is the same whichever surface you pick. Part 2 sets up your chosen surface. Every file referenced here is in the kit at the bottom of the page, and the long ones are shown inline with a copy button.
Part 1: the backend (both surfaces need this)
1Create your Google Sheet
Create a new Google Sheet. Rename the first tab to exactly Job Search Command Center - Opportunities. Paste the header row below into row 1, starting in cell A1. These column names are the contract between the Sheet and everything else, so keep them exactly as written.
Loading…
The header row is the single tab-separated line in the file. Columns are matched by name, not position.
2Deploy the Apps Script
In your Sheet, open Extensions → Apps Script. Delete any starter code, paste the script below, and save. Then open Project Settings (the gear) and under Script Properties add a property named API_KEY with a long random string as its value. Keep that value handy.
Now Deploy → New deployment → Web app. Set Execute as to Me and Who has access to Anyone, then deploy and copy the resulting web app URL (it ends in /exec). That URL is your APPS_SCRIPT_URL. The first time, you will see an unverified-app warning on your own script: click Advanced → Go to project (unsafe) → Allow. That is expected.
Loading…
3Put the MCP server on GitHub
The MCP server is a tiny Next.js app: one route file plus three config files. Create a new GitHub repository (any name, public or private), then add the files so that package.json sits at the repo root and the route file sits at app/api/[transport]/route.ts, a folder literally named [transport], brackets and all. The easiest way to create the nested folders on GitHub is Add file → Create new file and type the full path app/api/[transport]/route.ts into the name box. Here is the route file:
Loading…
The line createMcpHandler(fn, {}, { basePath: "/api" }) is required. Without it the endpoint returns 404. The matching package.json, tsconfig.json, and next.config.mjs are in the kit.
4Deploy to Vercel
In Vercel, choose Add New → Project and import your repo. It auto-detects Next.js, so leave the build settings alone. Before you deploy, expand Environment Variables and add these two, then deploy:
| Name | Value |
|---|---|
APPS_SCRIPT_URL | The Apps Script web app URL from step 2 (ends in /exec). |
APPS_SCRIPT_KEY | The API_KEY value you set on the Apps Script in step 2. |
When the deploy finishes, your MCP endpoint is your project URL plus /api/mcp, for example https://your-project.vercel.app/api/mcp.
curl -L --data '...'. Do not use curl -X POST, which forces POST across the redirect and returns 405.
5Add the connector in Claude
In Claude, go to Customize → Connectors → the + → Add custom connector. Paste your /api/mcp URL, leave OAuth blank, and save. Open the connector and set its tools to Always allow. To confirm the whole chain works, ask in any chat: read my job pipeline. An empty list (or your rows) means you are wired up.
6Give it your background
The instructions below are the agent's brain. The profile section ships as a placeholder. Either fill in candidate-profile-template.txt yourself and paste it in place of the placeholder, or paste the whole instructions into your surface (next), type setup, and let the agent build a right-sized profile from your resume, then paste that back over the placeholder.
Loading…
Part 2: set up your surface
You picked your surface with the selector at the top of the page. Switch it any time and the steps below swap to match.
Cowork: a dashboard panel
Cowork gives you a pinned panel with live pipeline counts and one-click Daily Plan, Refresh, and Track. Add the template below as a pinned live artifact in Cowork, then replace every YOUR_CONNECTOR_ID in it with your connector's id. You can read the id off your connector's tool names, which look like mcp__<id>__get_opportunities.
triage this: then paste a job, or draft a cover letter for the Acme role. The three buttons on the panel are model-free and run instantly.
Loading…
Claude Chat: works anywhere
The Chat option is a Claude Project, so it opens from any browser, the desktop app, or your phone, and every mode runs on the full-quality model. There are no buttons: you drive it by typing commands. Set it up in four steps:
- Create a Claude Project named Job Search Command Center.
- Paste your finished
project-instructions-template.txtinto the Project's instructions. - Enable the Job Search Command Center connector for the Project.
- Add the cheat-sheet below as a Project file (or paste its commands at the top of the instructions) so the commands travel with the agent.
The five commands
Claude Chat has no buttons, so these are what you type. Keep the cheat-sheet just below in your Project, or type menu any time and the agent lists them for you.
Triage
Score and save a new role. Type Triage this role: then paste a job description or link.
Track
Update a role you already have. Type Track update: Acme - I applied today.
Draft
Write tailored outreach. Type Draft a cover letter for the Acme role.
Daily plan
Build today's prioritized actions. Type Build today's daily plan.
Refresh all
Run pipeline diagnostics. Type Refresh all: flag stale follow-ups and records missing info.
The full cheat-sheet is below. Add it as a file in your Project so the list is always one click away.
Loading…
Troubleshooting
- Endpoint returns 404: the route is missing the
{ basePath: "/api" }argument, orroute.tsis not atapp/api/[transport]/route.tsin the repo. - Connector reads but cannot write: confirm both env vars are set in Vercel and you redeployed after adding them.
- "unauthorized" from the chain: the
API_KEYin Vercel does not match the Script Property on the Apps Script. - Connector tools not appearing: re-open Customize → Connectors, confirm it connected, and toggle the tools to Always allow.
- Cowork Triage or Draft do nothing: that is expected. Type those in the chat; only the model-free actions are buttons.
- Wrong Google account: the Apps Script must be deployed by the account that owns the Sheet.
The kit
Every file, ready to download. Right-click and save, or open and copy.