# Job search command center with live listings and pay context

> Run your saved job searches, drag every application through a pipeline board, and see what each role really pays before you apply.

- Workflow type: app
- Services: JSearch, Google Docs
- Categories: Personal Productivity, HR & People
- Published: 2026-08-31

## What it does

- Run your saved job searches against live listings and save the interesting ones to your board with one click.
- Track every application as a card you drag through Interested, Applied, Interviewing, Offer and Closed.
- See the posted pay next to what the broader market and that specific employer actually pay, so you know straight away whether a number is fair.
- Press Prep this application on any card and get a one page brief in Google Docs covering why you fit, a tailored cover letter draft, the number to ask for, and questions for the interviewer.

## What you'll need

- A JSearch account on RapidAPI for the live job listings and pay data. The free plan covers a light daily search habit.
- A Google account, so application briefs can be written into your Google Docs.
- A rough idea of the roles and locations you are hunting in, to set up your first saved searches.

## Prompt

I am job hunting and I want a command center I open every morning, replacing the Notion board or spreadsheet tracker I keep starting and abandoning. Build me an app with two surfaces I move between: a search view where I hunt for listings, and a pipeline board where I work the jobs I have already saved.

The search view is where I run saved searches against live JSearch listings. Let me define and store a set of named searches (things like "senior product designer in Austin" or "remote backend engineer") and run any of them on demand with Search Jobs. Note that JSearch has no separate location parameter on search, so the location has to be written inline in the query text itself. When I want to go deep past the first page of results, use Search Jobs (Cursor Pagination) and keep passing the returned cursor back on each follow up request until I stop asking for more. Show results as a scannable list with title, employer, location, posted date and the posted pay range when the listing includes one, and give every result a Save button.

Saving a job puts it on the pipeline board as a card in the Interested stage. Dedupe strictly by job id, because postings get relisted and reposted constantly and I never want the same job appearing as two cards. If a job I have already saved comes back in a later search, mark it as already tracked in the results rather than letting me save it a second time.

The pipeline board is the heart of the app. It has five stages: Interested, Applied, Interviewing, Offer and Closed. Every saved job is a card I can drag between stages, and the app records the date each card entered its current stage so it can reason about staleness later.

Each card shows the posted pay from the listing sitting right next to real market context, so I can judge a number immediately. Pull two comparisons: Estimate Salary for that job title in that location gives me the broad market rate, and Get Company Job Salary for that title at that specific employer tells me what this company actually pays. Display both next to the posted range. The card also carries the apply link and the full posting record from Get Job Details. JSearch is billed per request against a monthly quota, so fetch the job details and the two salary lookups once at the moment a job is saved, store the results alongside the card, and only refresh them when I explicitly ask, rather than re-fetching on every board load.

Anything sitting in Applied for seven days or more with no stage movement should surface in a "Needs follow up" group pinned to the top of the board, so the applications going quiet are the first thing I see each morning. Show the number of silent days on each of those cards.

Every card gets a "Prep this application" button that kicks off a background agent. The agent re-reads the full posting with Get Job Details and the salary picture from Estimate Salary and Get Company Job Salary, then writes a one page application brief into a new Google Doc. Create Document only produces a blank titled document, so the agent must create the doc first and then write the entire body with Batch Update Document. The brief covers four things: why I am a fit for this specific role, a tailored cover letter draft I can edit and send, the specific number I should ask for backed by the market and employer pay data, and a short list of sharp questions to ask the interviewer. When the agent finishes, the Google Doc link lands back on the card so I can open the brief straight from the board, and the card records when the brief was generated.

All board state lives in the app's own storage so everything persists between visits: my saved searches, every saved job and its current stage, the stage change dates, the cached detail and salary data, and the generated brief links. This is my personal tracker, so the state is per user. I should be able to move a card to Closed and have it drop out of the active stages without losing the record.

## How to customize

- Rename or add pipeline stages if your process has more steps, such as a phone screen or a take home exercise.
- Change the seven day follow up window to whatever length of silence feels too long to you.
- Adjust what the prep brief covers, for example adding a negotiation script or a list of people to contact at the company.

## FAQ

### Can this replace the job tracker I keep in Notion or a spreadsheet?

That is exactly what it is for. The difference is that a spreadsheet holds nothing live, so you end up pasting links in by hand with no pay context. Here the tracker is also the search surface, and every card arrives already filled in with the posting details and salary picture.

### Will the same job show up twice if it gets reposted?

No. Every saved job is matched on its unique posting id, so a relisted role will not create a second card. If a job you already track comes back in a later search, it is flagged as already saved instead.

### Where do the pay numbers come from?

Three places shown side by side: the pay range in the listing itself, a market estimate for that job title in that location, and salary data for that title at that specific employer. Seeing all three together is what tells you whether an offer is competitive.

### Does it send the cover letter for me?

No. The brief lands as a Google Doc you own, so the cover letter is a draft you read, edit and send yourself. Applying stays entirely in your hands.

### How do I know which applications have gone quiet?

Anything sitting in Applied for seven days or more without moving is pulled into a Needs follow up group pinned to the top of the board, with a count of how many days it has been silent.

Use this prompt in General Input: https://www.generalinput.com/prompts/job-search-command-center-with-live-listings-and-pay-context