Official Upwork API · OAuth only

Upwork proposals, ready to send before anyone else has read the post.

Nibwright watches Upwork through its official API and drafts a proposal that names the client's problem the moment a job matches. You paste and press Submit. Upwork has no API for that last step, so it is the only step left.

Start free, 100 credits

No card needed · about 10 free drafts · then $14.99/mo. Pricing

  • No browser extension
  • We never hold your password
  • Read-only access, no write scopes
Live queuepolling every 60s

Next.js + Node dashboard for a logistics SaaS

$45–70/hr · United States · posted 41s ago

Payment verifiedLong-term6 Connects
  1. Matched against your MERN, hourly $45+ search+0.4s
  2. Client screened: $124k spent, 34 hires, verified+1.1s
  3. Proposal drafted from your synced profile+38s
  4. Ready for you to sendnow

Draft · opening line

Copy letter

Your shipment table timing out at 40k rows is almost always an unindexed aggregation, not React.

60s

polling interval

Every new posting is scored within a minute of going up.

38s

median draft

From matched to a finished letter waiting for you.

0

passwords, ever

OAuth only. Your Upwork login never reaches us.

1 click

to revoke

From Upwork's own settings, or from ours.

How it works

Four steps. Three of them happen without you.

The interesting part is where the fourth one sits. Everything up to the finished letter is machine work; the submit is yours, and it is yours by design rather than by omission.

01

Match

every 60 seconds

We poll Upwork's official API on your behalf and score every new posting against your saved search.

02

Screen

before any credit

Client spend, hire count, payment verification and your own exclude list all run before a single credit is spent on writing anything.

03

Draft

median 38 seconds

Claude writes a diagnosis-first letter from the posting and your synced profile — the draft you review, not a template with your name in it.

04

You send it

your hand, your account

One click copies the letter and opens the posting. Upwork publishes no submit API, so no honest tool can do this part for you.

Where the automation runs

The riskiest tools are the ones that log in as you.

Upwork's policy team names four kinds of tooling it acts on: feed scrapers, auto-refreshers, macro recorders and userscript managers. All four have one thing in common — they operate your account. Here is every place Nibwright touches, and where it stops.

Upwork's official API

GraphQL · read-only

Polled every 60 seconds with the OAuth token you granted, and can revoke.

Nibwright's servers

match → screen → draft

Scoring, client screening and the letter itself. Runs while your laptop is shut.

Your dashboard

ready to review

The draft waits beside the posting, the client's numbers and the Connects it will cost.

Then you, by hand

Upwork's real apply form

One click copies the letter and opens the posting. You paste it, set your bid, and press Submit yourself — on Upwork, signed in as you.

no write scope exists
nothing to revoke but the read

What the other shape looks like: an extension or an agency seat driving a logged-in session, so the submit happens from your account while you are not at the keyboard. That is the arrangement Upwork's automation policy is written about, and it is the one thing this diagram has no box for.

Acted on by Upwork

  • Job-feed scrapers
  • Auto-refreshers
  • Macro recorders
  • Userscript managers

The grey zone

  • Extensions that submit from your logged-in tab — the only way auto-submit is technically possible
  • Anything that asks for your Upwork password
  • Shared logins on an agency seat

How Nibwright works

  • Server-side polling of the official GraphQL API
  • An OAuth token you granted, revocable in one click
  • You submit on Upwork yourself, from the real apply form
  • Every action written to an audit log you can read

What a draft looks like

A letter that opens on their problem, not your résumé.

This is a real draft for the posting in the hero, with the reasoning behind each paragraph written out beside it. Every proposal the product writes is built to this shape.

Draft · Next.js + Node dashboard for a logistics SaaS

Copy letterOpen posting

Your shipment table timing out at 40k rows is almost always an unindexed aggregation, not React. The render is fast; the query behind it is not.

I rebuilt a 3PL tracking dashboard last year with the same symptom — 4.1s p95 on the shipments view, down to 280ms after three covering indexes and moving the status rollup out of the request path.

First week, concretely: EXPLAIN ANALYZE on your three slowest endpoints, a before-and-after trace you can read yourself, and a written call on whether that rollup belongs in Postgres or in the app.

I overlap your mornings from GMT+5:45, and I am happy to start on the audit alone if you would rather see the work before agreeing the scope.

10 credits · drafted in 38s · Upwork quotes 6 Connects

Redrafting the same match is free.

  1. 1

    A diagnosis, not a greeting

    The first two lines are everything a client reads on a phone between meetings. They get a specific, falsifiable guess about their problem — the thing only someone who has met the problem before would say.

  2. 2

    Evidence from your profile, never invented

    The proof comes out of your synced Upwork work history. If your profile does not support a claim, the draft does not make it: a fabricated credential is worse than a thin proposal, and it is the one mistake you cannot walk back.

  3. 3

    A first week they can say yes to

    Named deliverables with a shape and an end, rather than "I would love to learn more about your project." It gives the client something to agree to in one reply.

  4. 4

    Your terms, in your words

    Timezone, availability and how you like to start come from your profile and the saved search that matched. You edit anything you want before sending — nothing here is locked.

Connects are an ad budget

Every proposal carries its price.

Connects cost $0.15 each and a single application runs 6 to 16 of them, more if you boost. Sends are easy to count and tell you nothing. Nibwright tracks what each search costs you per reply, reconciled against what actually happened on Upwork.

Which is usually how a search gets retired: not because it stopped matching, but because its cost per reply quietly doubled while its volume looked healthy.

See the analytics view
Reply rate and cost per reply for three saved searches, compared with the Upwork marketplace median reply rate of 7 percent.
Saved searchReply rateCost per reply
MERN, hourly $45+22 sent this month
27.3%
$4.85
React Native / Expo, fixed ≥ $3k16 sent this month
19.0%
$8.03
Node API rescue jobs28 sent this month
7.1%
$16.05
Beating the medianMarketplace median, about 7%Example figures. Your own replace them the week you start.

What you get

One subscription, no tiers to climb.

Both plans include everything below. The annual plan is the same product at a lower monthly price with a larger credit allotment — never a feature gate.

Searches, each on its own schedule

Keyword, category, budget floor, client country, hourly or fixed. Run one search hourly and another twice a day; pause either without losing its history.

How searches work

Screening that runs before the spend

Total client spend, hires, payment verification, average rate paid and your own exclude list. A posting that fails the screen never costs you a credit or a Connect.

Slack and email, batched

A draft is ready within a couple of minutes of the job going up, and the alert arrives where you already are — batched on purpose, so a busy search is one message rather than nine.

Notification setup

An activity log you can actually read

Every poll, every match, every skip and the reason for it. When a search goes quiet you can see whether nothing matched or nothing was posted.

Analytics reconciled against Upwork

Reply rates checked back against what actually happened on Upwork, not against what you remembered to mark as sent. Per search, per month, per dollar of Connects.

Read-only, and revocable

The OAuth grant carries no write scope, so there is no submit endpoint for anyone to misuse. Disconnect from our integrations page or from Upwork's own settings.

What we ask for

Freelance developers

The people this was built for. A saved search per stack, screened clients, and a letter that opens on the client's actual bug instead of your résumé.

Agency owners

Run a search per service line and read the cost per reply for each. The account stays yours: no shared logins, no agency seat submitting on anyone's behalf.

New on Upwork

Screening matters most when every Connect is scarce. Client spend, hire count and payment verification do not care how long your profile has existed.

Questions people ask first

Upwork automation, honestly answered.

Is using automation on Upwork allowed?

It depends entirely on what the tool automates. Upwork's policy team acts on job-feed scrapers, auto-refreshers, macro recorders and userscript managers. Nibwright is none of those: it reads postings through Upwork's official GraphQL API using an OAuth token you grant and can revoke in one click, and it holds no write access, so it could not submit on your behalf even if you asked it to.

Does Nibwright submit proposals for me?

No, and no honest tool can. Upwork publishes no API for submitting a proposal, so every service advertising auto-submit is doing it from a browser extension or a logged-in session, either yours or a manager seat the vendor runs inside an agency account. Nibwright drafts the letter and puts it one click from your clipboard. You paste it into Upwork's real apply form and press Submit yourself.

Do I need a Chrome extension?

No. The matching and drafting run on our servers against the official API, so there is nothing to install and nothing running in your browser. That also means it keeps working while your laptop is closed, which an extension cannot do.

How fast is a proposal ready after a job is posted?

Each search checks Upwork every 60 seconds, and drafting takes a median of 38 seconds once a posting matches, so a letter is usually waiting within a few minutes of the job going up. Speed is worth having because reply rates on Upwork fall sharply with proposal position, but it is not the product on its own: a fast generic letter still loses to a slower specific one.

Can I edit the draft before I send it?

Yes, and you should. The draft opens in an editor beside the original posting, the client's spend and hire history, and the number of Connects Upwork will charge. Redrafting the same match costs nothing, so you can regenerate as often as you like before you copy the letter across.

How many Connects does an Upwork proposal cost?

Connects cost $0.15 each and a single application spends roughly 6 to 16 of them, more if you boost your bid. Nibwright does not spend Connects for you, but it does track what each saved search costs you per reply rather than per send, which is the number that tells you whether a search is worth keeping.

What does Nibwright store, and how do I disconnect it?

An OAuth token for the read-only scopes you granted, a synced copy of your Upwork profile to write proposals from, and the postings your searches matched. The token is encrypted at rest. Disconnecting takes one click from the integrations page, or you can revoke the grant from Upwork's own connected-apps settings; either one stops all polling immediately.

How is this different from Vollna, GigRadar or Upwex?

Mostly in where the automation runs and who presses Submit. Their auto-bidding submits for you, either from a browser extension in your logged-in Upwork session (Upwex) or through a Business Manager seat they operate inside your agency (Vollna, GigRadar). Nibwright deliberately stops one step earlier: read-only access through the official API, and the submit stays yours. Each one is compared side by side on its own page under Alternatives.

More in the help centre — including your first draft, what a credit buys and the handful of things that go wrong.

$14.99/mo, or $12.49/mo annually

Start with 100 credits and see a real draft before you pay anything.

A drafted proposal costs 10 credits — 100 proposals a month on the monthly plan, 300 on annual, before you top up. Cancel whenever.

  • No card to start
  • No extension to install
  • Revoke access in one click