careerclaw-js 1.4.0 → 1.6.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/CHANGELOG.md +21 -0
- package/SKILL.md +1 -1
- package/dist/briefing.d.ts +2 -0
- package/dist/briefing.d.ts.map +1 -1
- package/dist/briefing.js +13 -4
- package/dist/briefing.js.map +1 -1
- package/dist/config.d.ts +39 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -1
- package/dist/config.js.map +1 -1
- package/dist/core/skill-taxonomy.d.ts +24 -0
- package/dist/core/skill-taxonomy.d.ts.map +1 -0
- package/dist/core/skill-taxonomy.js +344 -0
- package/dist/core/skill-taxonomy.js.map +1 -0
- package/dist/matching/engine.d.ts +16 -1
- package/dist/matching/engine.d.ts.map +1 -1
- package/dist/matching/engine.js +30 -1
- package/dist/matching/engine.js.map +1 -1
- package/dist/matching/index.d.ts +2 -2
- package/dist/matching/index.d.ts.map +1 -1
- package/dist/matching/index.js +2 -2
- package/dist/matching/index.js.map +1 -1
- package/dist/matching/scoring.d.ts +40 -31
- package/dist/matching/scoring.d.ts.map +1 -1
- package/dist/matching/scoring.js +64 -53
- package/dist/matching/scoring.js.map +1 -1
- package/dist/matching/semantic-scoring.d.ts +31 -0
- package/dist/matching/semantic-scoring.d.ts.map +1 -0
- package/dist/matching/semantic-scoring.js +140 -0
- package/dist/matching/semantic-scoring.js.map +1 -0
- package/dist/models.d.ts +13 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,27 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [1.6.0](https://github.com/orestes-garcia-martinez/careerclaw-js/compare/careerclaw-js-v1.5.0...careerclaw-js-v1.6.0) (2026-04-01)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* **matching:** add hybrid semantic matching via skill taxonomy ([#46](https://github.com/orestes-garcia-martinez/careerclaw-js/issues/46)) ([004283a](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/004283af86f27ad0b105cbb5fa4ee196d4f99fc2))
|
|
15
|
+
|
|
16
|
+
## [1.5.0](https://github.com/orestes-garcia-martinez/careerclaw-js/compare/careerclaw-js-v1.4.0...careerclaw-js-v1.5.0) (2026-03-30)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* **models:** expose resume_intel on BriefingResult ([18fb459](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/18fb459d6a394d47acbdda8fef4a4b470575594c))
|
|
22
|
+
* **models:** expose resume_intel on BriefingResult ([c475616](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/c4756162aaf63c6fd3cc42748c8aa33e51462aba))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Documentation
|
|
26
|
+
|
|
27
|
+
* slim CLAUDE.md and move knowledge into on-demand skills ([ef4b0c8](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/ef4b0c821df7488be670181f611b6920ccbd7b89))
|
|
28
|
+
* slim CLAUDE.md and move knowledge into on-demand skills ([8b20f9c](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/8b20f9c6d0612ce9c1406bb97018eb0cba7e4283))
|
|
29
|
+
|
|
9
30
|
## [1.4.0](https://github.com/orestes-garcia-martinez/careerclaw-js/compare/careerclaw-js-v1.3.0...careerclaw-js-v1.4.0) (2026-03-28)
|
|
10
31
|
|
|
11
32
|
|
package/SKILL.md
CHANGED
package/dist/briefing.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export interface BriefingOptions {
|
|
|
22
22
|
fetchFn?: () => Promise<FetchResult>;
|
|
23
23
|
repo?: TrackingRepository;
|
|
24
24
|
resumeIntel?: ResumeIntelligence;
|
|
25
|
+
resumeText?: string;
|
|
25
26
|
proKey?: string;
|
|
26
27
|
enhanceFetchFn?: EnhanceOptions["fetchFn"];
|
|
27
28
|
licenseFetchFn?: CheckLicenseOptions["fetchFn"];
|
|
@@ -37,6 +38,7 @@ export interface ContextBriefingOptions {
|
|
|
37
38
|
fetchFn?: () => Promise<FetchResult>;
|
|
38
39
|
repo?: TrackingRepository;
|
|
39
40
|
resumeIntel?: ResumeIntelligence;
|
|
41
|
+
resumeText?: string;
|
|
40
42
|
enhanceFetchFn?: EnhanceOptions["fetchFn"];
|
|
41
43
|
/** 0-based indices into the matches array to generate cover letters for. */
|
|
42
44
|
coverLetterMatchIndices?: number[];
|
package/dist/briefing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,WAAW,EACX,iBAAiB,EAEjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAcD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,cAAc,CAAC,CAKzB;
|
|
1
|
+
{"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,WAAW,EACX,iBAAiB,EAEjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAcD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,cAAc,CAAC,CAKzB;AAyLD,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAkCtB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,kBAAkB,GAC9B,iBAAiB,CAQnB"}
|
package/dist/briefing.js
CHANGED
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
import { randomUUID } from "crypto";
|
|
14
14
|
import { createRequire } from "module";
|
|
15
15
|
import { fetchAllJobs } from "./sources.js";
|
|
16
|
-
import { rankJobs } from "./matching/index.js";
|
|
16
|
+
import { rankJobs, rankJobsHybrid } from "./matching/index.js";
|
|
17
17
|
import { draftOutreach, buildTemplateCoverLetter } from "./drafting.js";
|
|
18
18
|
import { enhanceDraft, generateCoverLetter } from "./llm-enhance.js";
|
|
19
19
|
import { checkLicense } from "./license.js";
|
|
20
20
|
import { TrackingRepository } from "./tracking.js";
|
|
21
|
-
import { DEFAULT_TOP_K, FREE_TOP_K, PRO_TOP_K } from "./config.js";
|
|
21
|
+
import { DEFAULT_TOP_K, FREE_TOP_K, PRO_TOP_K, SEMANTIC_MATCHING } from "./config.js";
|
|
22
22
|
import { gapAnalysis } from "./gap.js";
|
|
23
23
|
import { CAREERCLAW_FEATURES, hasCareerClawFeature, } from "./execution-context.js";
|
|
24
24
|
export async function runBriefing(profile, options = {}) {
|
|
@@ -40,7 +40,7 @@ export async function runBriefingWithContext(profile, context, options = {}) {
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
async function runBriefingInternal(profile, options, executionMode) {
|
|
43
|
-
const { topK = DEFAULT_TOP_K, dryRun = false, fetchFn = fetchAllJobs, repo = new TrackingRepository({ dryRun }), resumeIntel, enhanceFetchFn, coverLetterMatchIndices = [], gapAnalysisMatchIndices = [], } = options;
|
|
43
|
+
const { topK = DEFAULT_TOP_K, dryRun = false, fetchFn = fetchAllJobs, repo = new TrackingRepository({ dryRun }), resumeIntel, resumeText, enhanceFetchFn, coverLetterMatchIndices = [], gapAnalysisMatchIndices = [], } = options;
|
|
44
44
|
const isProActive = await resolvePremiumDraftAccess(executionMode, resumeIntel);
|
|
45
45
|
// Enforce tier-aware topK ceiling — the engine must not trust the caller.
|
|
46
46
|
// ClawOS checks the specific TOPK_EXTENDED feature (separate from draft access).
|
|
@@ -64,7 +64,15 @@ async function runBriefingInternal(profile, options, executionMode) {
|
|
|
64
64
|
const fetchMs = Date.now() - fetchStart;
|
|
65
65
|
const { jobs, counts: sourceCounts } = fetchResult;
|
|
66
66
|
const rankStart = Date.now();
|
|
67
|
-
const matches = jobs.length
|
|
67
|
+
const matches = jobs.length === 0
|
|
68
|
+
? []
|
|
69
|
+
: SEMANTIC_MATCHING.ENABLED
|
|
70
|
+
? await rankJobsHybrid(jobs, profile, {
|
|
71
|
+
limit: clampedTopK,
|
|
72
|
+
...(resumeText !== undefined ? { resumeText } : {}),
|
|
73
|
+
...(resumeIntel !== undefined ? { resumeIntel } : {}),
|
|
74
|
+
})
|
|
75
|
+
: rankJobs(jobs, profile, clampedTopK);
|
|
68
76
|
const rankMs = Date.now() - rankStart;
|
|
69
77
|
const draftStart = Date.now();
|
|
70
78
|
const drafts = await Promise.all(matches.map(async (scored) => {
|
|
@@ -135,6 +143,7 @@ async function runBriefingInternal(profile, options, executionMode) {
|
|
|
135
143
|
run,
|
|
136
144
|
matches,
|
|
137
145
|
drafts,
|
|
146
|
+
resume_intel: resumeIntel ?? null,
|
|
138
147
|
cover_letters: coverLetters,
|
|
139
148
|
gap_analyses: gapAnalyses,
|
|
140
149
|
tracking: {
|
package/dist/briefing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAYvC,OAAO,EAAE,YAAY,EAAoB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/
|
|
1
|
+
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare const HTTP_TIMEOUT_MS = 15000;
|
|
|
19
19
|
* User-Agent sent with all outbound requests.
|
|
20
20
|
* Identifies the tool and provides a contact point per robots.txt convention.
|
|
21
21
|
*/
|
|
22
|
-
export declare const USER_AGENT = "careerclaw-js/1.
|
|
22
|
+
export declare const USER_AGENT = "careerclaw-js/1.6.0 (https://github.com/orestes-garcia-martinez/careerclaw-js)";
|
|
23
23
|
/** RemoteOK RSS feed — public, no auth required. */
|
|
24
24
|
export declare const REMOTEOK_RSS_URL = "https://remoteok.com/remote-jobs.rss";
|
|
25
25
|
/**
|
|
@@ -45,6 +45,44 @@ export declare const DEFAULT_TOP_K = 3;
|
|
|
45
45
|
export declare const FREE_TOP_K = 3;
|
|
46
46
|
/** Maximum topK for Pro tier users. */
|
|
47
47
|
export declare const PRO_TOP_K = 10;
|
|
48
|
+
export declare const SEMANTIC_MATCHING: {
|
|
49
|
+
readonly ENABLED: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Blend of the enhanced lexical score and the taxonomy-based semantic score
|
|
52
|
+
* within the hybrid signal input.
|
|
53
|
+
*
|
|
54
|
+
* signalInput = lexical × LEXICAL + semantic × SEMANTIC
|
|
55
|
+
*
|
|
56
|
+
* Increase SEMANTIC if taxonomy coverage is broad and you trust concept
|
|
57
|
+
* resolution; decrease it if the taxonomy is thin and lexical overlap is
|
|
58
|
+
* the more reliable signal.
|
|
59
|
+
*/
|
|
60
|
+
readonly WEIGHTS: {
|
|
61
|
+
readonly LEXICAL: 0.55;
|
|
62
|
+
readonly SEMANTIC: 0.45;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Blend of taxonomy concept matches vs. verbatim phrase matches within
|
|
66
|
+
* the semantic score itself.
|
|
67
|
+
*
|
|
68
|
+
* semanticScore = conceptScore × CONCEPT + phraseScore × PHRASE
|
|
69
|
+
*
|
|
70
|
+
* Concepts (taxonomy alias resolution) are high-precision but
|
|
71
|
+
* taxonomy-bounded — they only fire when both sides resolve to the same
|
|
72
|
+
* canonical key. Phrases (verbatim multi-gram matches) are the fallback
|
|
73
|
+
* for niche industry terms the taxonomy does not yet cover.
|
|
74
|
+
*
|
|
75
|
+
* Current 80/20 default is conservative: it favours the reliable concept
|
|
76
|
+
* signal while the taxonomy is still in Phase 1 (healthcare, finance,
|
|
77
|
+
* tech, trades). As taxonomy coverage grows thinner for niche domains,
|
|
78
|
+
* shifting toward 60/40 is a reasonable next step — validate against
|
|
79
|
+
* real match outcomes before changing.
|
|
80
|
+
*/
|
|
81
|
+
readonly CONCEPT_PHRASE_WEIGHTS: {
|
|
82
|
+
readonly CONCEPT: 0.8;
|
|
83
|
+
readonly PHRASE: 0.2;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
48
86
|
/**
|
|
49
87
|
* Provider-specific LLM keys for draft enhancement (recommended).
|
|
50
88
|
* These take precedence over the legacy CAREERCLAW_LLM_KEY.
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,eAAO,MAAM,cAAc,EAAE,MAGS,CAAC;AAEvC,eAAO,MAAM,YAAY,EAAE,MAA6C,CAAC;AACzE,eAAO,MAAM,aAAa,EAAE,MAA8C,CAAC;AAC3E,eAAO,MAAM,SAAS,EAAE,MAA2C,CAAC;AACpE,eAAO,MAAM,eAAe,EAAE,MAA2C,CAAC;AAC1E,eAAO,MAAM,eAAe,EAAE,MAA2C,CAAC;AAC1E,eAAO,MAAM,kBAAkB,EAAE,MAGhC,CAAC;AAMF,+DAA+D;AAC/D,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,UAAU,mFAC0D,CAAC;AAMlF,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAGjC,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,kEAAkE;AAClE,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC,uEAAuE;AACvE,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,wCAAwC;AACxC,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,uCAAuC;AACvC,eAAO,MAAM,SAAS,KAAK,CAAC;AAM5B;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,GAAG,SACD,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG,SACD,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,GAAG,SAA6C,CAAC;AAEjF,qEAAqE;AACrE,eAAO,MAAM,YAAY,EAAE,MAC2B,CAAC;AAEvD,yEAAyE;AACzE,eAAO,MAAM,SAAS,EAAE,MAC2C,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,MAEiC,CAAC;AAE1D,8DAA8D;AAC9D,eAAO,MAAM,eAAe,EAAE,MAG7B,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,yBAAyB,EAAE,MAGvC,CAAC;AAMF,6FAA6F;AAC7F,eAAO,MAAM,OAAO,EAAE,MAAM,GAAG,SAA6C,CAAC;AAM7E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAO5D,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,QAC0B,CAAC;AAE1D,+EAA+E;AAC/E,eAAO,MAAM,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,eAAO,MAAM,cAAc,EAAE,MAGS,CAAC;AAEvC,eAAO,MAAM,YAAY,EAAE,MAA6C,CAAC;AACzE,eAAO,MAAM,aAAa,EAAE,MAA8C,CAAC;AAC3E,eAAO,MAAM,SAAS,EAAE,MAA2C,CAAC;AACpE,eAAO,MAAM,eAAe,EAAE,MAA2C,CAAC;AAC1E,eAAO,MAAM,eAAe,EAAE,MAA2C,CAAC;AAC1E,eAAO,MAAM,kBAAkB,EAAE,MAGhC,CAAC;AAMF,+DAA+D;AAC/D,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,UAAU,mFAC0D,CAAC;AAMlF,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAGjC,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,kEAAkE;AAClE,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC,uEAAuE;AACvE,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,wCAAwC;AACxC,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,uCAAuC;AACvC,eAAO,MAAM,SAAS,KAAK,CAAC;AAM5B,eAAO,MAAM,iBAAiB;;IAG7B;;;;;;;;;OASG;;;;;IAMH;;;;;;;;;;;;;;;;OAgBG;;;;;CAKM,CAAC;AAMX;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,GAAG,SACD,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG,SACD,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,GAAG,SAA6C,CAAC;AAEjF,qEAAqE;AACrE,eAAO,MAAM,YAAY,EAAE,MAC2B,CAAC;AAEvD,yEAAyE;AACzE,eAAO,MAAM,SAAS,EAAE,MAC2C,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,MAEiC,CAAC;AAE1D,8DAA8D;AAC9D,eAAO,MAAM,eAAe,EAAE,MAG7B,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,yBAAyB,EAAE,MAGvC,CAAC;AAMF,6FAA6F;AAC7F,eAAO,MAAM,OAAO,EAAE,MAAM,GAAG,SAA6C,CAAC;AAM7E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAO5D,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,QAC0B,CAAC;AAE1D,+EAA+E;AAC/E,eAAO,MAAM,cAAc,yBAAyB,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -34,7 +34,7 @@ export const HTTP_TIMEOUT_MS = 15_000;
|
|
|
34
34
|
* User-Agent sent with all outbound requests.
|
|
35
35
|
* Identifies the tool and provides a contact point per robots.txt convention.
|
|
36
36
|
*/
|
|
37
|
-
export const USER_AGENT = "careerclaw-js/1.
|
|
37
|
+
export const USER_AGENT = "careerclaw-js/1.6.0 (https://github.com/orestes-garcia-martinez/careerclaw-js)";
|
|
38
38
|
// ---------------------------------------------------------------------------
|
|
39
39
|
// Job sources
|
|
40
40
|
// ---------------------------------------------------------------------------
|
|
@@ -67,6 +67,47 @@ export const FREE_TOP_K = 3;
|
|
|
67
67
|
/** Maximum topK for Pro tier users. */
|
|
68
68
|
export const PRO_TOP_K = 10;
|
|
69
69
|
// ---------------------------------------------------------------------------
|
|
70
|
+
// Semantic matching
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
export const SEMANTIC_MATCHING = {
|
|
73
|
+
ENABLED: (process.env["CAREERCLAW_SEMANTIC_MATCHING"] ?? "true") !== "false",
|
|
74
|
+
/**
|
|
75
|
+
* Blend of the enhanced lexical score and the taxonomy-based semantic score
|
|
76
|
+
* within the hybrid signal input.
|
|
77
|
+
*
|
|
78
|
+
* signalInput = lexical × LEXICAL + semantic × SEMANTIC
|
|
79
|
+
*
|
|
80
|
+
* Increase SEMANTIC if taxonomy coverage is broad and you trust concept
|
|
81
|
+
* resolution; decrease it if the taxonomy is thin and lexical overlap is
|
|
82
|
+
* the more reliable signal.
|
|
83
|
+
*/
|
|
84
|
+
WEIGHTS: {
|
|
85
|
+
LEXICAL: 0.55,
|
|
86
|
+
SEMANTIC: 0.45,
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* Blend of taxonomy concept matches vs. verbatim phrase matches within
|
|
90
|
+
* the semantic score itself.
|
|
91
|
+
*
|
|
92
|
+
* semanticScore = conceptScore × CONCEPT + phraseScore × PHRASE
|
|
93
|
+
*
|
|
94
|
+
* Concepts (taxonomy alias resolution) are high-precision but
|
|
95
|
+
* taxonomy-bounded — they only fire when both sides resolve to the same
|
|
96
|
+
* canonical key. Phrases (verbatim multi-gram matches) are the fallback
|
|
97
|
+
* for niche industry terms the taxonomy does not yet cover.
|
|
98
|
+
*
|
|
99
|
+
* Current 80/20 default is conservative: it favours the reliable concept
|
|
100
|
+
* signal while the taxonomy is still in Phase 1 (healthcare, finance,
|
|
101
|
+
* tech, trades). As taxonomy coverage grows thinner for niche domains,
|
|
102
|
+
* shifting toward 60/40 is a reasonable next step — validate against
|
|
103
|
+
* real match outcomes before changing.
|
|
104
|
+
*/
|
|
105
|
+
CONCEPT_PHRASE_WEIGHTS: {
|
|
106
|
+
CONCEPT: 0.8,
|
|
107
|
+
PHRASE: 0.2,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
70
111
|
// LLM (Pro tier)
|
|
71
112
|
// ---------------------------------------------------------------------------
|
|
72
113
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface SkillNode {
|
|
2
|
+
aliases: string[];
|
|
3
|
+
related: string[];
|
|
4
|
+
credentials?: string[];
|
|
5
|
+
parent?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Focused cross-industry taxonomy for Phase 1 semantic matching.
|
|
9
|
+
*
|
|
10
|
+
* This is intentionally curated rather than exhaustive. It should cover
|
|
11
|
+
* the highest-signal alias / credential / abbreviation patterns that cause
|
|
12
|
+
* obvious false negatives in job matching today.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SKILL_TAXONOMY: Record<string, SkillNode>;
|
|
15
|
+
export declare function normalizeSkill(skill: string): string;
|
|
16
|
+
export declare function getCanonicalSkill(skill: string): string | null;
|
|
17
|
+
export declare function getSkillAliases(skill: string): string[];
|
|
18
|
+
export declare function getRelatedSkills(skill: string): string[];
|
|
19
|
+
export declare function getCredentials(skill: string): string[];
|
|
20
|
+
export declare function expandSkills(skills: string[]): string[];
|
|
21
|
+
export declare function extractCanonicalSkillsFromText(text: string): string[];
|
|
22
|
+
export declare function expandCanonicalSkills(canonicalSkills: string[]): string[];
|
|
23
|
+
export declare function isKnownSkill(skill: string): boolean;
|
|
24
|
+
//# sourceMappingURL=skill-taxonomy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-taxonomy.d.ts","sourceRoot":"","sources":["../../src/core/skill-taxonomy.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAgPpD,CAAC;AAmBF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAIvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAItD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAiBvD;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBrE;AAED,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAiBzE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD"}
|