For freelance developers

Upwork proposal software for freelance developers

Development work on Upwork is where a generic proposal fails fastest, because a client hiring for Django can tell you pitched a WordPress template. ProposalLift keeps a persona per stack, ranks your code projects against each job, and lets you write qualification criteria that disqualify stack mismatches before you spend Connects. You bring your own API keys if you want, and every draft is reviewed by you.

Last reviewed

Built for how developers pitch

Most proposal tools treat every freelancer the same. The parts below matter more when the work is technical and the client is comparing specifics.

  • A persona per stack

    React, Node, Python, mobile, and infrastructure are different sales. Keep one persona for each and pitch as the specialist the job asks for.

  • Code projects as proof

    Describe each project with its stack and outcome. The closest matches are ranked against every job, so a Postgres migration job pulls the Postgres work.

  • Criteria that reject a mismatch

    Write rules in plain language, such as no WordPress or TypeScript only, and each job is graded and marked before it costs you Connects.

  • Screening questions on the page

    The Chrome extension answers the client's screening questions from the job and your context, in the apply form itself.

  • Your choice of model

    Draft with gpt-5-mini, gpt-5.2, or Claude Sonnet, priced from 0.5 to 2 credits. gpt-5-nano runs only on your own key.

  • Webhooks, not just notifications

    Job alerts fire desktop notifications and outbound webhooks, so you can pipe matching jobs into Slack, a queue, or whatever you already run.

Setting it up as a developer

  1. Connect Upwork

    Use your own Upwork developer app, or the shared platform app if you would rather not register one.

  2. Load your projects with their stacks

    The matching is semantic, so a project described as Next.js, Prisma, and Stripe is found by jobs that talk about any of them.

  3. Write your disqualifiers

    Encode the jobs you never want: the wrong stack, no budget, a client with no hire history, a brief that reads like a rewrite of someone else's spec.

  4. Add your own keys, optionally

    Save an organization OpenAI or Anthropic key to bill AI use directly instead of spending credits.

What it does and does not do

What it does

  • Pulls live Upwork jobs through the Upwork GraphQL API with your own credentials
  • Ranks your portfolio against each job by vector similarity
  • Grades jobs against criteria you wrote, and says which one failed
  • Drafts in the apply page and answers screening questions
  • Runs on your own infrastructure under AGPL-3.0 if you prefer

What it does not do

  • Submit proposals or spend your Connects, on any plan
  • Scrape Upwork or keep Upwork job data beyond what the terms allow
  • Send your keys or your drafts anywhere except the AI provider you chose
  • Give the self-hosted edition a team workspace, which is single-user only

If you would rather run it yourself

The whole product is AGPL-3.0 and runs on Docker with your own Supabase project and your own OpenAI and Upwork credentials. It sends no telemetry, so nothing about your proposals reaches us. This page is about using ProposalLift to win development work; if the deployment itself is what interests you, the open-source page covers the setup, the license, and what the hosted plans add.

  • Read the setup and license detail on the open-source edition page.
  • The self-hosted edition is single-user, so an agency workspace needs a hosted Agency plan.
  • You pay OpenAI directly when self-hosting, so there are no credits to track.

Frequently asked questions

Why would a developer use this instead of ChatGPT?

Because the context is the expensive part. ChatGPT writes a good proposal when you paste the job, your stack, and the right past project every time. ProposalLift stores those and picks the project for you, then adds the job feed and the qualification step that a chat window cannot.

Can I use my own OpenAI or Anthropic key?

Yes. A saved organization key takes priority over ours, so AI use is billed to you directly. The gpt-5-nano model is available only with your own key and does not fall back to our platform key.

Does it read the Upwork API properly?

It uses Upwork's GraphQL API with credentials you connect, and it respects the retention limits in Upwork's API terms rather than caching job data indefinitely. It is not affiliated with Upwork.

Can I self-host and still get updates?

Yes, by pulling the repository and redeploying. Nothing phones home to tell you an update exists, which is the trade for running a build that sends no telemetry.

Write your next Upwork proposal from your real work

Use the hosted app with a 14-day free trial and no card to start, or self-host the free, open-source edition on your own server.