---
name: freelance_job_qualification
description: Qualify a freelance job post before spending time or application credits on it, on any platform or from direct inbound. Runs hard-stop scam checks, client-history math (spend per hire, hire rate, average paid rate versus yours), fit and competition checks, and application expected-value math, then returns an APPLY, CAUTION, or SKIP verdict with reasons. Use when a user pastes a job post, an invitation, or a brief and asks whether it is worth applying to, or when sorting a batch of posts.
---

# Freelance Job Qualification

## Purpose

Most freelance waste happens before the proposal. Credits cost money, a tailored proposal costs 20 to 40 minutes of skilled time, and a bad client costs far more after the win. This skill is the gate before any of that spend. It works the same on Upwork, Fiverr briefs, Contra, Wellfound, direct email inbound, and agent job markets, because it judges the client and the post, not one platform's credit system. Pair it with a proposal-writing skill only after a post passes here.

## Workflow

1. Intake. Collect the post text plus whatever client panel the platform shows. Missing fields stay missing. Never invent a hire rate, a spend figure, or a budget to fill a gap. Ask for your rate and your floor if they are not already known, since half the math needs them.
2. Hard stops first. Scan for the codes in references/red-flags.md. Any one hard stop ends the run with SKIP, no matter how good the title or budget looks. The pattern follows FTC job scam guidance: honest employers do not ask you to pay to get a job, deposit a check and forward part of it, or hand over ID and bank details before a real agreement.
3. Client-history math. Compute three numbers from the panel, or run scripts/qualify.py:
   - Spend per hire: total spent divided by hires. It shows what this client actually buys, as opposed to what this post advertises.
   - Hire rate: hires divided by jobs posted, as a percent. Below 15 percent with 10 or more posts means the client mostly posts and walks away.
   - Rate ratio: average hourly paid divided by your rate. Below 0.4, the posted rate is unlikely to survive contact with this client's real buying history.
   Also check category coherence: does the client's past work sit in the same category and price band as this post, or is a low-tier history wearing a specialist title?
4. Fit and timing. Score fit honestly: exact skill match, proof you can show, scope you can bound. Then check the window: proposals already in, hours since posting, and whether a hire already happened. A strong post with 50 proposals and four days gone is a weak use of credits unless the fit is exact.
5. Application economics. Total application cost is credits times the current per-credit price (read it at purchase time, never assume it) plus proposal minutes divided by 60 times your rate. Expected value is win probability times contract value, minus that total cost. A negative expected value is a SKIP reason on its own. Be honest with win probability: use your tracked rate on similar jobs if you have one, and a low single-digit guess if you do not.
6. Verdict. Run the script for a structured result, or apply the same rules by hand for a quick read. Deliver APPLY, CAUTION, or SKIP with the specific numbers behind it.

## Output Contract

Return, in this order:

- Verdict: one word, APPLY, CAUTION, or SKIP.
- Hard stops: each code hit, or "none".
- History math: spend per hire, hire rate, rate ratio, each with the raw inputs. Write "not shown on this platform" for any field the post does not expose.
- Application economics: credit cost, time cost, total cost, expected value, and the win probability you used.
- Cautions: every soft flag, stated plainly, with what would clear it (for example, verified payment, a funded first milestone, a written scope).
- Next step: for APPLY, the one angle the proposal should lead with. For CAUTION, the exact question to ask the client before applying. For SKIP, whether to decline politely (invitations, where a reply protects your response stats) or just walk away.

For a batch, return one compact block per post, sorted SKIP last is wrong: sort by expected value, best first, so the user spends credits top-down until their budget for the day is gone.

## Operating Rules

- Titles are marketing, history is data. When the two disagree, believe the history and say so.
- One hard stop beats ten positive signals. Do not average a scam pattern away with a nice budget.
- New clients are not automatic skips. A new account with verified payment, a specific brief, and a coherent company footprint can be a fair CAUTION. A new account with none of those is a SKIP when combined with unverified payment.
- Never recommend boosting, featuring, or paying extra placement on a post that has not passed this gate. Paying more to reach a bad client faster is still paying more.
- Never advise applying with a lower rate just to match a client's low history. The ratio is a signal to walk away or to scope smaller, not to discount yourself into their band.
- Keep all communication and payment inside the platform or a written contract until trust is earned. That rule comes from platform safety guidance and FTC scam guidance, and it protects the user even when the client is real.
- If the user decides to apply against a CAUTION or SKIP, record their call, state the risk once, and help them apply with eyes open. The verdict advises, the user decides.
- Recheck platform facts live when they matter. Credit prices, free monthly allotments, and fee rules change, and this skill stores none of them as fixed facts.

## Worked Examples

All clients below are invented for this skill.

Example 1, APPLY. Weekly data cleanup retainer, budget 2400, your rate 60. Client: 18000 spent, 12 hires, 16 posts, payment verified, average paid 55 per hour, 9 proposals after 10 hours. Math: spend per hire 1500, hire rate 75 percent, rate ratio 0.92. Cost: 8 credits at 0.15 is 1.20, plus 25 proposal minutes at 60 per hour is 25.00, total 26.20. At a 0.20 win chance, expected value is 453.80. Verdict: APPLY, lead with past retainer reliability.

Example 2, SKIP. Post promises top specialist pay, budget 3000, your rate 80. Client: 576 spent across 12 hires, average paid 7.50 per hour, payment unverified, and the post tells applicants to message a personal account off platform before applying. Math: spend per hire 48, rate ratio 0.09. Hard stop: off-platform first contact. Verdict: SKIP. The headline rate contradicts everything this client has ever paid.

Example 3, CAUTION. First-time client, account 20 days old, payment verified, no hires yet. Brief is specific: named deliverables, a deadline with a reason, and a budget in line with your rate. No history math is possible, and that absence is the caution, not a disqualifier. Next step: ask one clarifying question in the proposal and require a funded first milestone before starting.
