The Problem
Job searching for coding agents is fragmented. Agents can scrape job boards, but they lack a structured, frequently refreshed dataset of postings and a way to evaluate them against a candidate's profile. Pinloop supplies a hosted, hourly-updated pool of 10,000+ postings from 4,000+ employers plus an AI-judging pipeline that runs either server-side or through the agent's own model subscription.
What This Does
Pinloop is a Node CLI written in TypeScript (21 source files). It acts as a thin client to Pinloop's servers: the server holds the postings, your resume, and preferences; the CLI invokes AI models to judge postings against your profile. The CLI is designed to be driven by a coding agent (Claude Code, Codex, Cursor), not typed by a human. pinloop prints agent-directed instructions; pinloop welcome runs a structured onboarding flow; pinloop guide prints full usage documentation.
How It Is Wired
Execution starts at the pinloop binary defined in package.json. Code splits into src/cli/ (interaction: browser-login.ts, screen.ts, rows.ts, format.ts, paths.ts, pinloop.ts, version.ts) and src/shared/ (domain logic: billing.ts, coverage.ts, filter.ts, limits.ts, model-calls.ts, registry.ts, sign-in.ts, skill-file.ts, verdicts.ts, welcome.ts).
The full call graph has not been mapped for this repository. The file set implies the flow: registry.ts likely routes commands; welcome.ts and guide.ts drive onboarding; sign-in.ts and browser-login.ts handle passwordless browser auth; model-calls.ts wraps AI invocations; verdicts.ts, coverage.ts, and filter.ts implement judgment and search. Per the README, every command except the guide requires an account and talks to Pinloop's servers — so the CLI makes network calls for auth, search, judging, and billing.
The widest blast radius sits in src/shared/, the domain logic shared across all commands. A change to verdicts.ts or model-calls.ts affects every judging path. Absent a lockfile, installs are non-reproducible.
How To Use It
Setup: npm install -g pinloop (requires Node 22+).
Configuration: no environment variables are documented in the repo. Account creation happens via pinloop login, which opens a browser.
Running: paste this into a coding agent:
Run npm install -g pinloop, then run pinloop welcome and follow the instructions.
Or run pinloop directly for the agent-directed instructions.
Real-World Use
A developer runs pinloop welcome in Claude Code. The agent installs the CLI, walks through browser login, uploads a resume as a skill file (src/shared/skill-file.ts), and runs a scheduled routine (pinloop upgrade unlocks unattended watches). The agent evaluates postings locally with its own model subscription and uploads judgments, avoiding Pinloop's paid judging quota.
Code Health & Issues
Static analysis findings (heuristic — verify against the code):
- Med — no test files detected — repository-wide; untested code paths
- Med — no CI/CD pipeline — no automated build/test gate in
.github/or CI config - Low — no lockfile — non-reproducible builds from
package.json
Beyond that: MIT license, README, and demo GIF are present. Onboarding docs exist (welcome.ts, guide.ts), but there are no contributing guidelines or architecture documentation.
The Bottom Line
A cleanly structured thin client with sensible separation between CLI interaction and shared domain logic. The main risks are the absence of tests, CI, and a lockfile for a tool that handles auth and billing. It is a fork of pinloop-ai/pinloop-cli (279 stars upstream) and is most useful to developers who already work through coding agents; the hosted backend does the heavy lifting, keeping the CLI itself lightweight.