I Built an AI Bid Desk for Upwork: Meet Bidsmith

2026-10-126 min readAli Raza

Cover image for I Built an AI Bid Desk for Upwork: Meet Bidsmith

For years my biggest problem on Upwork wasn't writing good proposals. It was timing.

The first hour after a job goes live decides most of what happens next. Clients read the early proposals, shortlist a few, and the rest barely get opened. I was spending that hour reading job posts, checking whether the client actually hires, and writing a proposal from scratch. By the time I applied, there were often 30 people ahead of me.

So I built a tool to fix it. It's called Bidsmith, and this post is the first of a series where I share how it works, how it's built, and where it goes next.

1. The problem: the first hour decides the job

Every freelancer who bids seriously knows the routine:

  • Spot a new job, often later than you'd like

  • Read the whole post to see if it actually fits

  • Check the client by hand: payment verified, spend history, how often they hire

  • Write a proposal that sounds like you, not like a template

Each step is reasonable on its own. Together they cost the one thing that matters most on Upwork: being early. And because it's tiring, it's easy to spend Connects on jobs you were never going to win.

Before and after: four manual steps compared with Bidsmith's alert, fit score, ready draft and a quick review

2. What I built

Bidsmith is an AI proposal assistant for Upwork freelancers. It watches for new jobs, decides which ones are worth my time, and has a proposal ready in my own voice before I even open the job.

Here's one real day on my dashboard: 666 new jobs seen, 91 that passed my rules, and 3 proposals drafted and waiting for my review. I didn't have to read 666 job posts to get there.

The real Bidsmith dashboard showing 666 jobs seen, 91 matched and 3 drafted, with fit scores on the matches table

3. How it works, step by step

  1. Watch. Bidsmith checks for new jobs that match my rules: skills, budget range and client quality.

  2. Score. Claude rates each job for fit and explains why in one line. It also flags red flags such as a low hire rate, a budget that's too thin for the scope, or a post that already has too many proposals.

  3. Draft. For the jobs worth bidding on, it writes a proposal in my voice, using my profile and the proposals that actually won me work. Screening questions get answered in the same voice.

  4. Alert. My phone gets a notification while the job is still fresh, so I can be among the first five applicants.

  5. Review and submit. I read the draft, tweak a line or two, and submit. A person always sends the proposal.

  6. Learn. When a client replies, interviews or hires, that outcome feeds back into future scoring and drafting. I call this Win Memory.

Six steps of Bidsmith: watch, score, draft, alert, review and submit, learn

4. What happens behind the scenes

I build SaaS products for clients, so I built Bidsmith the same way I'd build theirs: for many users from day one, not as a script on my laptop.

  • Upwork's official MCP server. Jobs and profile data come through Upwork's own MCP connection, authorized per account with OAuth. No scraping.

  • Background jobs with Inngest. Watching, matching and drafting run as queued jobs on the server, so it keeps working with the browser closed.

  • Claude for the thinking. Fit scoring with reasons, and drafting in each user's own voice.

  • Postgres with row level security. Every table is scoped to its user, and connection tokens are encrypted at rest.

  • Push alerts as a PWA. The draft reaches the phone without an app store install.

  • Draft first, confirm second. Nothing is ever sent in one step. Creating a proposal and sending it are two separate calls, with checks and an audit trail in between.

Bidsmith architecture: Upwork MCP, Inngest jobs, Claude, Postgres with row level security, push alerts and draft then confirm, with Win Memory feeding back

5. Built to scale

Each user has their own connection, filters, voice and memory. Because the heavy work runs as queued background jobs, adding more users means adding more workers, not rewriting the system. The same patterns (per-user OAuth, an encrypted token vault, tenant-scoped data and a hard split between drafting and doing) are what I use for any AI agent that acts on someone's behalf.

6. Where it goes next: a SaaS for freelancers

Right now Bidsmith runs for my own bidding. The bigger goal is to turn it into a product for the freelancer community, so everyone gets the same head start, not just me.

Upwork's API terms limit account-connected tools to personal and internal use, so the public version will work differently: it won't need access to your Upwork account, and you will always stay in control of what gets sent. I'll share exactly how that works, and how I plan to price it, in the next posts.

You can see what's live so far at app.twixrsolutions.com.

7. Want to be part of it?

If you freelance on Upwork, run an agency that bids every day, or build AI agents yourself, I'd like to hear from you. Tell me what would make you trust a tool like this, or which part would save you the most time. Get in touch and I'll keep you posted as it opens up.

Frequently asked questions

Bidsmith is an AI proposal assistant for Upwork freelancers. It watches for new jobs that match your rules, scores each one for fit with the reason and the red flags, and drafts a proposal in your own voice so you can review it and submit while the job is still fresh.

Enjoyed this article?

Get notified when I publish new posts on SaaS, Laravel, and remote engineering.

Keep reading

More posts

2026-08-257 min read

Upwork MCP Server: The AI Agent Now Built Into Your Freelance Account

Upwork's new MCP server lets AI agents like Claude and ChatGPT find jobs, draft proposals, and manage contracts inside your account. Here's what it does, what you can automate, the limits, and how to set it up.

Read

2026-10-055 min read

Specializing Beats Generalizing: A Decision Table for Freelance Engineers

Generalist profiles get skipped. Here's a practical decision table to help freelance engineers pick a specialization that wins better clients and higher rates.

Read

2026-09-036 min read

The Proposal Opening Line That Wins (And Why Yours Probably Isn't It)

Most Upwork proposals lose in the first sentence. Here is how to write the opening line that gets clients to keep reading and hire you.

Read