{"asOf":"2026-10-03","doesNotChangeDepotPicks":true,"doesNotChangePriceSort":true,"doesNotRescore":true,"caps":{"needs":6,"freePerNeed":3,"caseStudies":3},"class":{"id":"eval-judge","name":"Eval and judge agent","definition":"Scores a trace or a patch against a rubric, without the gold label in its prompt, and records the harness version.","needs":{"jtbdIds":["evals","oss-evals","rag-evals","production-guardrail-evals","continuous-eval-ci","adversarial-red-team-evals","synthetic-eval-data","llm-tracing"],"freeKinds":["free_data","dev_tool"],"capabilityTags":["evals","tracing"],"plain":["Gold labels kept out of the judge prompt","Harness version stored next to the score"]},"failureModeIds":["eval-contamination","non-determinism","weak-verification","observability-gap","benchmark-protocol-mismatch","inter-agent-misalignment"],"exampleTasks":["Score a trace against a rubric that does not include the gold answer","Refuse to rank two runs that used different harness versions"]},"needsConsidered":["evals","oss-evals","rag-evals","production-guardrail-evals","continuous-eval-ci","adversarial-red-team-evals"],"needsOmitted":["synthetic-eval-data","llm-tracing"],"jobs":[{"jtbdId":"evals","decide":{"available":true,"unavailableReason":null,"providerId":"braintrust","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"langfuse","cite":"Depot Pick for evals: braintrust (asOf 2026-10-19). See GET /api/jtbds/evals + GET /api/methodology.","citePath":"/api/jtbds/evals"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"agentbench","name":"AgentBench","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/THUDM/AgentBench/main/LICENSE"},{"id":"bfcl","name":"Berkeley Function Calling Leaderboard","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gorilla-llm/Berkeley-Function-Calling-Leaderboard/raw/main/README.md"},{"id":"browsergym","name":"BrowserGym","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/ServiceNow/BrowserGym/main/LICENSE"}],"freeMatch":"jtbd","paidPick":{"available":true,"unavailableReason":null,"providerId":"braintrust","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"langfuse","cite":"Depot Pick for evals: braintrust (asOf 2026-10-19). See GET /api/jtbds/evals + GET /api/methodology.","citePath":"/api/jtbds/evals"},"recommendation":{"mode":"free_only","use":[{"id":"agentbench","name":"AgentBench","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/THUDM/AgentBench/main/LICENSE"},{"id":"bfcl","name":"Berkeley Function Calling Leaderboard","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gorilla-llm/Berkeley-Function-Calling-Leaderboard/raw/main/README.md"},{"id":"browsergym","name":"BrowserGym","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/ServiceNow/BrowserGym/main/LICENSE"}],"gap":null,"creditsNotFree":[],"doesNotPromotePaidSku":true}},{"jtbdId":"oss-evals","decide":{"available":true,"unavailableReason":null,"providerId":"promptfoo","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"ragas","cite":"Depot Pick for oss-evals: promptfoo (asOf 2026-10-19). See GET /api/jtbds/oss-evals + GET /api/methodology.","citePath":"/api/jtbds/oss-evals"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"agentbench","name":"AgentBench","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/THUDM/AgentBench/main/LICENSE"},{"id":"bfcl","name":"Berkeley Function Calling Leaderboard","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gorilla-llm/Berkeley-Function-Calling-Leaderboard/raw/main/README.md"},{"id":"gaia","name":"GAIA","kind":"free_data","cost":"free","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gaia-benchmark/GAIA/resolve/main/README.md"}],"freeMatch":"jtbd","paidPick":{"available":true,"unavailableReason":null,"providerId":"promptfoo","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"ragas","cite":"Depot Pick for oss-evals: promptfoo (asOf 2026-10-19). See GET /api/jtbds/oss-evals + GET /api/methodology.","citePath":"/api/jtbds/oss-evals"},"recommendation":{"mode":"free_only","use":[{"id":"agentbench","name":"AgentBench","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/THUDM/AgentBench/main/LICENSE"},{"id":"bfcl","name":"Berkeley Function Calling Leaderboard","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gorilla-llm/Berkeley-Function-Calling-Leaderboard/raw/main/README.md"},{"id":"gaia","name":"GAIA","kind":"free_data","cost":"free","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gaia-benchmark/GAIA/resolve/main/README.md"}],"gap":null,"creditsNotFree":[],"doesNotPromotePaidSku":true}},{"jtbdId":"rag-evals","decide":{"available":true,"unavailableReason":null,"providerId":"ragas","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"promptfoo","cite":"Depot Pick for rag-evals: ragas (asOf 2026-09-14). See GET /api/jtbds/rag-evals + GET /api/methodology.","citePath":"/api/jtbds/rag-evals"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"ragas","name":"Ragas","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/vibrantlabsai/ragas/main/LICENSE"}],"freeMatch":"jtbd","paidPick":{"available":true,"unavailableReason":null,"providerId":"ragas","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"promptfoo","cite":"Depot Pick for rag-evals: ragas (asOf 2026-09-14). See GET /api/jtbds/rag-evals + GET /api/methodology.","citePath":"/api/jtbds/rag-evals"},"recommendation":{"mode":"free_only","use":[{"id":"ragas","name":"Ragas","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/vibrantlabsai/ragas/main/LICENSE"}],"gap":null,"creditsNotFree":[],"doesNotPromotePaidSku":true}},{"jtbdId":"production-guardrail-evals","decide":{"available":true,"unavailableReason":null,"providerId":"galileo","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"braintrust","cite":"Depot Pick for production-guardrail-evals: galileo (asOf 2026-09-14). See GET /api/jtbds/production-guardrail-evals + GET /api/methodology.","citePath":"/api/jtbds/production-guardrail-evals"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":{"providerId":"galileo","providerName":"Galileo","skuId":"galileo-free","item":"Free","plan":"Free — 5,000 traces per month","unit":"usd_per_month","amountUsd":0,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://galileo.ai/pricing","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-27","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"galileo-free","item":"Free","plan":"Free — 5,000 traces per month","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://galileo.ai/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."}},"representativeQuote":{"skuId":"galileo-free","item":"Free","plan":"Free — 5,000 traces per month","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://galileo.ai/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."},"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"guardrails","name":"Guardrails AI","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/guardrails-ai/guardrails/main/LICENSE"}],"freeMatch":"jtbd","paidPick":{"available":true,"unavailableReason":null,"providerId":"galileo","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"braintrust","cite":"Depot Pick for production-guardrail-evals: galileo (asOf 2026-09-14). See GET /api/jtbds/production-guardrail-evals + GET /api/methodology.","citePath":"/api/jtbds/production-guardrail-evals"},"recommendation":{"mode":"free_only","use":[{"id":"guardrails","name":"Guardrails AI","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/guardrails-ai/guardrails/main/LICENSE"}],"gap":null,"creditsNotFree":[],"doesNotPromotePaidSku":true}},{"jtbdId":"continuous-eval-ci","decide":{"available":true,"unavailableReason":null,"providerId":"braintrust","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"promptfoo","cite":"Depot Pick for continuous-eval-ci: braintrust (asOf 2026-10-19). See GET /api/jtbds/continuous-eval-ci + GET /api/methodology.","citePath":"/api/jtbds/continuous-eval-ci"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"promptfoo","name":"Promptfoo","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://github.com/promptfoo/promptfoo/blob/main/LICENSE"}],"freeMatch":"jtbd","paidPick":{"available":true,"unavailableReason":null,"providerId":"braintrust","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"promptfoo","cite":"Depot Pick for continuous-eval-ci: braintrust (asOf 2026-10-19). See GET /api/jtbds/continuous-eval-ci + GET /api/methodology.","citePath":"/api/jtbds/continuous-eval-ci"},"recommendation":{"mode":"free_only","use":[{"id":"promptfoo","name":"Promptfoo","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://github.com/promptfoo/promptfoo/blob/main/LICENSE"}],"gap":null,"creditsNotFree":[],"doesNotPromotePaidSku":true}},{"jtbdId":"adversarial-red-team-evals","decide":{"available":true,"unavailableReason":null,"providerId":"promptfoo","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"patronus","cite":"Depot Pick for adversarial-red-team-evals: promptfoo (asOf 2026-10-19). See GET /api/jtbds/adversarial-red-team-evals + GET /api/methodology.","citePath":"/api/jtbds/adversarial-red-team-evals"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"promptfoo","name":"Promptfoo","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://github.com/promptfoo/promptfoo/blob/main/LICENSE"}],"freeMatch":"jtbd","paidPick":{"available":true,"unavailableReason":null,"providerId":"promptfoo","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"patronus","cite":"Depot Pick for adversarial-red-team-evals: promptfoo (asOf 2026-10-19). See GET /api/jtbds/adversarial-red-team-evals + GET /api/methodology.","citePath":"/api/jtbds/adversarial-red-team-evals"},"recommendation":{"mode":"free_only","use":[{"id":"promptfoo","name":"Promptfoo","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://github.com/promptfoo/promptfoo/blob/main/LICENSE"}],"gap":null,"creditsNotFree":[],"doesNotPromotePaidSku":true}}],"failures":[{"id":"eval-contamination","name":"Eval contamination","detection":"Keep gold labels out of the agent prompt. Store the harness version beside the score. Do not compare a number across a benchmark revision without saying the revision changed."},{"id":"non-determinism","name":"Non-determinism","detection":"Run the task more than once and compare the end state, not a single transcript. Record the trial count next to any success rate you cite."},{"id":"weak-verification","name":"Weak verification","detection":"Success requires an end-state check the agent does not grade for itself: tests, a database diff, or a separate judge that cannot see the gold label."},{"id":"observability-gap","name":"Observability gap","detection":"Alert on a drop in trace ingestion and on certificate expiry for the trace host. Do not treat a missing trace as a successful quiet run."},{"id":"benchmark-protocol-mismatch","name":"Benchmark protocol mismatch","detection":"Store assisted-or-not, subset, and harness version beside every cited score. Refuse a ranking that mixes those fields."},{"id":"inter-agent-misalignment","name":"Inter-agent misalignment","detection":"Log the assigned subtask next to the worker's stated result. The lead rejects a result that does not match the assignment."}],"failuresOmittedBecauseMissing":[],"caseStudies":[{"id":"swe-bench-2023","title":"SWE-bench: Can Language Models Resolve Real-World GitHub Issues?","sourceUrl":"https://arxiv.org/abs/2310.06770","year":2023,"studyKind":"capability_ceiling"},{"id":"swe-bench-verified-2024","title":"Introducing SWE-bench Verified","sourceUrl":"https://openai.com/index/introducing-swe-bench-verified/","year":2024,"studyKind":"vendor_writeup"},{"id":"cognition-swe-bench-report-2024","title":"Cognition SWE-bench technical report","sourceUrl":"https://www.cognition.ai/blog/swe-bench-technical-report","year":2024,"studyKind":"vendor_writeup"}],"caseStudiesRelated":7,"caseStudiesOmitted":4,"caseStudiesReason":null,"links":{"kit":"/api/kit?class=eval-judge&cost=free","page":"/agents/kit/eval-judge?cost=free","agentClass":"/api/agent-classes/eval-judge","failures":"/api/failures","caseStudies":"/api/case-studies?class=eval-judge"},"recommendation":{"mode":"free_only","doesNotPromotePaidSku":true,"use":[{"jtbdId":"evals","paidPick":{"available":true,"unavailableReason":null,"providerId":"braintrust","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"langfuse","cite":"Depot Pick for evals: braintrust (asOf 2026-10-19). See GET /api/jtbds/evals + GET /api/methodology.","citePath":"/api/jtbds/evals"},"use":[{"id":"agentbench","name":"AgentBench","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/THUDM/AgentBench/main/LICENSE"},{"id":"bfcl","name":"Berkeley Function Calling Leaderboard","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gorilla-llm/Berkeley-Function-Calling-Leaderboard/raw/main/README.md"},{"id":"browsergym","name":"BrowserGym","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/ServiceNow/BrowserGym/main/LICENSE"}],"gap":null,"creditsNotFree":[]},{"jtbdId":"oss-evals","paidPick":{"available":true,"unavailableReason":null,"providerId":"promptfoo","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"ragas","cite":"Depot Pick for oss-evals: promptfoo (asOf 2026-10-19). See GET /api/jtbds/oss-evals + GET /api/methodology.","citePath":"/api/jtbds/oss-evals"},"use":[{"id":"agentbench","name":"AgentBench","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/THUDM/AgentBench/main/LICENSE"},{"id":"bfcl","name":"Berkeley Function Calling Leaderboard","kind":"free_data","cost":"oss","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gorilla-llm/Berkeley-Function-Calling-Leaderboard/raw/main/README.md"},{"id":"gaia","name":"GAIA","kind":"free_data","cost":"free","substitutable":true,"sourceUrl":"https://huggingface.co/datasets/gaia-benchmark/GAIA/resolve/main/README.md"}],"gap":null,"creditsNotFree":[]},{"jtbdId":"rag-evals","paidPick":{"available":true,"unavailableReason":null,"providerId":"ragas","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"promptfoo","cite":"Depot Pick for rag-evals: ragas (asOf 2026-09-14). See GET /api/jtbds/rag-evals + GET /api/methodology.","citePath":"/api/jtbds/rag-evals"},"use":[{"id":"ragas","name":"Ragas","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/vibrantlabsai/ragas/main/LICENSE"}],"gap":null,"creditsNotFree":[]},{"jtbdId":"production-guardrail-evals","paidPick":{"available":true,"unavailableReason":null,"providerId":"galileo","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"braintrust","cite":"Depot Pick for production-guardrail-evals: galileo (asOf 2026-09-14). See GET /api/jtbds/production-guardrail-evals + GET /api/methodology.","citePath":"/api/jtbds/production-guardrail-evals"},"use":[{"id":"guardrails","name":"Guardrails AI","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/guardrails-ai/guardrails/main/LICENSE"}],"gap":null,"creditsNotFree":[]},{"jtbdId":"continuous-eval-ci","paidPick":{"available":true,"unavailableReason":null,"providerId":"braintrust","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"promptfoo","cite":"Depot Pick for continuous-eval-ci: braintrust (asOf 2026-10-19). See GET /api/jtbds/continuous-eval-ci + GET /api/methodology.","citePath":"/api/jtbds/continuous-eval-ci"},"use":[{"id":"promptfoo","name":"Promptfoo","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://github.com/promptfoo/promptfoo/blob/main/LICENSE"}],"gap":null,"creditsNotFree":[]},{"jtbdId":"adversarial-red-team-evals","paidPick":{"available":true,"unavailableReason":null,"providerId":"promptfoo","scoreAsOf":"2026-10-19","scoreAgeDays":8,"scoreStale":false,"runnerUpId":"patronus","cite":"Depot Pick for adversarial-red-team-evals: promptfoo (asOf 2026-10-19). See GET /api/jtbds/adversarial-red-team-evals + GET /api/methodology.","citePath":"/api/jtbds/adversarial-red-team-evals"},"use":[{"id":"promptfoo","name":"Promptfoo","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://github.com/promptfoo/promptfoo/blob/main/LICENSE"}],"gap":null,"creditsNotFree":[]}]},"stackContext":{"host":null,"framework":null,"repo":null,"lang":null,"existing":[],"volume":null,"sender":null,"detectedFromTask":[]},"contextAdvice":[],"firstActions":["https://getagentdepot.com/api/hub","https://getagentdepot.com/api/decide?jtbd=evals","https://getagentdepot.com/api/quote?jtbd=evals","https://getagentdepot.com/api/kit?class=eval-judge&cost=free","https://getagentdepot.com/api/failures"],"honesty":["Picks are the current Depot Pick from GET /api/decide. This kit does not rescore.","Cheapest SKU is copied from GET /api/quote for that job. Input and output are not blended. A chat SKU is not borrowed for a non-chat job. If quote.cheapest is null, there is no matching sourced price.","pickIsNotPriceWinner is true only when that job's Depot Pick and cheapest matching SKU both exist and the quote says the pick is not the price winner. If either is missing, the field is false.","freeResources are existing /api/free items whose jtbdIds include that job, up to 3, sorted by id. If none list the job, freeResources is [] and freeMatch is none. Kind, provider, and docs are not fallbacks. Free does not change the pick.","firstActions are endpoint URLs for this class: hub, decide for the first listed need, quote for that need, this kit, and /api/failures. No other step is added.","Failures are the modes already listed on the class. Case studies are the first 3 related studies in catalog order, with the source URL already stored. Omitted studies stay on GET /api/case-studies?class=.","cost=free sets recommendation.mode to free_only. recommendation.use on each need is existing free rows whose jtbd ids include that job, excluding credits_not_free_forever. Those credit rows are listed under creditsNotFree with their stored notes. If none remain, use is [] and gap is no_free_resource_for_job. paidPick is the same decide result and is not free. A cheapest paid SKU is not copied into use."]}