recruiting · saas · workflow

Upwork builds Uma with in-house custom-trained AI to power agentic hiring workflows

Off-the-shelf LLMs perform inconsistently in production for domain-specific hiring workflows, failing on edge cases and lacking the platform-specific context needed to support business-critical tasks at Upwork.

How it works
Common implementation structure
How this type of workflow is generally built, generalized across documented cases — not tied to any one vendor's stack. Click any stage to read what happens there. Specific products that implement these stages appear in “Tools commonly seen” below.
Stage 1 · Client initiates hiring need
Uma can take meaningful action on behalf of clients and talent to move hiring and collaboration forward.
Tools used
UmaRAGchain-of-thoughtLlamaMistralQwen
Outcome

Uma now handles the full hiring flow agenically—crafting job posts, surfacing matches, coordinating interviews, evaluating candidates, and delivering recommendations—with custom fine-tuned models that substantially outperform off-the-shelf alternatives in production.

What failed first

Generic off-the-shelf LLMs proved insufficient for Upwork's use case—they generalized too broadly, produced inconsistent outputs on minor input variations, and could not encode the hiring domain knowledge Upwork required.

Results
Time savedwithin a few days
Volumedramatically better results in both content and style accuracy
Cost replaced10x or more
Source

https://www.upwork.com/blog/why-upwork-relies-on-in-house-ai-research-to-power-uma-upworks-mindful-ai

How we source this →

Grounding & classification
Source type: technical build writeup
30 fields verified against source quotes, 1 dropped as unverifiable.
agentic workflowai agentconversational aimulti agent workflowpersonalizationragknowledge basefailure mode describedmetric backednamed customerproduction runtime claimedtools describedworkflow describedsoftwareaccuracy improvementcost reductioncycle time reductiontechnical build writeuphr opsrecruitingagentic task executionrag answering