How arcgent/linkedin-icp-sorter works
LinkedIn ICP Sorter turns a LinkedIn connections CSV into privacy-separated records, enriches them optionally with post engagement, and asks Jev to classify each connection into configurable buckets. Users can run one decision or a batch, inspect confidence and costs, label answers for comparison, and export results through the local app or CLI. The graph follows documented flows and sampled code; the browser-to-server wiring and some app routes are not shown in the excerpts, so those links are marked unverified.
Main entry points: server.mjs Local HTTP app · store.mjs Local data files · runner.mjs Decision runner · cli.mjs Terminal commands
Components 14
Data preparation
- Build records
scripts/build-records.mjs - Fetch engagement
scripts/fetch-engagement.mjs
Classification
- ICP setup
lib/setup.mjs - Decision runner
lib/runner.mjs - Jev client
lib/jev.mjs
Local app and review
- Terminal commands
cli.mjs - Local HTTP app
server.mjs - Browser interface
public/index.html
Local persistence
- Local data files
lib/store.mjs
Other components
- User
- Connections CSV
- Unipile API
- OpenRouter
- TypeSafe API
Connections 24
- User → Connections CSV: provides export
README.md - Connections CSV → Build records: supplies input
scripts/build-records.mjs - Build records → Local data files: writes records
scripts/build-records.mjs - User → Fetch engagement: requests enrichment
README.md - Fetch engagement → Unipile API: fetches activity
scripts/fetch-engagement.mjs - Fetch engagement → Local data files: saves engagement
scripts/fetch-engagement.mjs - Local data files → Build records: provides engagement
scripts/build-records.mjs - User → ICP setup: defines criteria
README.md - Terminal commands → ICP setup: loads setup
cli.mjs - Terminal commands → Local data files: loads records
cli.mjs - Terminal commands → Decision runner: runs decisions
cli.mjs - Local HTTP app → ICP setup: loads and saves
server.mjs - Local HTTP app → Local data files: reads and writes
server.mjs - Local HTTP app → Decision runner: dispatches decisions
server.mjs - Local HTTP app → Jev client: reads configuration
server.mjs - Decision runner → ICP setup: builds requests
lib/runner.mjs - Decision runner → Jev client: requests decisions
lib/runner.mjs - Decision runner → Local data files: saves runs
lib/runner.mjs - Jev client → OpenRouter: calls by default
lib/jev.mjs - Jev client → TypeSafe API: calls when configured
lib/jev.mjs - User → Terminal commands: runs terminal commands
README.md - User → Browser interface: uses app tabs
README.md - Browser interface → Local HTTP app: sends app requests
- Local HTTP app → User: returns results
README.md