Can I vibecode Dux-Soup?
KINDA · weekend projectMechanically this is a Playwright script that drives your own logged-in Chrome profile, clicks buttons, and waits a random number of seconds. An agent can get a working profile-visitor and connection-request sender running in a session, and a small campaign queue with daily caps by the end of a weekend. What you are actually buying from Dux-Soup is the accumulated caution: throttle curves that do not get your account restricted, selectors that keep working after LinkedIn reshuffles the DOM every few weeks, and a cloud mode so your laptop does not have to stay awake. Note that neither the paid tool nor your script is blessed by LinkedIn, so the ban risk is yours in both cases; you are just choosing who tunes the pacing. Build it if you want ten touches a day and enjoy fixing selectors, buy it if outreach volume is how you eat.
Build a local LinkedIn outreach assistant that drives my own browser. Stack: TypeScript, Node 20, Playwright with a persistent Chromium user data dir, better-sqlite3 for state, no server, no cloud, no telemetry, no account system. CLI only.
Structure:
- src/browser.ts: launches Playwright chromium with userDataDir from .env (PROFILE_DIR), headed by default so I can watch and take over.
- src/login.ts: opens linkedin.com and waits for me to log in manually, then exits. Never handle or store my password. No credentials in code or .env.
- src/db.ts: SQLite schema for targets (url, name, status, added_at) and actions (target_url, action_type, result, ran_at).
- src/import.ts: reads targets.csv (column: profile_url, optional first_name) and inserts new rows as status 'queued'.
- src/run.ts: the campaign loop.
Campaign loop rules:
- Read config from config.json: daily_visit_cap, daily_connect_cap, active_hours (start and end, local time), min_delay_seconds, max_delay_seconds.
- Default caps low and boring: 20 visits, 10 connects.
- Sleep a random interval between min and max delay between every action, plus a longer random pause every 5 actions.
- Stop immediately and log if the page shows a captcha, a checkpoint, an 'unusual activity' interstitial, or a login redirect. Do not retry.
- Actions: visit profile, and optionally click Connect and add a note rendered from templates/connect.txt with {{first_name}} substitution. Truncate notes to the field limit.
- Everything runs in dry-run mode unless --live is passed. Dry run logs the exact action it would take.
- Idempotent: never act twice on the same target for the same action type.
Also include: src/report.ts printing counts by status and action outcome, a README that states plainly that this automates a logged-in session and may violate LinkedIn's user agreement and can get an account restricted, and a .env.example with PROFILE_DIR only.
Out of scope: scraping or guessing email addresses, bulk profile data export, running headless to evade detection, proxy rotation, multiple accounts, reply detection, CRM sync, any hosted component.$ open in your agent (prompt prefilled, you press enter) or copy it raw · this prompt is generated from the build plan · improve it via PR
prompt copied. want to know what dies next week?
new verdicts + top votes, weekly. free. one-click out.
Because the failure modes are expensive and asymmetric. A sloppy script gets your LinkedIn account rate-limited or restricted, and for people doing outbound sales that account is the pipeline. Paying a few tens of dollars a month for someone whose full-time job is keeping the clicks looking human, plus a cloud runner and CRM handoff, is cheaper than a week of debugging selectors and one restricted profile. The DIY build is real and fun for low volume; it is a bad trade at volume.
xPacing heuristics and safety limits tuned across a lot of accounts, not guessed at by you
xSelector maintenance: when LinkedIn changes markup, someone else patches their extension and nobody patches yours
xCloud execution, so campaigns keep running with your laptop shut
xWebhook and CRM plumbing into HubSpot, Pipedrive and friends, plus Zapier glue
xCampaign reporting, reply detection and sequence branching that actually stops when someone answers
Nothing worth pointing at. That's why the prompt exists.
Can I vibecode Dux-Soup?
Kinda. The core of Dux-Soup is buildable in a weekend with the prompt on this page, but there are real gaps: Pacing heuristics and safety limits tuned across a lot of accounts, not guessed at by you, Selector maintenance: when LinkedIn changes markup, someone else patches their extension and nobody patches yours. Read the honest list above before committing.
How much does Dux-Soup cost?
Dux-Soup costs about $14.99/month (Pro Dux, checked 2026-08-18), which is $179.88 per year.
What do I lose by replacing Dux-Soup?
Honestly: Pacing heuristics and safety limits tuned across a lot of accounts, not guessed at by you; Selector maintenance: when LinkedIn changes markup, someone else patches their extension and nobody patches yours; Cloud execution, so campaigns keep running with your laptop shut; Webhook and CRM plumbing into HubSpot, Pipedrive and friends, plus Zapier glue; Campaign reporting, reply detection and sequence branching that actually stops when someone answers. If any of those are load-bearing for you, keep paying.
Is there an open-source alternative to Dux-Soup?
No mature open-source alternative worth pointing at, which is exactly why the one-shot prompt on this page exists.