npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

job-apply-kit

v0.1.2

Published

Claude Code workspace that searches for jobs, fills applications in a real browser, and submits only after you approve from Discord or WhatsApp.

Readme

job-apply-kit

A Claude Code workspace that finds jobs, fills applications in a real browser you're signed into, and submits only after you approve - from your phone over Discord, Telegram or WhatsApp, or by typing SUBMIT <CODE> in the terminal.

npx github:grapedjuice/job-apply-kit setup

Or install it once and run job-apply-kit from anywhere:

npm install -g github:grapedjuice/job-apply-kit
job-apply-kit setup

Built on ai-job-search (MIT) - its profile interview, fit evaluation, CV/cover-letter tailoring, and job-portal CLIs are all included.

What you get

| | | |---|---| | Search | /scrape runs job-portal CLIs (LinkedIn, Simplify internships/new-grad, and more); /browse searches Handshake, LinkedIn, Indeed, Simplify and company career sites in your signed-in browser. Results are deduplicated and ranked against your profile. | | Tailor | Fit evaluation first, then a targeted résumé (LaTeX) and optional cover letter, verified against your real profile - nothing invented. | | Apply | /submit <url> fills the form in a dedicated Chrome profile: uploads, dropdowns, Workday/iCIMS/Oracle/Greenhouse/Ashby quirks, account creation (passwords are sent to you). | | Approve | Every application becomes a review sheet with a one-time code. Nothing is sent until you approve that exact sheet. The gate re-checks the live page against what you approved before clicking. | | Phone | Discord or Telegram bot (Submit / Change / Skip buttons, résumé picture), or WhatsApp in your own "Message yourself" chat (reply SUBMIT <CODE>). All free. Send queue any time for a status overview. |

Requirements

  • Node.js 18+, Python 3.10+, Google Chrome
  • Claude Code (npm install -g @anthropic-ai/claude-code)
  • Optional: bun for the portal CLIs, a LaTeX distribution (MiKTeX / MacTeX / TeX Live) for résumés

Setup

job-apply-kit setup walks you through:

  1. Prerequisite checks
  2. Creating your workspace folder (a private git repo - it will hold your profile)
  3. Installing the Python packages and the browser driver
  4. Choosing an approval channel (Discord, Telegram, WhatsApp, or terminal only)
  5. Signing in to job sites in the dedicated browser

Then:

cd job-search
claude            # always start Claude Code inside the workspace - safety hooks load from here
/setup            # guided interview that builds your profile from your résumé / LinkedIn
/scrape           # or /browse - find jobs
/submit <url>     # fill an application and send it to you for approval

Keep the approval bot running in a second terminal: job-apply-kit bot.

Discord

Create an application at https://discord.com/developers/applications, add a bot, enable Message Content Intent, turn off Public Bot, and install it to your account (User Install). Setup stores the token in .env and pairs the bot to you with /pair - only your account can approve anything.

Telegram

Message @BotFather, send /newbot, and paste the token into setup. Setup shows a one-time link; open it and tap Start to pair - only your account can approve. Free, official, unlimited; no server needed.

WhatsApp (linked device)

Setup links job-apply-kit to your WhatsApp like WhatsApp Web (scan a QR code). Reviews arrive in your own Message yourself chat, marked 🤖, with the résumé picture. Free and unlimited, no second number or server. It is unofficial (WhatsApp Web protocol via Baileys): it only ever messages you, but WhatsApp may restrict accounts that automate messaging - use Discord or Telegram if that worries you. The session lives in .job-apply-kit/wa-auth (gitignored, and the agent is blocked from touching it).

Replies (any channel)

| Reply | Effect | |---|---| | SUBMIT ABC123 (or the Submit button) | approve and send that application | | CHANGE ABC123 use my school email | nothing is sent; Claude fixes it and posts a new code | | SKIP ABC123 | drop it | | queue | pipeline status | | anything else (text, photos, files) | passed to Claude |

Safety model

  • The agent drives the browser only through tools/jobs_browser.py, which refuses submit-like clicks, Enter on filled forms, raw input events and scripted submits.
  • Sends happen only through tools/submit_gate.py, which needs an approval for the exact manifest hash (fields + attachments), re-reads the live page, and records the result.
  • Claude Code hooks block the agent from creating approvals itself, scripting around the tools, editing the gate / bots / hooks, or touching channel credentials and the WhatsApp session.
  • The agent never solves captchas, never invents answers (it asks you), and never fills the same application twice.
  • Your profile, answers, accounts, browser profile and .env stay in your workspace and are gitignored. Keep the workspace repo private.

Commands

job-apply-kit setup [dir]     create + configure a workspace
job-apply-kit bot             run the approval bot
job-apply-kit browser [url]   open the signed-in job browser
job-apply-kit channel         switch Discord / Telegram / WhatsApp / terminal
job-apply-kit doctor          check everything

Responsible use

Applying is still you applying: review every sheet, follow each site's terms of use, and keep search volume at a human pace. You are responsible for what you submit.

License

MIT - see LICENSE.