| name | dearcc-jobclaw |
| description | Read a completed DearCC intake file or pasted answers, derive a short search brief internally, then return a structured job search request as JSON. |
| user-invocable | true |
| disable-model-invocation | false |
| metadata | {"openclaw":{"emoji":"🧭"}} |
DearCC JobClaw
Use this skill for the full DearCC flow in one step:
- read a completed intake file or pasted intake text
- derive a short search brief from the intake
- return a structured JSON job search request for use with any OpenClaw-compatible browser agent
Examples:
- "run dearcc jobclaw on ./my-intake.md"
- "search from this DearCC intake file"
- "run DearCC job search from these five questionnaire answers"
Accepted Input
Accept either:
- a local file path such as
./intake.md or /tmp/dearcc-jobclaw.txt
- pasted intake text
If the input looks like a readable local file path, read the file before doing anything else.
Intake Contract
Expect these five core questions in order, with non-empty answers:
It's 5 years from now and you love your work. Describe what you're actually doing on a typical day - not the job title, the actual activities.
What are you genuinely good at that you never put on your resume or LinkedIn?
What kind of problem makes you excited to come in on a Monday? Any of these? Hands-on/physical, Research/ideas, Helping people, Data/systems, Something creative, Building a business
What would make you dread going to work, even if the pay was great?
A year from now, what would make you feel like you actually moved forward?
Optional metadata fields may also be present near the top of the file:
provider: the job platform to search (e.g. linkedin)
location
workMode: Any, Remote, Hybrid, On-site
seniority: Any, Internship, Entry level, Associate, Mid-Senior level, Director, Executive
minSalary
requireVisaSponsorship: true or false
preferVolunteerRoles: true or false
maxResults
riasecOverride
notes
Runtime Workflow
- Read the intake text.
- If required answers are missing, return:
summary: a short blocker such as Missing answers for Q2 and Q4 in the intake file.
searchRequest: null
- Derive an internal two-sentence search brief from the intake. Do not print that brief unless the user explicitly asks for it.
- Sentence 1 should begin with
Search for.
- Sentence 2 should be
Return 5 matches as JSON. unless the intake explicitly asks for a different result count.
- Infer the search request conservatively from the intake and the internal brief:
- infer a practical
jobTitle from the strongest role direction in the intake
- default
provider to linkedin
- extract explicit
location, workMode, seniority, minSalary, and requireVisaSponsorship only when present
- extract 3 to 5 high-signal search terms into the search query
- extract explicit avoid terms, industries, or work environments into exclusions
- cap results at
5 by default unless the intake explicitly specifies another maxResults
- Return the structured search request as JSON (see Output Contract below).
Output Contract
Return JSON with this exact top-level shape:
{
"summary": "Short description of the candidate's direction and what was inferred from the intake.",
"searchRequest": {
"provider": "linkedin",
"jobTitle": "Inferred role title",
"keywords": ["keyword1", "keyword2"],
"exclusions": ["term1", "term2"],
"location": "City, State or empty string",
"workMode": "Any",
"seniority": "Entry level",
"minSalary": "",
"requireVisaSponsorship": false,
"maxResults": 5
}
}
If required answers are missing, return:
{
"summary": "Missing answers for Q2 and Q4 in the intake file.",
"searchRequest": null
}
Templates
Starter and example intake files are available under {baseDir}/templates/.