jd-intel 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  > **Stop pasting job descriptions into AI assistants. Let your AI fetch them directly.**
11
11
 
12
- Full text. Clean structure. Across every major ATS. No copy-paste. No context loss.
12
+ Full text. Clean structure. Across seven major ATS. No copy-paste. No context loss.
13
13
 
14
14
  ---
15
15
 
@@ -40,9 +40,9 @@ Done.
40
40
  Because scraping breaks where jd-intel doesn't:
41
41
 
42
42
  - **Full JDs when browsing fails.** SPA-rendered boards, slow loads, auth walls, and geo-restrictions block a browser. They don't block a public API call.
43
- - **Structured data, not HTML soup.** Salary, location type, department, and clean markdown, normalized across every ATS.
43
+ - **Structured data, not HTML soup.** Salary, location type, department, and clean markdown, normalized across seven ATS.
44
44
  - **No keys, no browser.** Public APIs only. Runs anywhere your AI does.
45
- - **One schema, every platform.** Greenhouse, Lever, Ashby, SmartRecruiters, TeamTailor, Recruitee, Workday return the same shape.
45
+ - **One schema, every platform.** Greenhouse, Lever, Ashby, SmartRecruiters, Teamtailor, Recruitee, Workday return the same shape.
46
46
 
47
47
  ---
48
48
 
@@ -60,34 +60,57 @@ The toolkit fetches. Your AI thinks.
60
60
 
61
61
  ## Install
62
62
 
63
- Works with MCP-aware AI clients: Claude Desktop, Claude Code, Cursor, Windsurf. ChatGPT, Gemini, and other non-MCP clients don't support this yet. They use different tool-calling systems. (We wish they did. The protocol works the same way regardless of which AI you talk to.)
63
+ Works with MCP-aware AI clients: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code. ChatGPT, Gemini, and other non-MCP clients don't support this yet. They use different tool-calling systems. (We wish they did. The protocol works the same way regardless of which AI you talk to.)
64
64
 
65
- You'll need [Node.js 18 or newer](https://nodejs.org/). To check: open a terminal and run `node --version`. If it's missing or older, install from nodejs.org first.
65
+ ### Claude Desktop (one-file install, no terminal)
66
66
 
67
- ### For Claude Desktop (one command)
67
+ The simplest path. No Node.js, no terminal: Claude Desktop runs the server on its own bundled runtime.
68
68
 
69
- 1. **Open a terminal.** It's just a text window. Nothing destructive happens here.
70
- - **macOS:** Spotlight (`⌘ Space`), type "Terminal", hit Enter.
71
- - **Windows:** Start menu, type "PowerShell", hit Enter.
69
+ 1. **Download** the extension: [jd-intel.mcpb](https://github.com/prPMDev/jd-intel/releases/latest/download/jd-intel.mcpb).
70
+ 2. In Claude Desktop, open **Settings**, then **Extensions**, then **Advanced settings**, and click **Install Extension**. Pick the file you downloaded.
71
+ 3. Review the access summary, click **Install**, then start a new chat. The tools appear automatically.
72
72
 
73
- 2. **Paste this and hit Enter:**
74
- ```bash
75
- npx jd-intel-mcp install
76
- ```
73
+ Shortcuts: drag the `.mcpb` onto the Settings window, or double-click it when your system opens `.mcpb` files with Claude Desktop. The extension is open source and unsigned, so Claude Desktop shows an "unverified" notice. Choose **Install Anyway**.
77
74
 
78
- 3. **Quit and reopen Claude Desktop.** The tools appear automatically.
75
+ Prefer the terminal, or on an older Claude Desktop? Install [Node.js 18+](https://nodejs.org/), run `npx jd-intel-mcp install`, then reopen Claude Desktop. Or edit the config file directly, see [Manual install](#manual-install-fallback).
79
76
 
80
- Try: *"Find product roles at devtools companies."*
77
+ ### Other clients (Claude Code, Cursor, Windsurf, VS Code)
81
78
 
82
- If something goes wrong or you'd rather edit the config file directly, see [Manual install](#manual-install-fallback) below.
79
+ One-file `.mcpb` install is a Claude Desktop feature; these clients run the same server via `npx` and need [Node.js 18+](https://nodejs.org/).
83
80
 
84
- ### For Cursor and Windsurf
81
+ **Claude Code**
82
+ ```bash
83
+ claude mcp add jd-intel -- npx -y jd-intel-mcp
84
+ ```
85
+
86
+ **Cursor** (Settings, then Tools & MCP, then New MCP Server, or edit `~/.cursor/mcp.json`):
87
+ ```json
88
+ {
89
+ "mcpServers": {
90
+ "jd-intel": { "command": "npx", "args": ["-y", "jd-intel-mcp"] }
91
+ }
92
+ }
93
+ ```
94
+
95
+ **Windsurf** (Settings, then Tools, then Windsurf Settings, then Add Server, or View Raw Config to edit `mcp_config.json`). Use the same `mcpServers` block as Cursor, then press refresh.
96
+
97
+ **VS Code** (Copilot agent mode): run the **MCP: Add Server** command, or create `.vscode/mcp.json`. The key is `servers` and the type is `stdio`:
98
+ ```json
99
+ {
100
+ "servers": {
101
+ "jd-intel": { "type": "stdio", "command": "npx", "args": ["-y", "jd-intel-mcp"] }
102
+ }
103
+ }
104
+ ```
105
+
106
+ ### Confirm it's working
85
107
 
86
- These clients have their own MCP setup flows. Follow their docs:
87
- - Cursor: [docs.cursor.com](https://docs.cursor.com)
88
- - Windsurf: [docs.windsurf.com](https://docs.windsurf.com)
108
+ Start a new chat and ask: **"What fintech companies are in your jd-intel registry?"** If it lists companies, you're set. Then try the real thing: *"Find senior PM roles open right now that I'd be a fit for."*
89
109
 
90
- Use this server config: `command: "npx"`, `args: ["-y", "jd-intel-mcp"]`.
110
+ **Tools not appearing?**
111
+ - Fully quit and reopen the client (quit, do not just close the window). Claude Desktop: system tray then Quit (Windows), or ⌘Q (macOS).
112
+ - For npx clients (Claude Code, Cursor, Windsurf, VS Code), run `npx clear-npx-cache`, then restart.
113
+ - Confirm `node --version` is 18 or newer for the npx paths. The one-click `.mcpb` does not need Node.
91
114
 
92
115
  ### For developers
93
116
 
@@ -133,21 +156,11 @@ Restart Claude Desktop.
133
156
 
134
157
  ### Updating
135
158
 
136
- `npx -y jd-intel-mcp` auto-updates within ~24 hours via npm's cache. To force an update immediately:
137
-
138
- ```bash
139
- npx clear-npx-cache
140
- ```
141
-
142
- Then quit and reopen Claude Desktop.
159
+ - **Claude Desktop extension (`.mcpb`):** install a newer `.mcpb` over the current one, or manage it in Settings, then Extensions. Remove and reinstall to reset.
160
+ - **npx clients (Claude Code, Cursor, Windsurf, VS Code):** `npx -y jd-intel-mcp` picks up new versions from npm's cache (within ~24h). Force it now with `npx clear-npx-cache`, then restart the client.
161
+ - **Library or CLI:** `npm install jd-intel@latest` (force latest) or `npm update jd-intel` (respect semver).
143
162
 
144
- If you installed the library or CLI directly:
145
-
146
- ```bash
147
- npm install jd-intel@latest # force latest
148
- # or
149
- npm update jd-intel # respect semver
150
- ```
163
+ The company registry refreshes on its own: jd-intel fetches the current list at startup and falls back to the bundled copy offline, so new companies show up without reinstalling.
151
164
 
152
165
  ---
153
166
 
@@ -208,7 +221,7 @@ No custom parsing per company.
208
221
  | Ashby | Shipped | Growing fast with startups |
209
222
  | Lever | Shipped | Common at mid-stage companies |
210
223
  | SmartRecruiters | Shipped | Enterprise and mid-market |
211
- | TeamTailor | Shipped | European startups and scale-ups |
224
+ | Teamtailor | Shipped | European startups and scale-ups |
212
225
  | Recruitee | Shipped | Dutch / EU SMBs and scale-ups |
213
226
  | Workday | Shipped | Large enterprises (registry-keyed) |
214
227
  | Personio | Planned | German / EU mid-market |
@@ -236,17 +249,17 @@ All filters AND together. Deep dive on patterns and gotchas: [docs/filters.md](d
236
249
 
237
250
  **Shipped**
238
251
  - Library, CLI, and MCP server (three surfaces of one toolkit)
239
- - Greenhouse, Ashby, Lever, SmartRecruiters, TeamTailor, Recruitee, Workday adapters
252
+ - Greenhouse, Ashby, Lever, SmartRecruiters, Teamtailor, Recruitee, Workday adapters
240
253
  - Title, topic, location, and date filters
241
254
  - Salary extraction from JD text
242
- - Verified company registry (160+ companies)
255
+ - Verified company registry (300+ companies)
243
256
 
244
257
  **Next**
245
258
  - Personio adapter (German / EU mid-market)
259
+ - Workable adapter (widget API; broad SMB coverage)
246
260
  - Anthropic MCP marketplace submission
247
261
 
248
262
  **Planned**
249
- - Workable adapter (parked — needs SPA shortcode resolution)
250
263
  - Temporal tracking (when roles open, close, reopen)
251
264
  - Change detection
252
265
  - Resume-aware fit scoring
package/package.json CHANGED
@@ -1,57 +1,60 @@
1
- {
2
- "name": "jd-intel",
3
- "version": "0.7.0",
4
- "description": "Fetch and normalize job descriptions across every major ATS (Greenhouse, Lever, Ashby, Workday, and more) for your AI assistant, no copy-paste.",
5
- "type": "module",
6
- "main": "src/index.js",
7
- "bin": {
8
- "jd-intel": "src/cli.js"
9
- },
10
- "files": [
11
- "src/",
12
- "registry/",
13
- "LICENSE"
14
- ],
15
- "scripts": {
16
- "test": "node --test test/*.test.js",
17
- "fetch": "node src/cli.js fetch",
18
- "search": "node src/cli.js search",
19
- "verify:registry": "node scripts/verify-registry.mjs"
20
- },
21
- "keywords": [
22
- "jobs",
23
- "job-description",
24
- "ats",
25
- "greenhouse",
26
- "lever",
27
- "ashby",
28
- "mcp",
29
- "ai",
30
- "claude",
31
- "hiring",
32
- "careers",
33
- "model-context-protocol",
34
- "anthropic",
35
- "cursor",
36
- "windsurf",
37
- "ai-tools",
38
- "ai-assistant",
39
- "job-search",
40
- "applicant-tracking-system",
41
- "developer-tools",
42
- "nodejs"
43
- ],
44
- "author": "Prashant R",
45
- "license": "MIT",
46
- "repository": {
47
- "type": "git",
48
- "url": "git+https://github.com/prPMDev/jd-intel.git"
49
- },
50
- "bugs": {
51
- "url": "https://github.com/prPMDev/jd-intel/issues"
52
- },
53
- "homepage": "https://github.com/prPMDev/jd-intel#readme",
54
- "engines": {
55
- "node": ">=18"
56
- }
57
- }
1
+ {
2
+ "name": "jd-intel",
3
+ "version": "0.8.0",
4
+ "description": "Fetch and normalize job descriptions across every major ATS (Greenhouse, Lever, Ashby, Workday, and more), for your AI assistant. No copy-paste.",
5
+ "type": "module",
6
+ "main": "src/index.js",
7
+ "bin": {
8
+ "jd-intel": "src/cli.js"
9
+ },
10
+ "files": [
11
+ "src/",
12
+ "registry/",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "test": "node --test test/*.test.js",
17
+ "fetch": "node src/cli.js fetch",
18
+ "search": "node src/cli.js search",
19
+ "verify:registry": "node scripts/verify-registry.mjs",
20
+ "sync:registry-pages": "node scripts/sync-pages-registry.mjs",
21
+ "pack:mcpb": "node scripts/build-mcpb.mjs",
22
+ "smoke:mcpb": "node scripts/smoke-mcpb.mjs"
23
+ },
24
+ "keywords": [
25
+ "jobs",
26
+ "job-description",
27
+ "ats",
28
+ "greenhouse",
29
+ "lever",
30
+ "ashby",
31
+ "mcp",
32
+ "ai",
33
+ "claude",
34
+ "hiring",
35
+ "careers",
36
+ "model-context-protocol",
37
+ "anthropic",
38
+ "cursor",
39
+ "windsurf",
40
+ "ai-tools",
41
+ "ai-assistant",
42
+ "job-search",
43
+ "applicant-tracking-system",
44
+ "developer-tools",
45
+ "nodejs"
46
+ ],
47
+ "author": "Prashant R",
48
+ "license": "MIT",
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "git+https://github.com/prPMDev/jd-intel.git"
52
+ },
53
+ "bugs": {
54
+ "url": "https://github.com/prPMDev/jd-intel/issues"
55
+ },
56
+ "homepage": "https://github.com/prPMDev/jd-intel#readme",
57
+ "engines": {
58
+ "node": ">=18"
59
+ }
60
+ }
@@ -1,49 +1,49 @@
1
- [
2
- {"slug": "notion", "name": "Notion", "sector": "productivity"},
3
- {"slug": "linear", "name": "Linear", "sector": "developer tools"},
4
- {"slug": "ramp", "name": "Ramp", "sector": "fintech"},
5
- {"slug": "resend", "name": "Resend", "sector": "developer tools"},
6
- {"slug": "clerk", "name": "Clerk", "sector": "developer tools"},
7
- {"slug": "railway", "name": "Railway", "sector": "developer tools"},
8
- {"slug": "drata", "name": "Drata", "sector": "security"},
9
- {"slug": "watershed", "name": "Watershed", "sector": "climate tech"},
10
- {"slug": "persona", "name": "Persona", "sector": "identity"},
11
- {"slug": "stytch", "name": "Stytch", "sector": "identity"},
12
- {"slug": "shiftkey", "name": "ShiftKey", "sector": "healthcare staffing"},
13
- {"slug": "gorgias", "name": "Gorgias", "sector": "customer support"},
14
- {"slug": "zapier", "name": "Zapier", "sector": "integration platform"},
15
- {"slug": "clickup", "name": "ClickUp", "sector": "productivity"},
16
- {"slug": "higharc", "name": "Higharc", "sector": "architecture tech"},
17
- {"slug": "mural", "name": "Mural", "sector": "collaboration"},
18
- {"slug": "ironcladhq", "name": "Ironclad", "sector": "legal tech"},
19
- {"slug": "wrapbook", "name": "Wrapbook", "sector": "entertainment payroll"},
20
- {"slug": "Tabs", "name": "Tabs", "sector": "fintech"},
21
- {"slug": "vibe", "name": "Vibe", "sector": "saas"},
22
- {"slug": "unicourt", "name": "UniCourt", "sector": "legal tech"},
23
- {"slug": "meridianlink", "name": "MeridianLink", "sector": "fintech"},
24
- {"slug": "Hippocratic AI", "name": "Hippocratic AI", "sector": "healthcare ai"},
25
- {"slug": "scan-com", "name": "Scan.com", "sector": "healthcare imaging"},
26
- {"slug": "hiive", "name": "Hiive", "sector": "marketplaces"},
27
- {"slug": "virtuous", "name": "Virtuous", "sector": "nonprofit crm"},
28
- {"slug": "jasper ai", "name": "Jasper", "sector": "ai writing"},
29
- {"slug": "openai", "name": "OpenAI", "sector": "ai research / llms"},
30
- {"slug": "harvey", "name": "Harvey", "sector": "legal ai"},
31
- {"slug": "elevenlabs", "name": "ElevenLabs", "sector": "ai voice / audio"},
32
- {"slug": "sierra", "name": "Sierra", "sector": "conversational ai"},
33
- {"slug": "cohere", "name": "Cohere", "sector": "ai / llms"},
34
- {"slug": "decagon", "name": "Decagon", "sector": "ai support agents"},
35
- {"slug": "vanta", "name": "Vanta", "sector": "security compliance"},
36
- {"slug": "cursor", "name": "Cursor", "sector": "ai dev tools"},
37
- {"slug": "replit", "name": "Replit", "sector": "ai coding platform"},
38
- {"slug": "etched", "name": "Etched", "sector": "ai hardware / chips"},
39
- {"slug": "perplexity", "name": "Perplexity", "sector": "ai search"},
40
- {"slug": "baseten", "name": "Baseten", "sector": "ml serving"},
41
- {"slug": "deepgram", "name": "Deepgram", "sector": "speech ai"},
42
- {"slug": "mercor", "name": "Mercor", "sector": "ai data / talent"},
43
- {"slug": "writer", "name": "Writer", "sector": "enterprise gen-ai"},
44
- {"slug": "supabase", "name": "Supabase", "sector": "backend / postgres"},
45
- {"slug": "sentry", "name": "Sentry", "sector": "observability"},
46
- {"slug": "cartesia", "name": "Cartesia", "sector": "voice ai"},
47
- {"slug": "workos", "name": "WorkOS", "sector": "auth / sso dev tools"},
48
- {"slug": "posthog", "name": "PostHog", "sector": "product analytics"}
49
- ]
1
+ [
2
+ {"slug": "notion", "name": "Notion", "sector": "productivity"},
3
+ {"slug": "linear", "name": "Linear", "sector": "developer tools"},
4
+ {"slug": "ramp", "name": "Ramp", "sector": "fintech"},
5
+ {"slug": "resend", "name": "Resend", "sector": "developer tools"},
6
+ {"slug": "clerk", "name": "Clerk", "sector": "developer tools"},
7
+ {"slug": "railway", "name": "Railway", "sector": "developer tools"},
8
+ {"slug": "drata", "name": "Drata", "sector": "security"},
9
+ {"slug": "watershed", "name": "Watershed", "sector": "climate tech"},
10
+ {"slug": "persona", "name": "Persona", "sector": "identity"},
11
+ {"slug": "stytch", "name": "Stytch", "sector": "identity"},
12
+ {"slug": "shiftkey", "name": "ShiftKey", "sector": "healthcare staffing"},
13
+ {"slug": "gorgias", "name": "Gorgias", "sector": "customer support"},
14
+ {"slug": "zapier", "name": "Zapier", "sector": "integration platform"},
15
+ {"slug": "clickup", "name": "ClickUp", "sector": "productivity"},
16
+ {"slug": "higharc", "name": "Higharc", "sector": "architecture tech"},
17
+ {"slug": "mural", "name": "Mural", "sector": "collaboration"},
18
+ {"slug": "ironcladhq", "name": "Ironclad", "sector": "legal tech"},
19
+ {"slug": "wrapbook", "name": "Wrapbook", "sector": "entertainment payroll"},
20
+ {"slug": "Tabs", "name": "Tabs", "sector": "fintech"},
21
+ {"slug": "vibe", "name": "Vibe", "sector": "saas"},
22
+ {"slug": "unicourt", "name": "UniCourt", "sector": "legal tech"},
23
+ {"slug": "meridianlink", "name": "MeridianLink", "sector": "fintech"},
24
+ {"slug": "Hippocratic AI", "name": "Hippocratic AI", "sector": "healthcare ai"},
25
+ {"slug": "scan-com", "name": "Scan.com", "sector": "healthcare imaging"},
26
+ {"slug": "hiive", "name": "Hiive", "sector": "marketplaces"},
27
+ {"slug": "virtuous", "name": "Virtuous", "sector": "nonprofit crm"},
28
+ {"slug": "jasper ai", "name": "Jasper", "sector": "ai writing"},
29
+ {"slug": "openai", "name": "OpenAI", "sector": "ai research / llms"},
30
+ {"slug": "harvey", "name": "Harvey", "sector": "legal ai"},
31
+ {"slug": "elevenlabs", "name": "ElevenLabs", "sector": "ai voice / audio"},
32
+ {"slug": "sierra", "name": "Sierra", "sector": "conversational ai"},
33
+ {"slug": "cohere", "name": "Cohere", "sector": "ai / llms"},
34
+ {"slug": "decagon", "name": "Decagon", "sector": "ai support agents"},
35
+ {"slug": "vanta", "name": "Vanta", "sector": "security compliance"},
36
+ {"slug": "cursor", "name": "Cursor", "sector": "ai dev tools"},
37
+ {"slug": "replit", "name": "Replit", "sector": "ai coding platform"},
38
+ {"slug": "etched", "name": "Etched", "sector": "ai hardware / chips"},
39
+ {"slug": "perplexity", "name": "Perplexity", "sector": "ai search"},
40
+ {"slug": "baseten", "name": "Baseten", "sector": "ml serving"},
41
+ {"slug": "deepgram", "name": "Deepgram", "sector": "speech ai"},
42
+ {"slug": "mercor", "name": "Mercor", "sector": "ai data / talent"},
43
+ {"slug": "writer", "name": "Writer", "sector": "enterprise gen-ai"},
44
+ {"slug": "supabase", "name": "Supabase", "sector": "backend / postgres"},
45
+ {"slug": "sentry", "name": "Sentry", "sector": "observability"},
46
+ {"slug": "cartesia", "name": "Cartesia", "sector": "voice ai"},
47
+ {"slug": "workos", "name": "WorkOS", "sector": "auth / sso dev tools"},
48
+ {"slug": "posthog", "name": "PostHog", "sector": "product analytics"}
49
+ ]