remote-jobs-finder
Fully conversational remote job finder for WhatsApp powered by Remote Rocketship.
Setup & Installation
Install command
clawhub install lior539/remote-jobs-finderIf the CLI is not installed:
Install command
npx clawhub@latest install lior539/remote-jobs-finderOr install with OpenClaw CLI:
Install command
openclaw skills install lior539/remote-jobs-finderor paste the repo link into your assistant's chat
Install command
https://github.com/openclaw/skills/tree/main/skills/lior539/remote-jobs-finderWhat This Skill Does
Searches Remote Rocketship's remote job database through a conversational WhatsApp interface. Users describe roles and location eligibility in plain language, and the skill fetches matching listings, stores preferences, and supports paginated results without requiring any CLI or dashboard interaction.
Preference memory means users never have to repeat their role, location, or deal-breakers across queries in the same session.
When to Use It
- Finding remote Product Manager roles in the UK
- Browsing backend engineering jobs and requesting 20 more results
- Filtering jobs by seniority and employment type after an initial search
- Updating a saved search to contract-only roles mid-conversation
- Setting up a recurring hourly check for new matching listings
View original SKILL.md file
# Remote Rocketship × OpenClaw Skill (Natural Language Job Finder)
Use this skill whenever a user asks (in normal chat) to find remote jobs, browse opportunities, or set up an ongoing job search. This integration is powered by Remote Rocketship (https://www.remoterocketship.com).
Github repo: https://github.com/Lior539/openclaw-remote-jobs-finder
**UX rule:** fully conversational. Do not tell the user to run CLIs, use slash commands, or visit dashboards.
---
## Fetching jobs (MANDATORY)
When the user wants real job listings, you MUST call the OpenClaw tool `rr_jobs_search`.
Hard rules:
- Do NOT ask the user to run any CLI.
- Do NOT claim you can’t fetch listings (you can).
- Do NOT attempt raw HTTP calls from the model.
API key rules:
- The Remote Rocketship API key is provided server-side via environment variable `RR_API_KEY`.
- Never ask the user to paste secrets in WhatsApp.
Example call:
```json
{
"filters": {
"page": 1,
"itemsPerPage": 20,
"jobTitleFilters": ["Product Manager"],
"locationFilters": ["United Kingdom"]
},
"includeJobDescription": false
}
```
---
## When to Trigger
Trigger on messages like:
- “Help me find a remote job”
- “Find me remote Product Manager roles”
- “Show me remote jobs in the UK”
- “Any new backend roles since yesterday?”
- “Send me 20 more”
- “Set this up to check every hour”
---
## Conversation Flow
### A) Onboarding (keep it short)
Ask only what you need. Prefer 1–3 quick questions, then fetch.
1) Role / direction (required)
- “What kind of roles are you looking for? (job titles, function, seniority)”
2) Location eligibility (required)
- “Where can you legally work from? (country / region)”
3) Must-haves & deal-breakers (optional, single combined question)
- “Any must-haves (salary/industry/async) or deal-breakers?”
4) Monitoring cadence (optional)
- “Want me to check for new matches on a schedule (hourly/daily/off)?”
If the user doesn’t want to answer everything, proceed with what you have and fetch results anyway.
### B) First fetch (default)
- Default `itemsPerPage: 20` unless the user asks for a different batch size.
- Keep `includeJobDescription: false` unless the user asks for deeper detail.
---
## Preference Memory (important)
Maintain a simple user profile in memory so the user doesn’t need to repeat themselves:
- targetTitles: string[]
- locationFilters: string[]
- seniorityFilters: string[] (if known)
- employmentTypeFilters: string[] (if known)
- mustHaves: string[]
- dealBreakers: string[]
- rankingPreference: "best_fit" | "newest_first"
- pollingCadence: e.g. "hourly" / "daily" / "off"
- lastQueryFilters: the last `filters` object used (for “20 more”)
If the user updates anything (“Actually only contract roles”), update memory.
---
## Pagination & “20 more”
Store lightweight paging state:
- filters
- page
- itemsPerPage
- pagination.totalCount / hasNextPage
Rules:
1) When the user tweaks filters, reset `page` back to 1 and fetch again.
2) If they say “more”, “20 more”, “next page”, increment `filters.page` and call `rr_jobs_search` again with the last filters.
3) Always mention what you’re showing (e.g., “Showing 21–40 of 134”).
4) If `hasNextPage` is false, tell the user you’ve reached the end.
---
## Output formatting (WhatsApp-friendly)
For each job, show as a bulleted list:
**Role Title** — Company
- 🕒 Posted: <date and time posted, formatted nicely e.g. today @ 5:15pm, or yesterday @ 2:10pm, or 2 days ago, or 1 week ago etc. Only show time if it was today or yesterday>
- <flag emoji> Location (remote scope)
- 💰 Salary (or “Salary undisclosed”)
- 1–2 line summary
- 🔗 Link to apply
- 🏢 Link to company homepage
- 🌐 Link to company LinkedIn:
Keep it concise. After the list, ask what to do next:
- “Want 20 more, or should I narrow by industry/seniority/salary?”
---
## OpenClaw Tool to Use (required)
Tool: `rr_jobs_search`
Parameters:
- `filters` (object): passed through to Remote Rocketship API `filters`
- `includeJobDescription` (boolean, optional; default false)
The tool performs the POST to:
`https://www.remoterocketship.com/api/openclaw/jobs`
---
## Error handling
| Status | Meaning | Agent guidance |
| --- | --- | --- |
| 401 | Missing/invalid API key | Tell the admin to set/repair `RR_API_KEY` server-side and restart the gateway. Do NOT ask the user for keys in chat. |
| 403 | Subscription inactive | Tell the user they need an active Remote Rocketship plan to fetch jobs. |
| 429 | Rate limit | Inform the user you hit the daily limit and suggest retrying later. |
| 5xx | Backend issue | Apologize, retry once, then ask the user to try again later. |
---
## Filters (common)
Common filter keys you can use inside `filters`:
- `page` (int, default 1)
- `itemsPerPage` (int, default 20, max 50)
- `jobTitleFilters` (string[])
- `locationFilters` (string[]) — use canonical values like “United Kingdom”, “Worldwide”
- `keywordFilters` (string[])
- `excludedKeywordFilters` (string[])
- `seniorityFilters` (string[]) — e.g. `["senior"]`
- `employmentTypeFilters` (string[]) — e.g. `["full-time"]`
Prefer canonical titles/locations from RR lists when possible.
Example Workflow
Here's how your AI assistant might use this skill in practice.
User asks: Finding remote Product Manager roles in the UK
- 1Finding remote Product Manager roles in the UK
- 2Browsing backend engineering jobs and requesting 20 more results
- 3Filtering jobs by seniority and employment type after an initial search
- 4Updating a saved search to contract-only roles mid-conversation
- 5Setting up a recurring hourly check for new matching listings
Fully conversational remote job finder for WhatsApp powered by Remote Rocketship.
Security Audits
These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.