PAYWORTHY: Can LLMs Predict Which Freelance Jobs an AI Agent Will Complete?
Organizations: Upwork Inc.
Abstract
Before an AI agent takes on a paid job, someone has to judge whether it is likely to succeed. We test whether frontier language models can make this call before any attempt. We propose PAYWORTHY which contains 1{,}494 real freelance job postings, sampled from 18.8M postings made between 2020 and 2026 on a freelancing platform. An agent attempts each job from the posting alone in a single run, and an LLM judge acting as the client decides whether to accept the work. We ask 18 models to forecast how likely the agent is to succeed and measure how well each model's forecasts rank the accepted jobs above the rejected ones (AUC, where 0.5 is a random ranking). The answer depends on how the agent is described. Told what the agent cannot do, every model ranks the jobs well (AUC 0.66--0.86). Told instead that it is a generic agent with a browser and code execution, the same models rank the same jobs about as well as a random ordering (0.45--0.56). These results hold under judges from four other model families (Claude, GLM, Kimi and Qwen), and the informed forecasts also rank the verdicts of two human raters. Code is available at https://github.com/upwork/Payworthy
Figures & tables
| Benchmark | Tasks | Domain | Grader | Prices | Sampled | Forecast |
|---|---|---|---|---|---|---|
| SWE-bench ( Jimenez et al., 2023 ) | 2,294 | Python repos | unit tests | no | no | no |
| -bench ( Yao et al., 2024 ) | 165 | retail, airline | DB state + rules | no | no | no |
| SWE-Lancer ( Miserendino et al., 2025 ) | 1,488 | software | E2E tests | yes | no | no |
| GDPval ( Patwardhan et al., 2025 ) | 1,320 | 44 occupations | expert comparison | no | no | no |
| RLI ( Mazeika et al., 2025 ) | 240 | remote freelance | expert review | yes | no | no |
| UpBench ( Yi et al., 2025 ) | 322 | freelance jobs | expert rubrics | yes | no | no |
| Category | Jobs | Share | Accepted |
|---|---|---|---|
| Design & Creative | 385 | 25.8 | 42.9 |
| Web, Mobile & Software Dev | 248 | 16.6 | 66.9 |
| Engineering & Architecture | 204 | 13.7 | 55.9 |
| Writing | 136 | 9.1 | 55.9 |
| Data Science & Analytics | 109 | 7.3 | 67.9 |
| Accounting & Consulting | 84 | 5.6 | 65.5 |
Appendix figures & tables17 assets
Supplementary material from the paper’s appendix.
Appendix
| Step | Left |
|---|---|
| Corpus, 2020 to mid-2026 (2,389 daily files) | 18.77M |
| 1st and 15th of each month (158 days, 79 months); up to 15 per L3 category (205) per day, in file order; descriptions stored to 2,000 characters | 286,777 |
| Stratified draw: L1 month (948 cells), proportional, 1 per cell, de-duplicated on title and description | 4,000 |
| Description over 150 characters; shuffled once (seed 17) | 3,408 |
| Walked in order until 1,500 kept | 2,614 |
| excluded: fewer than four votes for a defined deliverable | 1,114 |
| Check | Result | |
| The raters on the judge’s accepts | ||
| Produced / on-spec: raters (judge) | 149 | 99.3 / 82.6% (100 / 94.0%) |
| Pay-worthy, raters | 149 | 34.9% [28.2, 42.3] |
| Raters’ rejections labelled missing information | 97 | 75.3% |
| What the job needs | ||
| Raters’ pay-worthy by the needs label: text only / client files | 60 / 53 | 53.3 / 17.0% |
| Identifier | Role | Calls |
|---|---|---|
| gpt-5 | F, J | 09-20–10-11 |
| gpt-5-mini | F, C | 09-20–10-11 |
| gpt-5-nano | F | 09-21–10-11 |
| gpt-4.1 | F, A | 09-21–10-11 |
| gpt-4o | F | 09-21–10-11 |
| o3 | F | 09-21–10-11 |
| Axis | Question put to the model |
|---|---|
| Context dependence | Needs the client’s private assets, brand voice, prior work, tacit taste |
| Verifiability | Can success be judged from the posting alone |
| Autonomy horizon | Steps before a human must intervene |
| Tool/credential surface | Needs accounts, payments, physical access |
| Deliverable modality | Emittable artifact vs. ongoing service |
| Predictor | ||
|---|---|---|
| Log posted budget | 0.003 | |
| Hourly pay | 0.001 | |
| Hourly, no stated rate | 0.088 | |
| Log description length | 0.078 | |
| Skill count | 0.570 |
| Check | Result | |
|---|---|---|
| Anchor: real submissions to 322 jobs | ||
| Paid work, opening / full | 256 / 255 | 19.9% [15.2, 24.6] 16.5% [12.2, 20.8] |
| claude-opus-5, opening / full | 321 / 320 | 19.0% [14.6, 23.4] 27.8% [22.8, 32.8] |
| AUC, paid vs. the 10 rejected submissions, opening / full | 256 / 255 | 0.63 [0.53, 0.69] 0.60 [0.47, 0.70] |
| Reading length: PayWorthy | ||
| Pay-worthy rate, full (headline) | 1,494 | 54.4% [51.9, 57.0] |
| Label | Rate | Generic | Limits | Gain | Text | |
| gpt-5 (headline) | 54.4 | – | .45–.56 | .66–.86 | .20–.40 | .82 |
| gpt-5, opening | 25.9 | .42 | .44–.59 | .64–.81 | .18–.33 | .73 |
| glm-5.3 | 53.5 | .75 | .44–.57 | .69–.87 | .25–.42 | .81 |
| claude-sonnet-5 | 32.6 | .52 | .43–.60 | .70–.86 | .22–.40 | .80 |
| qwen3.8-max | 47.1 | .72 | .43–.58 | .70–.88 | .25–.42 | .84 |
| kimi-k3 | 57.6 | .76 | .46–.58 | .69–.87 | .23–.41 | .81 |
| Check | Result | |
|---|---|---|
| Selection and posting features | ||
| Own annotation left out of the PayWorthy selection (base seven) | 1,384–1,425 | AUC 0.456–0.557 (full rule 0.456–0.558) |
| Reweighted to corpus shares of postings / dollars: by category; by cluster | 1,494 | 54.4% / 57.6%; 51.0% / 56.3% (as sampled 54.4%) |
| Spearman of contract value with outcome, priced jobs: fixed-price / hourly | 754 / 390 | / |
| Spearman with outcome: log description length / skill count | 1,494 / 1,429 | / |
| Annotations refit on outcomes (cross-fitted) | ||
| Check | Result | |
|---|---|---|
| Generic forecasts with missing-information rejections set aside | 1,223 | AUC 0.521–0.630; mean 0.584 [0.547, 0.618] |
| Missing-information rejection rate, short / long third of briefs | 1,489 | 20.9% / 15.1% |
| The needs label, annotated by claude-sonnet from the posting: text only / client files / client-system access / a medium the agent cannot produce | 1,494 | share 25 / 43 / 18 / 14%; pay-worthy 82.3 / 41.8 / 63.7 / 32.1% |
| Check | Result | |
|---|---|---|
| Separating self-contained jobs from jobs needing the client’s files: generic / limits forecasts (outcome 0.70) | 999–1,016 | AUC 0.41–0.57, 7 of 18 CIs below 0.5 / 0.69–0.87, all CIs above 0.5 |
| Top fifth by each generic forecast (ties broken at random, mean of 20 draws): share needing the client’s files / a medium the agent lacks (all jobs 43 / 14%); acceptance of its client-file picks (all client-file jobs 42%); share of the top fifth that the same forecaster’s limits forecast puts in its top fifth / bottom half | 1,472–1,494 | 51–62% (median 58) / 0–5% (median 3); 26–40% (median 31); 23–53% (median 38) / 21–54% (median 37) |
| Forecast (logit) explained by posting size (budget, description length, skills, pay type, tier) / needs label / own five annotations, cross-validated , medians | 1,472–1,494 | generic 0.03 (max) / 0.21 / 0.45; limits 0.01 (max) / 0.34 / 0.25 |
| One-line reasons (gpt-5, gpt-5-mini, claude-sonnet-4.5, claude-opus-5; 300 items of the 400; cues tagged by gpt-4.1): share naming missing client material as a risk; mean forecast when they do / do not | 1,199 per prompt | generic 37%: 0.50 / 0.49; limits 61%: 0.15 / 0.20 |
| The same four with the reason field: AUC (without the field) | 299–300 | generic 0.44–0.59 (0.44–0.54); limits 0.79–0.88 (0.80–0.88) |
| Check | Result | |
|---|---|---|
| The needs label alone, cross-fitted | 1,494 | AUC 0.69; below 17 of 18 limits forecasts |
| Hand-written rule on the needs label, no labeled jobs: low if the job needs the client’s files / low unless self-contained | 1,494 | AUC 0.61 [0.58, 0.63] / 0.64 [0.62, 0.66] |
| Forecast minus the rule (low unless self-contained), paired: generic / limits | 1,472–1,494 | to , all CIs below 0 / to , 17 of 18 CIs above 0 (client-files rule: to , all CIs above 0) |
| AUC within jobs of the same needs label: generic / limits | 1,472–1,494 | 0.39–0.49, 10 of 18 CIs below 0.5 / 0.60–0.83, all CIs above 0.5 |
| within jobs needing the client’s files / system access | 633 / 256 | to / to ; all CIs exclude 0 |
| within self-contained jobs / jobs needing a medium the agent lacks | 366 / 215 | to , all CIs exclude 0 / to , 12 of 18 CIs exclude 0 |
| Check | Result | |
|---|---|---|
| Only deliverables written in a single call | 1,158 | generic AUC 0.47–0.56, limits 0.66–0.87; to , all CIs exclude 0 |
| Haiku 4.5 passes, within the jobs the benchmark agent passes (400-item subset): limits / generic | 223–226 | AUC 0.63–0.74, all CIs above 0.5 / 0.47–0.63, 7 of 18 |
| claude-opus-5 on its own attempts vs. Fable’s and Haiku’s, double-centred AUC residual: limits / generic | 395–398 | [ , 0.001] / [ , ] |
| Mean of two attempts predicting the third: observed / implied by the beta-binomial fit; its oracle AUC (item bootstrap) | 399 | 0.944 / 0.945; 0.99 [0.98, 0.99] |
| Mean over all eighteen, items resampled jointly (items every forecast covers) | 1,449 | generic AUC 0.51, limits 0.80; [0.27, 0.32]; mean by model family to |
| Limits forecast recalibrated (Platt) on 100 random labeled jobs, scored on the rest (20 splits) | 100 / rest | ECE 0.05–0.11 (uncalibrated 0.22–0.47); accuracy at 0.5: 0.63–0.78 (always accept 0.54) |
| Setting | Agent | Forecasts | Label | Items | Main result |
|---|---|---|---|---|---|
| Benchmark (§ 5 ) | claude-opus-5; posting only, one response, named files | generic, limits (18 forecasters) | gpt-5, full reading, 3 votes (headline) | 1,494 | generic 0.45–0.56; limits 0.66–0.86 |
| Ablation (§ 5.1 ) | same | limits with one limit dropped or alone; placebo (4 forecasters) | headline | 1,494 | L6 and L1 carry most of the gain |
| Tool agent (App. H ) | claude-opus-5 with tools and a simulated client | generic, limits | gpt-5, also sees the client’s facts and exchange | 500 | generic near random; limits 0.56–0.69 |
| Label noise (§ 5.3 ) | benchmark agent, two repeat attempts; a weaker solver; altered work | best limits | headline judge, fresh votes | 400 | attempts 0.81, votes 0.87; ceiling 0.94 (model-based 0.99) vs. 0.86 |
| Other labels (§ 5.4 ) | benchmark agent | generic, limits | gpt-5 opening only; four other judges; their majority; unanimous items | 1,494 (978) | generic 0.43–0.61; limits 0.64–0.95 |
| Other solvers (§ 5.4 ) | claude-fable-5-1; claude-haiku-4.5; same harness | generic, limits | headline judge | 400 | generic 0.42–0.61; limits 0.68–0.87 |