rocketlist · diff

git:20260917.e041983 to git:20260920.c2483c2

19 added, 107 removed. Audit A to A.

---
name: rocketlist
- metadata:
- internal: true
- alias_of: cv-job-match
- description: Turn a CV into a shortlist of live startup roles from Rocketlist's public job board, including adjacent job titles the person would never have searched for, each with its published salary, the evidence for the fit, and a direct apply link. Use for "find roles I would be a strong fit for", career pivots, remote or VC-backed job hunts, and salary-visible role discovery.
+ description: Search current startup jobs and hiring companies through RocketList. Use for live market maps and job lists by location, role, seniority, funding stage, investor, industry, visa sponsorship, remote status, or company criteria. For matching a specific person's CV to roles, use cv-job-match instead.
---
- # Match Your CV to Startup Jobs
-
- Read a CV once, work out what the person can actually do, then find the live postings that
- match, including the ones filed under a title they have never typed into a search box.
-
- ## The surface you are working with
-
- Rocketlist has no public JSON API. Its `robots.txt` disallows `/api/` for every agent, so
- this skill works over the public web pages, which need no account and no credential.
-
- - Search: `https://rocketlist.ai/jobs?q=<terms>`, plus `city`, `seniority`, `category`,
- `industry`, `stage`, `founded`, `funding`, `investor`, `sort`, `page`. **The result list
- renders in the browser**, so fetch this URL with something that executes JavaScript. A
- plain GET of a filtered search returns an empty list, not an error.
- - Job detail: `https://rocketlist.ai/jobs/<slug>`. Server rendered, so a plain GET works.
- Carries the published salary, the required and nice-to-have skills, and `job_url`, the
- direct link to the employer's own ATS posting.
- - Job sitemaps: about 91,000 live job URLs whose slugs contain the company and the title.
- A free offline index for testing whether a title exists before searching it.
-
- Exact parameters, taxonomies, parsing recipes and gotchas: [references/search-surface.md](references/search-surface.md).
+ # Search RocketList
- Rocketlist also documents a public, token-free MCP connector at `https://rocketlist.ai/mcp`
- with `search_jobs`, `get_job`, `search_companies` and `get_company`. It was returning
- HTTP 502 on 2026-09-15. Send one `initialize` call; if it answers, use it, because its
- `search_jobs` takes remote status and skills that the URL cannot express. On any non-200,
- fall back to the pages and do not retry.
+ Turn the user's criteria into a verified shortlist of current startup jobs or hiring companies using RocketList's public MCP at `https://rocketlist.ai/mcp`.
## Workflow
- 1. **Read the CV into capabilities.** Verbs, objects, counterparties, tools, domain, scope,
- and the constraints the person stated: location, remote, seniority, salary floor,
- industries they will not go back to. Ask only for a constraint you genuinely need.
-
- 2. **Expand into fifteen to twenty-five candidate titles** along the five axes in
- [references/title-expansion.md](references/title-expansion.md). Keep both the titles the
- person would have searched and the ones they would not, tagged so you can separate them
- later. Record the CV evidence behind each one.
-
- 3. **Kill the invented titles before you spend a search on them.**
-
- ```
- python3 scripts/rocketlist_job.py scan --pattern "forward deployed" --pattern "deployment strategist"
- ```
-
- This greps the job sitemaps and prints a live posting count per title. Zero means the
- title does not exist on this board. Drop it silently.
-
- 4. **Search each surviving title separately.** One title per `q`, widest first. `q` is free
- text over the description as well as the title, so long compound queries collapse to
- nothing. Add `city`, `seniority` or `investor` only when a bare title returns too much.
- Remote status is not a URL parameter; read it off each card or put `remote` in `q`.
-
- Capture from each result card: title, company, location, salary range, one-line summary,
- tech stack, and the `/jobs/<id>` link. Ignore "Match score locked", there is no score for
- a signed-out visitor.
-
- 5. **Open the detail page for every role you intend to shortlist.**
-
- ```
- python3 scripts/rocketlist_job.py job <slug-or-url>
- ```
-
- This prints the structured record: `job_salary_range`, `job_required_skills`,
- `job_nice_to_have_skills`, `job_experience_required`, `job_seniority`,
- `job_location_type`, company stage, investors, and `job_url`. Check the requirements
- against the CV here. A title that sounded right and asks for eight years of a skill the
- person does not have is not a fit; cut it.
-
- 6. **Rank.** Dedupe on `job_url`, since the same role can surface under several titles.
- Then order by how much of the CV the posting's required skills are covered by, whether
- the stated experience band contains the person's, whether the location and remote status
- satisfy their constraint, and whether the salary clears their floor. Do not weight by how
- exciting the company is.
-
- 7. **Present the shortlist.** Eight to fifteen roles, in two labelled groups:
-
- - **Roles you would have found yourself**, the titles matching their current one.
- - **Roles you would not have searched for**, the expansion. This is the part that earns
- the skill. For each of these, name the title, and say in one sentence which part of
- their CV maps onto it.
+ 1. Translate the request into the filters RocketList actually supports. Preserve explicit constraints such as geography, remote eligibility, seniority, company stage, investors, industry, salary, and visa sponsorship. Ask one short question only when a missing constraint would materially change the result.
+ 2. Use `search_jobs` for roles and hiring-market questions. Use `search_companies` when the request is primarily about companies. Run separate searches when one query would mix materially different geographies or role families.
+ 3. Rank for the user's stated criteria, not general popularity. Deduplicate repeated companies and jobs before choosing the final list.
+ 4. Verify every selected job with `get_job` and every selected company with `get_company`. Confirm that the relevant job is still active and that any direct application URL resolves to the specific role rather than a generic careers page.
+ 5. Return only results supported by RocketList records. Include the company or role name, the evidence for inclusion, location, notable investors or stage when requested, and a direct RocketList or employer link.
- One row per role:
+ ## Accuracy rules
- | Field | Content |
- | --- | --- |
- | Title and company | plus company stage and lead investors when notable |
- | Location | Remote, Hybrid, On-site, or the city |
- | Salary | the published range verbatim, or "not published" |
- | Why you fit | the specific CV evidence, not adjectives |
- | Gap | the requirement they do not meet, stated plainly |
- | Apply | the `job_url` from the record, the employer's own posting |
+ - “Hiring” requires at least one current job record. A company profile alone is not proof that it is hiring.
+ - “Visa sponsorship” requires an explicit sponsorship field or statement. Do not infer it from office location, employee nationality, or remote status.
+ - “Backed by” requires the named investor in RocketList's company record. Do not infer an investment from accelerator participation or a founder's biography.
+ - For remote roles, distinguish worldwide eligibility from remote work limited to specific countries or regions.
+ - Do not invent missing salary, headcount, stage, investor, or sponsorship data. State when a field is unavailable.
+ - If fewer credible matches exist than requested, return the smaller list and say which constraint limited it.
+ - If the MCP is unavailable, say that live RocketList results could not be retrieved. Do not substitute remembered companies or jobs.
- Close with the titles you tested that turned out to be dead ends and why, so they can
- steer the next pass.
+ ## Output
- ## Boundaries
+ Make lists easy to reuse. Lead with the strongest matches and keep one company or job per item. For each item, include the specific evidence that satisfies the request. Close with the exact search criteria used so the user can refine the next pass.
- - Rocketlist aggregates public postings; it is not the employer and the listing can be
- stale. Send the person to `job_url` and tell them to confirm the details there.
- - Salary is published only when the employer published it. Many records read
- "Not specified". Write "not published" and never estimate a range, infer one from a
- similar role, or present a market average as this role's salary.
- - Stay on the public pages. Do not call `/api/`, do not create an account, do not sign in,
- and do not use a signed-in or admin surface even if one is available to you.
- - Every role in the output must be a posting you actually retrieved. Never fill a thin
- shortlist with a plausible role, a company you assume is hiring, or a title you did not
- verify against the index.
- - The site's own counters, currently about 98,800 active jobs across about 4,860 companies,
- are Rocketlist's numbers. Quote them as such or leave them out.
- - A "Gap" line is not optional. A shortlist with no gaps anywhere is a shortlist that was
- not checked against the postings.
+ This skill searches the market. It does not analyze a person's CV or expand their possible job titles; that is the separate `cv-job-match` skill.