Skip to content

Add work lanes, make live proposal automation opt-in, rename to upwork-cli - #1

Merged
promptadvisers merged 1 commit into
mainfrom
lanes-and-opt-in
Sep 28, 2026
Merged

promptadvisers merged 1 commit into
mainfrom
lanes-and-opt-in

Conversation

@promptadvisers

Copy link
Copy Markdown
Collaborator

What changes

Lanes. Ranking was hardcoded to AI training and consulting, so automation and agent builders saw relevant jobs penalized as weak title fits. Six built-in lanes (ai-automation, ai-agents, ai-apps, ai-training, ai-consulting, ai-creative) now carry their own searches and ranking signals. Members pick them with setup --lanes, list them with upwork-cli lanes, and add custom lanes under customLanes in config. Each job is scored against every selected lane and keeps its best one; the lane appears in JSON, CSV, markdown, and table output. hunt with no argument runs every query in the member's lanes.

Whole-word matching. Short terms no longer fire inside other words ("rag" in "storage" earned a +10 priority title match). A trailing * marks a prefix term.

Opt-in live proposals. proposal fill and proposal submit drive the browser against Upwork's automation rules (Terms of Use section 3.5), so they refuse to run until a member opts in with setup --enable-live-proposals. The default path ends at proposal review, a manual paste, and record-submitted.

Rename to upwork-cli. Package, command, ~/.upwork-cli state directory, and UPWORK_CLI_* variables. UPWORK_JOBS_* variables and an existing ~/.upwork-jobs directory keep working.

Verification

  • npm test: 104 pass (94 existing, 10 new covering lanes, matching, custom lane validation, setup, and the opt-in gate through the real CLI)
  • npm run check:release: passes
  • Sample titles across all six lanes score 44 to 62; unrelated titles score 1 or below

🤖 Generated with Claude Code

…k-cli

Ranking was hardcoded to AI training and consulting, so an n8n or agent
builder saw every relevant job penalized as a weak title fit. Six built-in
lanes (ai-automation, ai-agents, ai-apps, ai-training, ai-consulting,
ai-creative) now carry their own searches and ranking signals, members pick
them in setup, and custom lanes live in config. Each job is scored against
every selected lane and keeps its best one.

Terms now match whole words, which fixes short terms firing inside other
words ("rag" in "storage" earned a +10 priority title match).

Proposal fill and submit drive the browser against Upwork's automation
rules, so they now refuse to run until a member opts in with
setup --enable-live-proposals. The default path ends at proposal review and
record-submitted.

The package, command, state directory, and environment variables move to
upwork-cli. UPWORK_JOBS_* variables and an existing ~/.upwork-jobs
directory keep working.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@promptadvisers
promptadvisers merged commit bd88537 into main Sep 28, 2026
8 checks passed
@promptadvisers
promptadvisers deleted the lanes-and-opt-in branch September 28, 2026 16:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant