How SnipeWork scores jobs

The exact rules behind the numbers you see on every job: the fit score, the client score, the client quality filters and the weekly Market Index. No black box, no hidden weighting.

Where the data comes from

SnipeWork reads Upwork job posts through the official Upwork API (OAuth 2.0). There is no scraping and no browser automation. A shared scanner checks Upwork every minute, stores each new job with the client signals Upwork exposes (payment verification, jobs posted, hires, total spend, feedback score, number of proposals, publish time) and keeps a rolling 7-day window.

Job age is measured from the time Upwork published the post, not the time it was created, because Upwork can hold a post for 5 to 18 minutes before it appears in search.

Fit score (0 to 100)

The fit score tells you how well a job matches your profile. Each keyword you add in Config is one signal. If you have not added keywords, the categories you picked are used instead, each category counting as one signal with all of its synonyms (for example "logo design", "logo designer", "logo creation").

Signals found in the title or descriptionBase score
4 or more95
385
270
150
None15

Signals that appear in the job title add a bonus: +5 for one, +10 for two or more. The result is capped at 100. If you have neither keywords nor categories, SnipeWork shows "Add skills for a fit score" instead of inventing a number.

Client score (0 to 100) and A to D grades

The client score estimates how likely a client is to be worth your Connects. It adds up six parts:

SignalPoints
Payment verified25 if verified, 8 if unknown, 0 if not verified
Proposals already sent25 under 5, 18 under 10, 12 under 15, 6 under 20, 3 under 30, 0 at 30+, 8 if unknown
Hire rate (hires / jobs posted)20 at 70%+, 16 at 50%+, 10 at 30%+, 5 at 10%+, 8 for new clients
Total spent on Upwork20 at $10k+, 16 at $5k+, 12 at $1k+, 6 at $100+, 3 above $0
Job age10 under 1 hour, 7 under 3 h, 5 under 6 h, 3 under 12 h, 1 under 24 h
Client feedback+5 at 4.8+, +2 at 4.5+, minus 8 below 4.0

Grades: A 75 and above (Excellent), B 55 to 74 (Good), C 35 to 54 (Fair), D below 35 (Low). The score only ranks the feed; it never hides a job on its own.

Client quality filters

Filters are the hard gate: a job that misses a threshold is hidden. Missing data never hides a job, only a value we can read that misses the bar.

PresetMax proposalsPayment verifiedMin hire rateMin client spendMax job age
Balanced20RequiredNoneNoneNone
Strict10Required30%$50024 h
Elite5Required50%$1,00012 h

You can also set every threshold yourself (Custom) and choose whether brand-new clients with no history stay in your feed.

Payment verification when Upwork hides the flag

Upwork does not always return the payment-verified flag. When it is missing, SnipeWork infers it:

Weekly Upwork Market Index

The Market Index is a weekly snapshot (ISO weeks, UTC) of every job the scanner saw that week, grouped by category and client country. For each budget we take the midpoint of the stated range (for example $30 to $50/hr counts as $40/hr), then report medians and averages for fixed-price and hourly jobs separately. The current week updates daily and is final after Sunday. A stored week is never overwritten with a smaller dataset.

The same data powers Upwork rates by category, the live market dashboard, the public REST API and the MCP server for AI agents.

Limits you should know about

Questions or a case where a score looks wrong? Email support@snipework.com. We change these rules in public and list every change in the changelog.

Get the weekly Upwork Market Index by email

Double opt-in. Unsubscribe anytime.