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

pi-job-search

v0.1.0

Published

A local-first Pi package for discovering jobs, ranking fit, drafting applications, and tracking outcomes.

Readme

🧭 pi-job-search

npm version npm downloads Pi package License: MIT

A local-first job-search workspace for Pi. Discover suitable roles, import job descriptions, rank fit, draft grounded applications, prepare for interviews, and track outcomes—without sending applications or email on your behalf.

Install

Install the public package from inside Pi:

pi install npm:pi-job-search

Restart Pi, or run /reload if it is already running. Then initialize your local workspace:

/setup

The package stores candidate data, documents, search state, applications, and reports in .pi-job-search/. The directory is local workspace state and is added to .gitignore during setup.

The core workflow

/setup → /scrape or /import → /rank → /apply → /outcome → /followup or /interview

1. Set up your profile

/setup builds a versioned profile from CVs, documents, interview answers, or direct user input. Facts retain provenance and inferred claims remain distinguishable from approved facts.

2. Discover or import jobs

Automated discovery uses stable public sources:

| Source | Access | Search behavior | | --- | --- | --- | | Himalayas | Public JSON API | Provider-side keyword, country, timezone, seniority, and employment filters | | We Work Remotely | Public RSS | Category feed plus local keyword filtering | | Remote OK | Public JSON feed | Local filtering by title, tags, and location; attribution preserved |

Use /scrape with keyword, country, timezone, seniority, employment type, category, remote-only, and result-limit filters. Results are normalized into one shared job format, deduplicated, and saved locally.

For LinkedIn, SEEK, login-walled pages, or any blocked source, use /import instead:

  • paste the job description;
  • provide a .txt or .md file; or
  • provide a public URL for one best-effort request.

URL imports parse public JSON-LD, metadata, and visible content. They report complete, partial, and failed extraction separately. They never automate login, bypass CAPTCHA, evade bot protection, or retry aggressively.

3. Rank fit before applying

/rank evaluates technical fit, experience, behavioral fit, and career alignment. Work-rights and location gates can veto an otherwise high score. Every recommendation includes its evidence and fit verdict.

4. Draft, verify, and track

/apply creates draft-only CV, cover-letter, and application-form materials grounded in approved facts. Documents are verified for page count, extractable text, required content, forbidden content, and ATS keywords.

/outcome records application progress. /followup creates capped, draft-only thank-you and follow-up messages. /interview creates stage-specific preparation packs and a one-question-at-a-time mock interview. /html-report renders a self-contained offline tracker report.

Commands

| Command | Purpose | | --- | --- | | /setup | Create or update the candidate profile | | /reset | Preview and reset profile or document state | | /scrape | Search the enabled public job sources | | /import | Import pasted text, .txt/.md files, or public URLs | | /rank | Score and gate job fit | | /apply | Draft and verify application materials | | /outcome | Record application outcomes | | /followup | Draft follow-up messages; never sends them | | /interview | Prepare for interviews and run mock questions | | /expand | Propose profile competency expansions with approval | | /upskill | Find hard and preferred skill gaps | | /html-report | Generate an offline application dashboard | | /gmail-auth | Authorize optional read-only Gmail access | | /gmail-sync | Propose outcome updates from Gmail messages | | /add-template | Add a compile-validated document template | | /add-portal | Investigate and scaffold a fixture-verified portal |

Safety and privacy

  • No auto-submit: applications are drafts and require user review.
  • No email sending: follow-ups are drafts only.
  • Read-only Gmail: sync can list and read messages but cannot send, delete, label, archive, or modify mail.
  • Untrusted job text: descriptions and application instructions are treated as data, never as Pi commands.
  • Bounded source access: public endpoints only, with timeouts, retries where appropriate, attribution, and isolated failures.
  • Local-first state: profile, documents, tracker data, Gmail state, and generated artifacts stay in the ignored .pi-job-search/ workspace.

Pi packages execute code with the permissions of the user running Pi. Review the source before installing any third-party package.

Gmail integration

Gmail is optional. Create a Google Cloud Desktop OAuth client with the read-only Gmail scope, then configure:

export GMAIL_CLIENT_ID="..."
export GMAIL_CLIENT_SECRET="..." # optional for Desktop clients

Run /gmail-auth once. PKCE authorization uses a loopback callback, and the refresh token is stored outside the project in macOS Keychain when available, or a user-only file under ~/.config/pi-job-search/.

For contributors

git clone https://github.com/sovorn-c/pi-job-search.git
cd pi-job-search
npm ci --ignore-scripts
npm run typecheck
npm test
npm run verify:release

To test the local package without publishing:

pi -e .

Attribution and license

MIT licensed. This is an independent clean-room implementation informed by the observable workflow concepts and documentation of the MIT-licensed ai-job-search project. No source code is copied and no source-code identity is claimed. See NOTICE.md.