
freelance-gig-finder
Find fresh freelance and contract opportunities across multiple platforms for any skill set. Use this skill when a user asks "find me freelance React jobs", "Upwork gigs for Python developers", "freelance work posted this week", "contract jobs for designers", "find me remote freelance opportunities for [skill]", "I'm looking for freelance work", "what freelance gigs are available for [skill]", or any request to find paid freelance or contract work online.
- Installs
- 42
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/tinyfish-io/tinyfish-cookbook --skill freelance-gig-finder- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads freelance-gig-finder automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Freelance Gig Finder
Search Upwork, Contra, We Work Remotely, Freelancer, and Toptal simultaneously for fresh freelance and contract opportunities matching your skill set — filtered to recent postings so you're not looking at stale listings.
Pre-flight Check (REQUIRED)
Before making any TinyFish call, always run BOTH checks:
1. CLI installed?
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
If not installed, stop and tell the user:
Install the TinyFish CLI:
npm install -g @tiny-fish/cli
2. Authenticated?
tinyfish auth status
If not authenticated, stop and tell the user:
You need a TinyFish API key. Get one at: https://agent.tinyfish.ai/api-keys
Then authenticate:
tinyfish auth login
Do NOT proceed until both checks pass.
Step 1 — Gather inputs
You need:
- Skill or role — e.g.
React developer,Python,UI/UX designer,copywriter,DevOps,mobile developer - Budget preference (optional) — e.g.
hourly,fixed price,$50+/hr - Recency (optional) — default to listings posted in the last 7 days
If skill is not provided, ask before proceeding.
Step 2 — Parallel search
Fire all agents simultaneously.
# Agent 1 — Upwork
tinyfish agent run \
--url "https://www.upwork.com/nx/search/jobs/?sort=recency&q={SKILL_ENCODED}" \
"You are on Upwork job search results for '{SKILL}', sorted by most recent.
Extract the first 8 visible job listings.
For each listing extract:
- title
- client description snippet (what they need)
- budget (hourly rate range or fixed price if shown)
- posted time (e.g. '2 hours ago', 'yesterday')
- required skills listed
- job type (hourly/fixed)
- direct URL to the listing
STRICT RULES:
- Do NOT click any listing
- Read only what is visible in the search result cards
- Only include listings posted within the last 7 days
- Maximum 8 listings then stop
Return JSON array: [{title, description, budget, posted, skills: [], job_type, url}]" \
--sync > /tmp/fg_upwork.json &
# Agent 2 — Contra
tinyfish agent run \
--url "https://contra.com/opportunities?query={SKILL_ENCODED}&sort=recent" \
"You are on Contra job listings for '{SKILL}', sorted by newest.
Extract the first 8 visible job listings.
For each listing extract:
- title
- client/company name
- description snippet
- budget or rate (if shown)
- posted time
- required skills
- direct URL
STRICT RULES:
- Do NOT click any listing
- Read only what is visible in the listing cards
- Maximum 8 listings then stop
- If no results found, return {found: false}
Return JSON array: [{title, client, description, budget, posted, skills: [], url}]" \
--sync > /tmp/fg_contra.json &
# Agent 3 — We Work Remotely
tinyfish agent run \
--url "https://weworkremotely.com/remote-jobs/search?term={SKILL_ENCODED}" \
"You are on We Work Remotely job search results for '{SKILL}'.
Extract the first 8 visible job listings.
For each listing extract:
- title
- company name
- category (e.g. Front-End, Back-End, Design, etc.)
- posted date
- direct URL to the listing
STRICT RULES:
- Do NOT click any listing
- Read only what is visible in the search results
- Maximum 8 listings then stop
- If no results, return {found: false}
Return JSON array: [{title, company, category, posted, url}]" \
--sync > /tmp/fg_wwr.json &
# Agent 4 — Freelancer.com
tinyfish agent run \
--url "https://www.freelancer.com/jobs/?keyword={SKILL_ENCODED}" \
"You are on Freelancer.com job listings for '{SKILL}'.
Extract the first 8 visible job listings.
For each listing extract:
- title
- budget range (fixed or hourly)
- number of bids (if shown)
- posted time
- required skills listed
- direct URL
STRICT RULES:
- Do NOT click any listing
- Read only what is visible in the listing cards
- Maximum 8 listings then stop
Return JSON array: [{title, budget, bids, posted, skills: [], url}]" \
--sync > /tmp/fg_freelancer.json &
# Agent 5 — LinkedIn (contract/freelance filter)
tinyfish agent run \
--url "https://www.linkedin.com/jobs/search/?keywords={SKILL_ENCODED}&f_JT=C%2CF&f_WT=2&sortBy=DD" \
"You are on LinkedIn job search results for '{SKILL}' filtered to Contract and Freelance jobs, remote, sorted by most recent.
Extract the first 8 visible job listings.
For each listing extract:
- title
- company name
- location or remote status
- posted time
- salary or rate if shown
- direct URL
STRICT RULES:
- Do NOT click any listing
- Read only what is visible in the job cards
- Maximum 8 listings then stop
Return JSON array: [{title, company, location, posted, salary, url}]" \
--sync > /tmp/fg_linkedin.json &
wait
echo "=== UPWORK ===" && cat /tmp/fg_upwork.json
echo "=== CONTRA ===" && cat /tmp/fg_contra.json
echo "=== WWR ===" && cat /tmp/fg_wwr.json
echo "=== FREELANCER ===" && cat /tmp/fg_freelancer.json
echo "=== LINKEDIN ===" && cat /tmp/fg_linkedin.json
Before running, replace:
{SKILL}— e.g.React developer{SKILL_ENCODED}— URL-encoded e.g.React%20developer
Step 3 — Filter and present
From all results, deduplicate any listings that appear on multiple platforms and filter to only show listings posted within the last 7 days. Sort by recency — newest first.
## Freelance Gigs — {SKILL}
*Scraped live from Upwork · Contra · We Work Remotely · Freelancer · LinkedIn*
*{N} listings found · Posted in the last 7 days · {date}*
---
### 🔥 Fresh Listings
#### {Title}
**Platform:** {platform} · **Posted:** {posted}
**Budget:** {budget or rate}
**Skills:** {skills}
{description snippet}
🔗 {url}
---
#### {Title}
[same structure]
---
[up to 15 listings total, sorted by most recent]
---
### 📊 Quick Summary
| Platform | Listings Found | Avg Budget |
|---|---|---|
| Upwork | {n} | {avg} |
| Contra | {n} | - |
| We Work Remotely | {n} | - |
| Freelancer | {n} | {avg} |
| LinkedIn | {n} | {avg} |
---
### 💡 Tips for These Listings
{1-2 sentences of context — e.g. "Upwork has the most volume but high competition. Contra listings tend to be higher quality clients at better rates. LinkedIn contract roles are typically longer engagements."}
Edge Cases
- Upwork requires login to view listings — extract whatever is visible before the gate, note the limitation
- No listings found for skill — try alternative phrasings (e.g. "React" → "React.js", "frontend developer"; "Python" → "Python developer", "Django")
- Very niche skill — We Work Remotely and LinkedIn may have the richest results; Upwork/Freelancer tend to have more volume for common skills
- User wants a specific budget range — add budget filters to Upwork and Freelancer URLs before running
- User is in a specific country — note that Upwork and Freelancer are global but some listings are location-restricted; LinkedIn can be filtered by country
- All platforms return few results — suggest the user check back in a few days or broaden the skill (e.g. "React" instead of "React Native")
FAQ
What does the freelance-gig-finder skill do?
Find fresh freelance and contract opportunities across multiple platforms for any skill set. Use this skill when a user asks "find me freelance React jobs", "Upwork gigs for Python developers", "freelance work posted this week", "contract jobs for designers", "find me remote freelance opportunities for [skill]", "I'm looking for freelance work", "what freelance gigs are available for [skill]", or any request to find paid freelance or contract work online.
How do I install freelance-gig-finder?
Run npx skills add https://github.com/tinyfish-io/tinyfish-cookbook --skill freelance-gig-finder in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/freelance-gig-finder/ (personal) or .claude/skills/freelance-gig-finder/ (project).
Which AI agents can use freelance-gig-finder?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is freelance-gig-finder safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains freelance-gig-finder?
It is published by tinyfish-io in tinyfish-io/tinyfish-cookbook. It has 42 recorded installs.
More from tinyfish-io/tinyfish-cookbook
use-tinyfish
tinyfish-io/tinyfish-cookbook
Use TinyFish for web search, fetching URLs, reading pages, current information, source-backed answers, research, docs, pricing/product pages, extraction, scraping, and browser automation. Use whenever the user asks to search, find, look up, research, compare, get information from the web, summarize a URL, fetch page content, or automate a website.
oss-alternatives
tinyfish-io/tinyfish-cookbook
Find actively maintained open source alternatives to any paid SaaS tool or commercial API. Use this skill whenever a user mentions wanting to replace, swap out, self-host, or find a free/open source version of a paid tool — including but not limited to tools like Datadog, Algolia, Twilio, Stripe, Auth0, Segment, Mixpanel, Intercom, PagerDuty, LaunchDarkly, SendGrid, Cloudinary, or any other commercial developer tool or API. Also trigger when the user says things like "is there an open source version of X", "I don't want to pay for X", "self-host alternative to X", or "what can I use instead of X for free". Runs parallel TinyFish agents to search GitHub and developer communities, then checks the real health of each candidate — last release, contributor count, stars, Docker support, and feature parity — and returns a ranked comparison with a plain English gain/loss summary.
project-idea-validator
tinyfish-io/tinyfish-cookbook
Researches any project idea against live data from GitHub and Dev.to to surface what already exists, how mature the space is, and where the real opportunity lives. Use when a developer describes something they want to build and wants to know if it's been done before. Triggers on phrases like "validate my idea", "has this been built", "is this already a thing", "what exists for X", "should I build this", "is this idea original", "check if my project exists", "what are the alternatives to what I want to build", "is the market saturated for X", or any request to research the competitive landscape before starting a project.
salary-market-scanner
tinyfish-io/tinyfish-cookbook
Scan live job boards and salary databases to find real-time compensation data for any role and location. Use this skill when a user asks "what's the going rate for a senior React engineer in London", "software engineer salary Singapore", "how much do ML engineers make", "what should I be earning as a [role]", "is my salary competitive", "what does [company] pay for [role]", "salary range for [job title] in [city]", or any request to find out what a role pays in a specific market.
Popular business & finance skills
sales-enablement
coreyhaines31/marketingskills
When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'battle card,' 'battlecard,' 'competitive one-pager,' 'win-loss analysis,' 'why are we losing deals,' 'loss reasons,' 'how do I respond to this objection,' 'prospect just said,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps,' 'cold call script,' or 'voicemail script.' Use this for any document or asset that helps a sales team close deals. For public competitor comparison pages, see competitors. For running buyer interviews or churn research, see customer-research. For marketing website copy, see copywriting. For cold outreach emails, see cold-email. For the offer being sold (bonuses, guarantees, pricing structure),
revops
coreyhaines31/marketingskills
When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'outbound pipeline stages,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and processes that connect marketing to revenue. For cold outreach emails, see cold-email. For email drip campaigns, see emails. For pricing decisions, see pricing.
sales-funnel-blueprint
autonnel/autonnel-skills
Turn an offer into a concrete multi-step sales funnel spec - page-by-page structure, price ladder, copy outline and the metrics each step must hit. Use when asked to build a sales funnel, marketing funnel, landing page flow, lead magnet funnel, webinar funnel, tripwire or VSL funnel, when planning a product launch page flow, or when someone asks "what pages do I need" for selling something online.
pricing
coreyhaines31/marketingskills
When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' 'should I offer a free plan,' 'pricing page teardown,' 'pricing page audit,' 'is my pricing page AI-readable,' or 'can AI read my pricing.' Use this whenever someone is figuring out what to charge, how to structure their plans, or wants to audit a pricing page (for humans and for the AI agents that shortlist tools). For in-app upgrade screens, see paywalls. For offer construction (bonuses, guarantees, value framing, naming) on services/courses/coaching/high-ticket B2B, see offers.
cross-border-ecommerce
nexscope-ai/ecommerce-skills
Cross-border e-commerce expansion advisor. Scores target markets on 8 weighted dimensions (market size, ecommerce penetration, competition, regulatory complexity, logistics infrastructure, payment ecosystem, cultural distance, IP protection), compares 5 fulfillment models with cost and transit data, provides country-by-country tax/duty compliance guides (EU VAT/IOSS, UK VAT, US sales tax, CA GST, AU GST, JP consumption tax), maps local payment preferences by market, and builds a phased expansion roadmap. No API key required.
pricing-strategy
coreyhaines31/marketingskills
When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' or 'should I offer a free plan.' Use this whenever someone is figuring out what to charge or how to structure their plans. For in-app upgrade screens, see paywall-upgrade-cro.