careerclaw-js 1.2.0 → 1.4.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 +48 -1
- package/dist/briefing.d.ts.map +1 -1
- package/dist/briefing.js +115 -5
- package/dist/briefing.js.map +1 -1
- package/dist/cli.js +88 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -2
- package/dist/config.js.map +1 -1
- package/dist/drafting.d.ts +22 -4
- package/dist/drafting.d.ts.map +1 -1
- package/dist/drafting.js +69 -3
- package/dist/drafting.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/llm-enhance.d.ts +14 -0
- package/dist/llm-enhance.d.ts.map +1 -1
- package/dist/llm-enhance.js +120 -23
- package/dist/llm-enhance.js.map +1 -1
- package/dist/models.d.ts +41 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js.map +1 -1
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +12 -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.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
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* add cover letter generation and gap analysis to briefing pipeline ([d2ca27d](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/d2ca27d8d5cf63c68fb258e1105e1fc8140577f4))
|
|
15
|
+
* add cover letter generation and gap analysis to briefing pipeline ([e1fb676](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/e1fb6760b1a6e5287a7f667d85dcbecf44f01e3e))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
|
|
20
|
+
* add manual test tasks for CLI and ClawOS user to CLAUDE.md ([5c93a78](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/5c93a789065a0a400035a92f7f9f320f784c016d))
|
|
21
|
+
|
|
22
|
+
## [1.3.0](https://github.com/orestes-garcia-martinez/careerclaw-js/compare/careerclaw-js-v1.2.0...careerclaw-js-v1.3.0) (2026-03-27)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* **briefing:** enforce tier-aware topK ceiling ([5073061](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/50730612a323b709ccbe523651df8a5bc6c7211b))
|
|
28
|
+
* **briefing:** enforce tier-aware topK ceiling ([6897c4e](https://github.com/orestes-garcia-martinez/careerclaw-js/commit/6897c4ec98275c12c533369aaa0138976df350ee))
|
|
29
|
+
|
|
9
30
|
## [1.2.0](https://github.com/orestes-garcia-martinez/careerclaw-js/compare/careerclaw-js-v1.1.0...careerclaw-js-v1.2.0) (2026-03-27)
|
|
10
31
|
|
|
11
32
|
|
package/SKILL.md
CHANGED
package/dist/briefing.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ClawOS after upstream entitlement verification. It enables premium
|
|
11
11
|
* behavior from an in-memory execution context rather than a public CLI flag.
|
|
12
12
|
*/
|
|
13
|
-
import type { UserProfile, BriefingResult, ResumeIntelligence } from "./models.js";
|
|
13
|
+
import type { UserProfile, ScoredJob, CoverLetter, GapAnalysisReport, BriefingResult, ResumeIntelligence, GapAnalysisResult } from "./models.js";
|
|
14
14
|
import { type FetchResult } from "./sources.js";
|
|
15
15
|
import { type EnhanceOptions } from "./llm-enhance.js";
|
|
16
16
|
import { type CheckLicenseOptions } from "./license.js";
|
|
@@ -26,6 +26,10 @@ export interface BriefingOptions {
|
|
|
26
26
|
enhanceFetchFn?: EnhanceOptions["fetchFn"];
|
|
27
27
|
licenseFetchFn?: CheckLicenseOptions["fetchFn"];
|
|
28
28
|
licenseCachePath?: string;
|
|
29
|
+
/** 0-based indices into the matches array to generate cover letters for. */
|
|
30
|
+
coverLetterMatchIndices?: number[];
|
|
31
|
+
/** 0-based indices into the matches array to run gap analysis for. */
|
|
32
|
+
gapAnalysisMatchIndices?: number[];
|
|
29
33
|
}
|
|
30
34
|
export interface ContextBriefingOptions {
|
|
31
35
|
topK?: number;
|
|
@@ -34,7 +38,50 @@ export interface ContextBriefingOptions {
|
|
|
34
38
|
repo?: TrackingRepository;
|
|
35
39
|
resumeIntel?: ResumeIntelligence;
|
|
36
40
|
enhanceFetchFn?: EnhanceOptions["fetchFn"];
|
|
41
|
+
/** 0-based indices into the matches array to generate cover letters for. */
|
|
42
|
+
coverLetterMatchIndices?: number[];
|
|
43
|
+
/** 0-based indices into the matches array to run gap analysis for. */
|
|
44
|
+
gapAnalysisMatchIndices?: number[];
|
|
37
45
|
}
|
|
38
46
|
export declare function runBriefing(profile: UserProfile, options?: BriefingOptions): Promise<BriefingResult>;
|
|
39
47
|
export declare function runBriefingWithContext(profile: UserProfile, context: ClawOsExecutionContext, options?: ContextBriefingOptions): Promise<BriefingResult>;
|
|
48
|
+
export interface CoverLetterOptions {
|
|
49
|
+
/** Injectable fetch for LLM calls — defaults to global fetch. */
|
|
50
|
+
enhanceFetchFn?: EnhanceOptions["fetchFn"];
|
|
51
|
+
/** Pre-computed gap analysis result. Skips re-computation if provided. */
|
|
52
|
+
precomputedGap?: GapAnalysisResult;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generate a cover letter for a single scored match (Pro tier).
|
|
56
|
+
*
|
|
57
|
+
* This is the atomic unit for cover letter generation. It can be called:
|
|
58
|
+
* - From the briefing pipeline (via coverLetterMatchIndices)
|
|
59
|
+
* - Standalone by ClawOS when a user picks a specific match
|
|
60
|
+
* - From the CLI with --cover-letter <index>
|
|
61
|
+
*
|
|
62
|
+
* Attempts LLM generation first; falls back to a deterministic template.
|
|
63
|
+
*
|
|
64
|
+
* If you already have a `GapAnalysisResult` for this match (e.g. from a prior
|
|
65
|
+
* call to `generateGapAnalysisForMatch`), pass it as `options.precomputedGap`
|
|
66
|
+
* to avoid running `gapAnalysis()` a second time. Without it, this function
|
|
67
|
+
* computes the gap analysis internally on every call.
|
|
68
|
+
*
|
|
69
|
+
* @see generateGapAnalysisForMatch
|
|
70
|
+
*/
|
|
71
|
+
export declare function generateCoverLetterForMatch(match: ScoredJob, profile: UserProfile, resumeIntel: ResumeIntelligence, options?: CoverLetterOptions): Promise<CoverLetter>;
|
|
72
|
+
/**
|
|
73
|
+
* Run a detailed gap analysis for a single scored match (Pro tier).
|
|
74
|
+
*
|
|
75
|
+
* This is the atomic unit for gap analysis. It can be called:
|
|
76
|
+
* - From the briefing pipeline (via gapAnalysisMatchIndices)
|
|
77
|
+
* - Standalone by ClawOS when a user picks a specific match
|
|
78
|
+
* - From the CLI with --gap-analysis <index>
|
|
79
|
+
*
|
|
80
|
+
* No LLM calls — pure computation. Returns a GapAnalysisReport with
|
|
81
|
+
* job metadata for UI display symmetry with CoverLetter.
|
|
82
|
+
*
|
|
83
|
+
* The returned `analysis` field can be passed as `precomputedGap` to
|
|
84
|
+
* `generateCoverLetterForMatch()` to avoid redundant computation.
|
|
85
|
+
*/
|
|
86
|
+
export declare function generateGapAnalysisForMatch(match: ScoredJob, resumeIntel: ResumeIntelligence): GapAnalysisReport;
|
|
40
87
|
//# sourceMappingURL=briefing.d.ts.map
|
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,
|
|
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;AA8KD,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
|
@@ -14,11 +14,12 @@ import { randomUUID } from "crypto";
|
|
|
14
14
|
import { createRequire } from "module";
|
|
15
15
|
import { fetchAllJobs } from "./sources.js";
|
|
16
16
|
import { rankJobs } from "./matching/index.js";
|
|
17
|
-
import { draftOutreach } from "./drafting.js";
|
|
18
|
-
import { enhanceDraft } from "./llm-enhance.js";
|
|
17
|
+
import { draftOutreach, buildTemplateCoverLetter } from "./drafting.js";
|
|
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 } from "./config.js";
|
|
21
|
+
import { DEFAULT_TOP_K, FREE_TOP_K, PRO_TOP_K } from "./config.js";
|
|
22
|
+
import { gapAnalysis } from "./gap.js";
|
|
22
23
|
import { CAREERCLAW_FEATURES, hasCareerClawFeature, } from "./execution-context.js";
|
|
23
24
|
export async function runBriefing(profile, options = {}) {
|
|
24
25
|
return runBriefingInternal(profile, options, {
|
|
@@ -39,8 +40,16 @@ export async function runBriefingWithContext(profile, context, options = {}) {
|
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
42
|
async function runBriefingInternal(profile, options, executionMode) {
|
|
42
|
-
const { topK = DEFAULT_TOP_K, dryRun = false, fetchFn = fetchAllJobs, repo = new TrackingRepository({ dryRun }), resumeIntel, enhanceFetchFn, } = options;
|
|
43
|
+
const { topK = DEFAULT_TOP_K, dryRun = false, fetchFn = fetchAllJobs, repo = new TrackingRepository({ dryRun }), resumeIntel, enhanceFetchFn, coverLetterMatchIndices = [], gapAnalysisMatchIndices = [], } = options;
|
|
43
44
|
const isProActive = await resolvePremiumDraftAccess(executionMode, resumeIntel);
|
|
45
|
+
// Enforce tier-aware topK ceiling — the engine must not trust the caller.
|
|
46
|
+
// ClawOS checks the specific TOPK_EXTENDED feature (separate from draft access).
|
|
47
|
+
// Standalone uses isProActive since a valid license grants all Pro capabilities.
|
|
48
|
+
const hasExtendedTopK = executionMode.kind === "clawos"
|
|
49
|
+
? hasCareerClawFeature(executionMode.context, CAREERCLAW_FEATURES.TOPK_EXTENDED)
|
|
50
|
+
: isProActive;
|
|
51
|
+
const maxTopK = hasExtendedTopK ? PRO_TOP_K : FREE_TOP_K;
|
|
52
|
+
const clampedTopK = Math.min(topK, maxTopK);
|
|
44
53
|
const runAt = new Date().toISOString();
|
|
45
54
|
const runId = randomUUID();
|
|
46
55
|
const version = readPackageVersion();
|
|
@@ -55,7 +64,7 @@ async function runBriefingInternal(profile, options, executionMode) {
|
|
|
55
64
|
const fetchMs = Date.now() - fetchStart;
|
|
56
65
|
const { jobs, counts: sourceCounts } = fetchResult;
|
|
57
66
|
const rankStart = Date.now();
|
|
58
|
-
const matches = jobs.length > 0 ? rankJobs(jobs, profile,
|
|
67
|
+
const matches = jobs.length > 0 ? rankJobs(jobs, profile, clampedTopK) : [];
|
|
59
68
|
const rankMs = Date.now() - rankStart;
|
|
60
69
|
const draftStart = Date.now();
|
|
61
70
|
const drafts = await Promise.all(matches.map(async (scored) => {
|
|
@@ -66,6 +75,41 @@ async function runBriefingInternal(profile, options, executionMode) {
|
|
|
66
75
|
return baseline;
|
|
67
76
|
}));
|
|
68
77
|
const draftMs = Date.now() - draftStart;
|
|
78
|
+
// ── Gap analysis (Pro + RESUME_GAP_ANALYSIS only) ─────────────────────
|
|
79
|
+
const hasGapAnalysisFeature = executionMode.kind === "clawos"
|
|
80
|
+
? hasCareerClawFeature(executionMode.context, CAREERCLAW_FEATURES.RESUME_GAP_ANALYSIS)
|
|
81
|
+
: isProActive;
|
|
82
|
+
// Pre-compute gap analyses — these are reused by cover letters below
|
|
83
|
+
// to ensure "single source of truth" (no drift between gap report and letter).
|
|
84
|
+
const gapCache = new Map();
|
|
85
|
+
const gapAnalyses = [];
|
|
86
|
+
if (hasGapAnalysisFeature && resumeIntel && gapAnalysisMatchIndices.length > 0) {
|
|
87
|
+
for (const idx of gapAnalysisMatchIndices) {
|
|
88
|
+
if (idx < 0 || idx >= matches.length)
|
|
89
|
+
continue;
|
|
90
|
+
const match = matches[idx];
|
|
91
|
+
const report = generateGapAnalysisForMatch(match, resumeIntel);
|
|
92
|
+
gapAnalyses.push(report);
|
|
93
|
+
gapCache.set(idx, report.analysis);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ── Cover letter generation (Pro + TAILORED_COVER_LETTER only) ──────────
|
|
97
|
+
const hasCoverLetterFeature = executionMode.kind === "clawos"
|
|
98
|
+
? hasCareerClawFeature(executionMode.context, CAREERCLAW_FEATURES.TAILORED_COVER_LETTER)
|
|
99
|
+
: isProActive;
|
|
100
|
+
const coverLetters = [];
|
|
101
|
+
if (hasCoverLetterFeature && resumeIntel && coverLetterMatchIndices.length > 0) {
|
|
102
|
+
for (const idx of coverLetterMatchIndices) {
|
|
103
|
+
if (idx < 0 || idx >= matches.length)
|
|
104
|
+
continue;
|
|
105
|
+
const match = matches[idx];
|
|
106
|
+
const precomputedGap = gapCache.get(idx);
|
|
107
|
+
coverLetters.push(await generateCoverLetterForMatch(match, profile, resumeIntel, {
|
|
108
|
+
enhanceFetchFn,
|
|
109
|
+
...(precomputedGap !== undefined && { precomputedGap }),
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
69
113
|
const persistStart = Date.now();
|
|
70
114
|
const trackingResult = repo.upsertEntries(matches.map((s) => s.job), matches);
|
|
71
115
|
const run = {
|
|
@@ -91,6 +135,8 @@ async function runBriefingInternal(profile, options, executionMode) {
|
|
|
91
135
|
run,
|
|
92
136
|
matches,
|
|
93
137
|
drafts,
|
|
138
|
+
cover_letters: coverLetters,
|
|
139
|
+
gap_analyses: gapAnalyses,
|
|
94
140
|
tracking: {
|
|
95
141
|
created: trackingResult.created,
|
|
96
142
|
already_present: trackingResult.already_present,
|
|
@@ -98,6 +144,70 @@ async function runBriefingInternal(profile, options, executionMode) {
|
|
|
98
144
|
dry_run: dryRun,
|
|
99
145
|
};
|
|
100
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Generate a cover letter for a single scored match (Pro tier).
|
|
149
|
+
*
|
|
150
|
+
* This is the atomic unit for cover letter generation. It can be called:
|
|
151
|
+
* - From the briefing pipeline (via coverLetterMatchIndices)
|
|
152
|
+
* - Standalone by ClawOS when a user picks a specific match
|
|
153
|
+
* - From the CLI with --cover-letter <index>
|
|
154
|
+
*
|
|
155
|
+
* Attempts LLM generation first; falls back to a deterministic template.
|
|
156
|
+
*
|
|
157
|
+
* If you already have a `GapAnalysisResult` for this match (e.g. from a prior
|
|
158
|
+
* call to `generateGapAnalysisForMatch`), pass it as `options.precomputedGap`
|
|
159
|
+
* to avoid running `gapAnalysis()` a second time. Without it, this function
|
|
160
|
+
* computes the gap analysis internally on every call.
|
|
161
|
+
*
|
|
162
|
+
* @see generateGapAnalysisForMatch
|
|
163
|
+
*/
|
|
164
|
+
export async function generateCoverLetterForMatch(match, profile, resumeIntel, options = {}) {
|
|
165
|
+
const { enhanceFetchFn, precomputedGap } = options;
|
|
166
|
+
const gapResult = precomputedGap ?? gapAnalysis(resumeIntel, match.job);
|
|
167
|
+
// Attempt LLM generation; fall back to deterministic template
|
|
168
|
+
const llmBody = await generateCoverLetter(match.job, profile, resumeIntel, match.gap_keywords, enhanceFetchFn !== undefined ? { fetchFn: enhanceFetchFn } : {});
|
|
169
|
+
if (llmBody) {
|
|
170
|
+
return {
|
|
171
|
+
job_id: match.job.job_id,
|
|
172
|
+
body: llmBody,
|
|
173
|
+
tone: "professional",
|
|
174
|
+
is_template: false,
|
|
175
|
+
match_score: gapResult.fit_score,
|
|
176
|
+
keyword_coverage: {
|
|
177
|
+
top_signals: gapResult.summary.top_signals.keywords,
|
|
178
|
+
top_gaps: gapResult.summary.top_gaps.keywords,
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// LLM failed — deterministic template fallback
|
|
183
|
+
return buildTemplateCoverLetter(match.job, profile, match.matched_keywords, gapResult);
|
|
184
|
+
}
|
|
185
|
+
// ---------------------------------------------------------------------------
|
|
186
|
+
// Standalone gap analysis
|
|
187
|
+
// ---------------------------------------------------------------------------
|
|
188
|
+
/**
|
|
189
|
+
* Run a detailed gap analysis for a single scored match (Pro tier).
|
|
190
|
+
*
|
|
191
|
+
* This is the atomic unit for gap analysis. It can be called:
|
|
192
|
+
* - From the briefing pipeline (via gapAnalysisMatchIndices)
|
|
193
|
+
* - Standalone by ClawOS when a user picks a specific match
|
|
194
|
+
* - From the CLI with --gap-analysis <index>
|
|
195
|
+
*
|
|
196
|
+
* No LLM calls — pure computation. Returns a GapAnalysisReport with
|
|
197
|
+
* job metadata for UI display symmetry with CoverLetter.
|
|
198
|
+
*
|
|
199
|
+
* The returned `analysis` field can be passed as `precomputedGap` to
|
|
200
|
+
* `generateCoverLetterForMatch()` to avoid redundant computation.
|
|
201
|
+
*/
|
|
202
|
+
export function generateGapAnalysisForMatch(match, resumeIntel) {
|
|
203
|
+
const result = gapAnalysis(resumeIntel, match.job);
|
|
204
|
+
return {
|
|
205
|
+
job_id: match.job.job_id,
|
|
206
|
+
title: match.job.title,
|
|
207
|
+
company: match.job.company,
|
|
208
|
+
analysis: result,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
101
211
|
async function resolvePremiumDraftAccess(executionMode, resumeIntel) {
|
|
102
212
|
if (!resumeIntel) {
|
|
103
213
|
return false;
|
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;
|
|
1
|
+
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -9,6 +9,8 @@ const { values: args } = parseArgs({
|
|
|
9
9
|
profile: { type: "string", short: "p" },
|
|
10
10
|
"resume-txt": { type: "string" },
|
|
11
11
|
"top-k": { type: "string", short: "k" },
|
|
12
|
+
"cover-letter": { type: "string", short: "c" },
|
|
13
|
+
"gap-analysis": { type: "string", short: "g" },
|
|
12
14
|
"dry-run": { type: "boolean", short: "d", default: false },
|
|
13
15
|
json: { type: "boolean", short: "j", default: false },
|
|
14
16
|
help: { type: "boolean", short: "h", default: false },
|
|
@@ -40,6 +42,38 @@ const jsonMode = args["json"];
|
|
|
40
42
|
if (isNaN(topK) || topK < 1) {
|
|
41
43
|
fatal(`--top-k must be a positive integer, got: ${args["top-k"]}`);
|
|
42
44
|
}
|
|
45
|
+
// Parse --cover-letter flag: comma-separated 1-based indices → 0-based array
|
|
46
|
+
const coverLetterRaw = args["cover-letter"] ?? null;
|
|
47
|
+
let coverLetterMatchIndices = [];
|
|
48
|
+
if (coverLetterRaw) {
|
|
49
|
+
coverLetterMatchIndices = coverLetterRaw
|
|
50
|
+
.split(",")
|
|
51
|
+
.map((s) => s.trim())
|
|
52
|
+
.filter(Boolean)
|
|
53
|
+
.map((s) => {
|
|
54
|
+
const n = parseInt(s, 10);
|
|
55
|
+
if (isNaN(n) || n < 1) {
|
|
56
|
+
fatal(`--cover-letter indices must be positive integers (1-based), got: "${s}"`);
|
|
57
|
+
}
|
|
58
|
+
return n - 1; // Convert 1-based (human) to 0-based (internal)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// Parse --gap-analysis flag: same pattern as --cover-letter
|
|
62
|
+
const gapAnalysisRaw = args["gap-analysis"] ?? null;
|
|
63
|
+
let gapAnalysisMatchIndices = [];
|
|
64
|
+
if (gapAnalysisRaw) {
|
|
65
|
+
gapAnalysisMatchIndices = gapAnalysisRaw
|
|
66
|
+
.split(",")
|
|
67
|
+
.map((s) => s.trim())
|
|
68
|
+
.filter(Boolean)
|
|
69
|
+
.map((s) => {
|
|
70
|
+
const n = parseInt(s, 10);
|
|
71
|
+
if (isNaN(n) || n < 1) {
|
|
72
|
+
fatal(`--gap-analysis indices must be positive integers (1-based), got: "${s}"`);
|
|
73
|
+
}
|
|
74
|
+
return n - 1;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
43
77
|
function loadProfile(path) {
|
|
44
78
|
if (!existsSync(path)) {
|
|
45
79
|
fatal(`Profile not found: ${path}\n` +
|
|
@@ -74,7 +108,7 @@ function loadResumeTxt(path) {
|
|
|
74
108
|
}
|
|
75
109
|
}
|
|
76
110
|
function printBriefing(result) {
|
|
77
|
-
const { run, matches, drafts, tracking, dry_run } = result;
|
|
111
|
+
const { run, matches, drafts, cover_letters, gap_analyses, tracking, dry_run } = result;
|
|
78
112
|
const sources = Object.entries(run.sources)
|
|
79
113
|
.map(([s, n]) => `${s}: ${n}`)
|
|
80
114
|
.join(" | ");
|
|
@@ -114,6 +148,45 @@ function printBriefing(result) {
|
|
|
114
148
|
console.log(d.body);
|
|
115
149
|
console.log();
|
|
116
150
|
}
|
|
151
|
+
if (cover_letters.length > 0) {
|
|
152
|
+
console.log(`Cover Letters:\n`);
|
|
153
|
+
for (let i = 0; i < cover_letters.length; i++) {
|
|
154
|
+
const cl = cover_letters[i];
|
|
155
|
+
// Find the match index for display (1-based)
|
|
156
|
+
const matchIdx = matches.findIndex((m) => m.job.job_id === cl.job_id);
|
|
157
|
+
const matchLabel = matchIdx >= 0
|
|
158
|
+
? `Match #${matchIdx + 1} — ${matches[matchIdx].job.title} @ ${matches[matchIdx].job.company}`
|
|
159
|
+
: cl.job_id;
|
|
160
|
+
const templateTag = cl.is_template ? " [template fallback]" : "";
|
|
161
|
+
const scorePct = Math.round(cl.match_score * 100);
|
|
162
|
+
console.log(`--- Cover Letter: ${matchLabel}${templateTag} ---`);
|
|
163
|
+
console.log(`Match score: ${scorePct}% | Tone: ${cl.tone}`);
|
|
164
|
+
console.log(`Signals: ${cl.keyword_coverage.top_signals.join(", ") || "(none)"}`);
|
|
165
|
+
console.log(`Gaps: ${cl.keyword_coverage.top_gaps.join(", ") || "(none)"}`);
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(cl.body);
|
|
168
|
+
console.log();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (gap_analyses.length > 0) {
|
|
172
|
+
console.log(`Gap Analyses:\n`);
|
|
173
|
+
for (let i = 0; i < gap_analyses.length; i++) {
|
|
174
|
+
const ga = gap_analyses[i];
|
|
175
|
+
const fitPct = Math.round(ga.analysis.fit_score * 100);
|
|
176
|
+
const fitRawPct = Math.round(ga.analysis.fit_score_unweighted * 100);
|
|
177
|
+
console.log(`--- Gap Analysis: ${ga.title} @ ${ga.company} ---`);
|
|
178
|
+
console.log(`Fit score: ${fitPct}% (weighted) | ${fitRawPct}% (unweighted)`);
|
|
179
|
+
console.log();
|
|
180
|
+
console.log(` Signals (your resume matches):`);
|
|
181
|
+
console.log(` Keywords: ${ga.analysis.summary.top_signals.keywords.join(", ") || "(none)"}`);
|
|
182
|
+
console.log(` Phrases: ${ga.analysis.summary.top_signals.phrases.join(", ") || "(none)"}`);
|
|
183
|
+
console.log();
|
|
184
|
+
console.log(` Gaps (missing from your resume):`);
|
|
185
|
+
console.log(` Keywords: ${ga.analysis.summary.top_gaps.keywords.join(", ") || "(none)"}`);
|
|
186
|
+
console.log(` Phrases: ${ga.analysis.summary.top_gaps.phrases.join(", ") || "(none)"}`);
|
|
187
|
+
console.log();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
117
190
|
console.log(`Tracking:`);
|
|
118
191
|
console.log(` ${tracking.created} new job(s) saved`);
|
|
119
192
|
if (tracking.already_present > 0) {
|
|
@@ -136,6 +209,12 @@ async function main() {
|
|
|
136
209
|
resumeText,
|
|
137
210
|
topK,
|
|
138
211
|
dryRun,
|
|
212
|
+
...(coverLetterMatchIndices.length > 0
|
|
213
|
+
? { coverLetterMatchIndices }
|
|
214
|
+
: {}),
|
|
215
|
+
...(gapAnalysisMatchIndices.length > 0
|
|
216
|
+
? { gapAnalysisMatchIndices }
|
|
217
|
+
: {}),
|
|
139
218
|
}, PRO_KEY ? { proKey: PRO_KEY } : {});
|
|
140
219
|
if (jsonMode) {
|
|
141
220
|
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
@@ -165,6 +244,12 @@ Options:
|
|
|
165
244
|
--resume-txt PATH Plain-text resume to enhance keyword matching
|
|
166
245
|
(default: ~/.careerclaw/resume.txt if present)
|
|
167
246
|
-k, --top-k INT Number of top matches to return (default: 3)
|
|
247
|
+
-c, --cover-letter N Generate cover letter(s) for match N (1-based).
|
|
248
|
+
Comma-separated for multiple: --cover-letter 1,3
|
|
249
|
+
Requires Pro tier and a resume.
|
|
250
|
+
-g, --gap-analysis N Run detailed gap analysis for match N (1-based).
|
|
251
|
+
Comma-separated for multiple: --gap-analysis 1,2
|
|
252
|
+
Requires Pro tier and a resume.
|
|
168
253
|
-d, --dry-run Run without writing tracking or run log
|
|
169
254
|
-j, --json Machine-readable JSON output (no colour, no headers)
|
|
170
255
|
-v, --version Show version number
|
|
@@ -175,6 +260,8 @@ Examples:
|
|
|
175
260
|
careerclaw-js --resume-txt ~/.careerclaw/resume.txt --dry-run
|
|
176
261
|
careerclaw-js --json --dry-run
|
|
177
262
|
careerclaw-js --profile ./my-profile.json --top-k 5
|
|
263
|
+
careerclaw-js --top-k 5 --cover-letter 1 --dry-run
|
|
264
|
+
careerclaw-js --top-k 5 --cover-letter 1,3 --gap-analysis 1,2 --dry-run --json
|
|
178
265
|
`);
|
|
179
266
|
}
|
|
180
267
|
main().catch((err) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.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.4.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
|
/**
|
|
@@ -39,8 +39,12 @@ export declare const HN_WHO_IS_HIRING_ID: number;
|
|
|
39
39
|
export declare const HN_API_BASE = "https://hacker-news.firebaseio.com/v0";
|
|
40
40
|
/** Maximum number of HN comment IDs to fetch per briefing run. */
|
|
41
41
|
export declare const HN_MAX_COMMENTS = 200;
|
|
42
|
-
/** Default number of top matches to return. */
|
|
42
|
+
/** Default number of top matches to return (matches free tier cap). */
|
|
43
43
|
export declare const DEFAULT_TOP_K = 3;
|
|
44
|
+
/** Maximum topK for free tier users. */
|
|
45
|
+
export declare const FREE_TOP_K = 3;
|
|
46
|
+
/** Maximum topK for Pro tier users. */
|
|
47
|
+
export declare const PRO_TOP_K = 10;
|
|
44
48
|
/**
|
|
45
49
|
* Provider-specific LLM keys for draft enhancement (recommended).
|
|
46
50
|
* 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
|
|
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"}
|
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.4.0 (https://github.com/orestes-garcia-martinez/careerclaw-js)";
|
|
38
38
|
// ---------------------------------------------------------------------------
|
|
39
39
|
// Job sources
|
|
40
40
|
// ---------------------------------------------------------------------------
|
|
@@ -60,8 +60,12 @@ export const HN_MAX_COMMENTS = 200;
|
|
|
60
60
|
// ---------------------------------------------------------------------------
|
|
61
61
|
// Briefing defaults
|
|
62
62
|
// ---------------------------------------------------------------------------
|
|
63
|
-
/** Default number of top matches to return. */
|
|
63
|
+
/** Default number of top matches to return (matches free tier cap). */
|
|
64
64
|
export const DEFAULT_TOP_K = 3;
|
|
65
|
+
/** Maximum topK for free tier users. */
|
|
66
|
+
export const FREE_TOP_K = 3;
|
|
67
|
+
/** Maximum topK for Pro tier users. */
|
|
68
|
+
export const PRO_TOP_K = 10;
|
|
65
69
|
// ---------------------------------------------------------------------------
|
|
66
70
|
// LLM (Pro tier)
|
|
67
71
|
// ---------------------------------------------------------------------------
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAC1B,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;IAC9C,CAAC,CAAC,gBAAgB;IAClB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAW,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,aAAa,GAAW,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAW,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,eAAe,GAAW,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAW,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAW,IAAI,CAC7C,cAAc,EACd,gBAAgB,CAChB,CAAC;AAEF,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GACtB,gFAAgF,CAAC;AAElF,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAW,QAAQ,CAClD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,UAAU,EAChD,EAAE,CACF,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAEnE,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/drafting.d.ts
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* drafting.ts — Deterministic outreach draft
|
|
2
|
+
* drafting.ts — Deterministic outreach draft and cover letter generators.
|
|
3
3
|
*
|
|
4
4
|
* `draftOutreach()` produces a professional outreach email from a fixed
|
|
5
5
|
* template. It is the Free tier baseline and always runs as the fallback
|
|
6
6
|
* when LLM enhancement is unavailable or fails.
|
|
7
7
|
*
|
|
8
|
+
* `buildTemplateCoverLetter()` produces a deterministic cover letter
|
|
9
|
+
* fallback when LLM generation fails. Uses keyword signals from gap
|
|
10
|
+
* analysis to add specificity. Always sets `is_template: true`.
|
|
11
|
+
*
|
|
8
12
|
* Template is ported directly from the Python careerclaw implementation
|
|
9
13
|
* so output format is consistent across both runtimes.
|
|
10
14
|
*
|
|
11
15
|
* Design constraints (from MVP Feature Contract):
|
|
12
|
-
* - 150–250 word body
|
|
16
|
+
* - 150–250 word body (outreach) / 200–300 word body (cover letter)
|
|
13
17
|
* - Professional and concise tone
|
|
14
18
|
* - Inserts job title, company name, matched skill highlights
|
|
15
19
|
* - No external dependencies, fully deterministic
|
|
16
|
-
* - llm_enhanced is always false
|
|
20
|
+
* - llm_enhanced is always false / is_template is always true
|
|
17
21
|
*/
|
|
18
|
-
import type { NormalizedJob, UserProfile, OutreachDraft } from "./models.js";
|
|
22
|
+
import type { NormalizedJob, UserProfile, OutreachDraft, CoverLetter, GapAnalysisResult } from "./models.js";
|
|
19
23
|
/**
|
|
20
24
|
* Generate a deterministic outreach draft for a ranked job.
|
|
21
25
|
*
|
|
@@ -25,4 +29,18 @@ import type { NormalizedJob, UserProfile, OutreachDraft } from "./models.js";
|
|
|
25
29
|
* (up to 3 are highlighted in the body)
|
|
26
30
|
*/
|
|
27
31
|
export declare function draftOutreach(job: NormalizedJob, profile: UserProfile, matchedKeywords?: string[]): OutreachDraft;
|
|
32
|
+
/**
|
|
33
|
+
* Generate a deterministic cover letter when LLM generation fails.
|
|
34
|
+
*
|
|
35
|
+
* Uses gap analysis results to add keyword specificity. The output is
|
|
36
|
+
* structured and professional but lacks the "soul" of an LLM-generated
|
|
37
|
+
* letter. Always sets `is_template: true` so the UI can communicate
|
|
38
|
+
* this to the user.
|
|
39
|
+
*
|
|
40
|
+
* @param job - The job to write a cover letter for
|
|
41
|
+
* @param profile - User profile
|
|
42
|
+
* @param matchedKeywords - Matched keywords from ScoredJob
|
|
43
|
+
* @param gapResult - Gap analysis result for match_score and coverage
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildTemplateCoverLetter(job: NormalizedJob, profile: UserProfile, matchedKeywords: string[], gapResult: GapAnalysisResult): CoverLetter;
|
|
28
46
|
//# sourceMappingURL=drafting.d.ts.map
|
package/dist/drafting.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drafting.d.ts","sourceRoot":"","sources":["../src/drafting.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"drafting.d.ts","sourceRoot":"","sources":["../src/drafting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAMrB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,eAAe,GAAE,MAAM,EAAO,GAC7B,aAAa,CAUf;AAqFD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,EAAE,iBAAiB,GAC3B,WAAW,CAiDb"}
|
package/dist/drafting.js
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* drafting.ts — Deterministic outreach draft
|
|
2
|
+
* drafting.ts — Deterministic outreach draft and cover letter generators.
|
|
3
3
|
*
|
|
4
4
|
* `draftOutreach()` produces a professional outreach email from a fixed
|
|
5
5
|
* template. It is the Free tier baseline and always runs as the fallback
|
|
6
6
|
* when LLM enhancement is unavailable or fails.
|
|
7
7
|
*
|
|
8
|
+
* `buildTemplateCoverLetter()` produces a deterministic cover letter
|
|
9
|
+
* fallback when LLM generation fails. Uses keyword signals from gap
|
|
10
|
+
* analysis to add specificity. Always sets `is_template: true`.
|
|
11
|
+
*
|
|
8
12
|
* Template is ported directly from the Python careerclaw implementation
|
|
9
13
|
* so output format is consistent across both runtimes.
|
|
10
14
|
*
|
|
11
15
|
* Design constraints (from MVP Feature Contract):
|
|
12
|
-
* - 150–250 word body
|
|
16
|
+
* - 150–250 word body (outreach) / 200–300 word body (cover letter)
|
|
13
17
|
* - Professional and concise tone
|
|
14
18
|
* - Inserts job title, company name, matched skill highlights
|
|
15
19
|
* - No external dependencies, fully deterministic
|
|
16
|
-
* - llm_enhanced is always false
|
|
20
|
+
* - llm_enhanced is always false / is_template is always true
|
|
17
21
|
*/
|
|
18
22
|
// ---------------------------------------------------------------------------
|
|
19
23
|
// Public API
|
|
@@ -98,6 +102,68 @@ function buildHighlightsClause(matchedKeywords, job) {
|
|
|
98
102
|
return `My background includes direct experience with ${formatted}, ` +
|
|
99
103
|
`which maps well to what you're building at ${job.company}.`;
|
|
100
104
|
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Template cover letter (Pro fallback)
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
/**
|
|
109
|
+
* Generate a deterministic cover letter when LLM generation fails.
|
|
110
|
+
*
|
|
111
|
+
* Uses gap analysis results to add keyword specificity. The output is
|
|
112
|
+
* structured and professional but lacks the "soul" of an LLM-generated
|
|
113
|
+
* letter. Always sets `is_template: true` so the UI can communicate
|
|
114
|
+
* this to the user.
|
|
115
|
+
*
|
|
116
|
+
* @param job - The job to write a cover letter for
|
|
117
|
+
* @param profile - User profile
|
|
118
|
+
* @param matchedKeywords - Matched keywords from ScoredJob
|
|
119
|
+
* @param gapResult - Gap analysis result for match_score and coverage
|
|
120
|
+
*/
|
|
121
|
+
export function buildTemplateCoverLetter(job, profile, matchedKeywords, gapResult) {
|
|
122
|
+
const experienceClause = buildExperienceClause(profile);
|
|
123
|
+
const highlights = matchedKeywords.slice(0, 4);
|
|
124
|
+
const highlightsText = highlights.length > 0
|
|
125
|
+
? formatList(highlights)
|
|
126
|
+
: "relevant technical skills";
|
|
127
|
+
const gapAcknowledgement = gapResult.summary.top_gaps.keywords.length > 0
|
|
128
|
+
? ` While I am continuing to deepen my expertise in areas such as ` +
|
|
129
|
+
`${formatList(gapResult.summary.top_gaps.keywords.slice(0, 2))}, ` +
|
|
130
|
+
`I am motivated to grow quickly in these areas and bring a strong ` +
|
|
131
|
+
`foundation to build on.`
|
|
132
|
+
: "";
|
|
133
|
+
const body = [
|
|
134
|
+
`Dear ${job.company} hiring team,`,
|
|
135
|
+
"",
|
|
136
|
+
`I am writing to apply for the ${job.title} position at ${job.company}. ` +
|
|
137
|
+
`With ${experienceClause} in software engineering, I am confident ` +
|
|
138
|
+
`that my background aligns well with the requirements of this role.`,
|
|
139
|
+
"",
|
|
140
|
+
`My experience includes direct work with ${highlightsText}, which ` +
|
|
141
|
+
`maps closely to the technical needs outlined for this position. ` +
|
|
142
|
+
`I have consistently delivered production-quality systems with a focus ` +
|
|
143
|
+
`on reliability, maintainability, and close collaboration with ` +
|
|
144
|
+
`cross-functional stakeholders.`,
|
|
145
|
+
"",
|
|
146
|
+
`I am drawn to ${job.company} because of the opportunity to contribute ` +
|
|
147
|
+
`to meaningful technical challenges at scale.${gapAcknowledgement}`,
|
|
148
|
+
"",
|
|
149
|
+
`I would welcome the opportunity to discuss how my background can ` +
|
|
150
|
+
`contribute to your team's goals.`,
|
|
151
|
+
"",
|
|
152
|
+
"Sincerely,",
|
|
153
|
+
"[Your Name]",
|
|
154
|
+
].join("\n");
|
|
155
|
+
return {
|
|
156
|
+
job_id: job.job_id,
|
|
157
|
+
body,
|
|
158
|
+
tone: "professional",
|
|
159
|
+
is_template: true,
|
|
160
|
+
match_score: gapResult.fit_score,
|
|
161
|
+
keyword_coverage: {
|
|
162
|
+
top_signals: gapResult.summary.top_signals.keywords,
|
|
163
|
+
top_gaps: gapResult.summary.top_gaps.keywords,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
101
167
|
/**
|
|
102
168
|
* Format a list of strings as natural language.
|
|
103
169
|
* ["a"] → "a"
|
package/dist/drafting.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drafting.js","sourceRoot":"","sources":["../src/drafting.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"drafting.js","sourceRoot":"","sources":["../src/drafting.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
package/dist/llm-enhance.d.ts
CHANGED
|
@@ -66,4 +66,18 @@ export declare function enhanceDraft(job: NormalizedJob, profile: UserProfile, r
|
|
|
66
66
|
declare const SYSTEM_PROMPT = "You are a senior career consultant and professional writer with 15 years of experience placing candidates at top-tier companies. You write outreach emails and cover letters that are specific, compelling, and human \u2014 never generic.\n\nYour core method \u2014 the Bridge Sentence:\nFor every strength signal the candidate has, identify the corresponding requirement in the role and connect them with a concrete, specific sentence. Example: \"Because I architected the data pipeline at [Company], I can solve your need for reliable real-time ingestion from day one.\" Every paragraph must contain at least one Bridge Sentence.\n\nYour writing principles:\n- Every sentence earns its place. No filler, no padding, no throat-clearing.\n- Map the candidate's actual experience to this specific role's needs \u2014 not to \"the industry.\"\n- When the candidate has a gap, frame it as genuine motivation to grow, not as an apology.\n- Write like a thoughtful senior professional, not a cover letter generator.\n- Strict word limits: 250 words maximum for outreach emails, 300 words for cover letters.\n- Count words before finishing. If over the limit, cut the weakest sentence, not the strongest.\n- Output your final word count at the very bottom of the response in brackets.\n\nBanned phrases \u2014 never use these under any circumstances:\n\"I am writing to express my interest\", \"I am excited to apply\", \"I would be a great fit\", \"passion for\", \"passionate about\", \"leverage my skills\", \"leverage my experience\", \"dynamic team\", \"fast-paced environment\", \"detail-oriented\", \"results-driven\", \"team player\", \"go-getter\", \"hard worker\", \"strong work ethic\", \"I am a quick learner\", \"Enclosed please find\", \"Please find attached\", \"I am writing to\", \"I look forward to hearing from you\", \"Thank you for your consideration\", \"I believe I would\", \"synergy\", \"proactive\", \"self-starter\".";
|
|
67
67
|
/** Exported for testing — same reference used by both API callers. */
|
|
68
68
|
export { SYSTEM_PROMPT };
|
|
69
|
+
/**
|
|
70
|
+
* Generate a tailored cover letter for a specific job match (Pro tier).
|
|
71
|
+
*
|
|
72
|
+
* Uses the same LLM provider chain and failover logic as `enhanceDraft()`.
|
|
73
|
+
* Returns null on failure — caller is responsible for template fallback.
|
|
74
|
+
*
|
|
75
|
+
* @param job - The job to write a cover letter for
|
|
76
|
+
* @param profile - User profile
|
|
77
|
+
* @param resumeIntel - Section-aware keyword signals
|
|
78
|
+
* @param gapKeywords - Keywords from the job not present in the profile
|
|
79
|
+
* @param options - Injectable fetch and chain override for testing
|
|
80
|
+
* @returns Cover letter body string, or null on failure
|
|
81
|
+
*/
|
|
82
|
+
export declare function generateCoverLetter(job: NormalizedJob, profile: UserProfile, resumeIntel: ResumeIntelligence, gapKeywords?: string[], options?: EnhanceOptions): Promise<string | null>;
|
|
69
83
|
//# sourceMappingURL=llm-enhance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-enhance.d.ts","sourceRoot":"","sources":["../src/llm-enhance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAejG,KAAK,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;CACjC;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,MAAM,EAAO,EAC1B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAkCxB;AA2DD;;;GAGG;AACH,QAAA,MAAM,aAAa,m5DAe2gB,CAAC;
|
|
1
|
+
{"version":3,"file":"llm-enhance.d.ts","sourceRoot":"","sources":["../src/llm-enhance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAejG,KAAK,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;CACjC;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,MAAM,EAAO,EAC1B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAkCxB;AA2DD;;;GAGG;AACH,QAAA,MAAM,aAAa,m5DAe2gB,CAAC;AA+H/hB,sEAAsE;AACtE,OAAO,EAAE,aAAa,EAAE,CAAC;AA2PzB;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,kBAAkB,EAC/B,WAAW,GAAE,MAAM,EAAO,EAC1B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgCxB"}
|
package/dist/llm-enhance.js
CHANGED
|
@@ -123,21 +123,21 @@ function resolveKey(provider) {
|
|
|
123
123
|
* System prompt — establishes the LLM as a senior career writer.
|
|
124
124
|
* Sent as the `system` field (Anthropic) or system role message (OpenAI).
|
|
125
125
|
*/
|
|
126
|
-
const SYSTEM_PROMPT = `You are a senior career consultant and professional writer with 15 years of experience placing candidates at top-tier companies. You write outreach emails and cover letters that are specific, compelling, and human — never generic.
|
|
127
|
-
|
|
128
|
-
Your core method — the Bridge Sentence:
|
|
129
|
-
For every strength signal the candidate has, identify the corresponding requirement in the role and connect them with a concrete, specific sentence. Example: "Because I architected the data pipeline at [Company], I can solve your need for reliable real-time ingestion from day one." Every paragraph must contain at least one Bridge Sentence.
|
|
130
|
-
|
|
131
|
-
Your writing principles:
|
|
132
|
-
- Every sentence earns its place. No filler, no padding, no throat-clearing.
|
|
133
|
-
- Map the candidate's actual experience to this specific role's needs — not to "the industry."
|
|
134
|
-
- When the candidate has a gap, frame it as genuine motivation to grow, not as an apology.
|
|
135
|
-
- Write like a thoughtful senior professional, not a cover letter generator.
|
|
136
|
-
- Strict word limits: 250 words maximum for outreach emails, 300 words for cover letters.
|
|
137
|
-
- Count words before finishing. If over the limit, cut the weakest sentence, not the strongest.
|
|
138
|
-
- Output your final word count at the very bottom of the response in brackets.
|
|
139
|
-
|
|
140
|
-
Banned phrases — never use these under any circumstances:
|
|
126
|
+
const SYSTEM_PROMPT = `You are a senior career consultant and professional writer with 15 years of experience placing candidates at top-tier companies. You write outreach emails and cover letters that are specific, compelling, and human — never generic.
|
|
127
|
+
|
|
128
|
+
Your core method — the Bridge Sentence:
|
|
129
|
+
For every strength signal the candidate has, identify the corresponding requirement in the role and connect them with a concrete, specific sentence. Example: "Because I architected the data pipeline at [Company], I can solve your need for reliable real-time ingestion from day one." Every paragraph must contain at least one Bridge Sentence.
|
|
130
|
+
|
|
131
|
+
Your writing principles:
|
|
132
|
+
- Every sentence earns its place. No filler, no padding, no throat-clearing.
|
|
133
|
+
- Map the candidate's actual experience to this specific role's needs — not to "the industry."
|
|
134
|
+
- When the candidate has a gap, frame it as genuine motivation to grow, not as an apology.
|
|
135
|
+
- Write like a thoughtful senior professional, not a cover letter generator.
|
|
136
|
+
- Strict word limits: 250 words maximum for outreach emails, 300 words for cover letters.
|
|
137
|
+
- Count words before finishing. If over the limit, cut the weakest sentence, not the strongest.
|
|
138
|
+
- Output your final word count at the very bottom of the response in brackets.
|
|
139
|
+
|
|
140
|
+
Banned phrases — never use these under any circumstances:
|
|
141
141
|
"I am writing to express my interest", "I am excited to apply", "I would be a great fit", "passion for", "passionate about", "leverage my skills", "leverage my experience", "dynamic team", "fast-paced environment", "detail-oriented", "results-driven", "team player", "go-getter", "hard worker", "strong work ethic", "I am a quick learner", "Enclosed please find", "Please find attached", "I am writing to", "I look forward to hearing from you", "Thank you for your consideration", "I believe I would", "synergy", "proactive", "self-starter".`;
|
|
142
142
|
/**
|
|
143
143
|
* Build the LLM prompt for the requested output mode.
|
|
@@ -160,14 +160,46 @@ function buildPrompt(job, profile, resumeIntel, gapKeywords = [], mode = "draft"
|
|
|
160
160
|
? `Gap keywords (acknowledge briefly as growth areas — do not apologise, do not skip): ${gaps}`
|
|
161
161
|
: "";
|
|
162
162
|
if (mode === "cover_letter") {
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
163
|
+
// Use more impact signals for cover letters — they need deeper substance
|
|
164
|
+
const topPhrases = resumeIntel.phrase_stream.slice(0, 6).join(", ");
|
|
165
|
+
const phraseClause = topPhrases
|
|
166
|
+
? `\nCandidate's notable competency areas: ${topPhrases}`
|
|
167
|
+
: "";
|
|
168
|
+
return [
|
|
169
|
+
`Write a tailored cover letter from a job candidate for a specific role.`,
|
|
170
|
+
``,
|
|
171
|
+
`Role: ${job.title}`,
|
|
172
|
+
`Company: ${job.company}`,
|
|
173
|
+
`Candidate experience: ${experienceClause}`,
|
|
174
|
+
`Candidate's strongest signals: ${strengths}`,
|
|
175
|
+
phraseClause,
|
|
176
|
+
gapsInstruction,
|
|
177
|
+
``,
|
|
178
|
+
`Output format (follow exactly):`,
|
|
179
|
+
`- Full cover letter body only — no subject line, no headers, no date`,
|
|
180
|
+
`- Maximum 300 words — count before finishing and cut if over`,
|
|
181
|
+
``,
|
|
182
|
+
`Structure (4 paragraphs):`,
|
|
183
|
+
`1. Opening (1–2 sentences): Why this company and this role specifically.`,
|
|
184
|
+
` Name the company and role. Show you understand what they do.`,
|
|
185
|
+
`2. Core strength (2–3 sentences): Map the candidate's strongest 1–2 signals`,
|
|
186
|
+
` directly to the role's core need using the Bridge Sentence method.`,
|
|
187
|
+
` Example: "Because I [did X], I can solve your need for [Y] from day one."`,
|
|
188
|
+
`3. Supporting evidence (2–3 sentences): Connect a second area of strength`,
|
|
189
|
+
` to a challenge this company likely faces. If gap keywords are provided,`,
|
|
190
|
+
` one sentence frames a gap as active growth motivation — not an apology.`,
|
|
191
|
+
`4. Close (1 sentence): A single, confident call to action.`,
|
|
192
|
+
``,
|
|
193
|
+
`Writing requirements:`,
|
|
194
|
+
`- Every paragraph must contain at least one Bridge Sentence`,
|
|
195
|
+
`- Closing: "Sincerely," on its own line, then "[Your Name]" on the next`,
|
|
196
|
+
`- Plain text only — no markdown, no bullet points, no headers`,
|
|
197
|
+
`- Do NOT invent specific projects, metrics, or company details`,
|
|
198
|
+
`- Do NOT include any placeholder other than [Your Name]`,
|
|
199
|
+
`- Zero generic filler — every sentence must connect the candidate to this role`,
|
|
200
|
+
]
|
|
201
|
+
.filter(Boolean)
|
|
202
|
+
.join("\n");
|
|
171
203
|
}
|
|
172
204
|
// Draft mode — LLM-enhanced outreach email
|
|
173
205
|
return [
|
|
@@ -373,4 +405,69 @@ function parseResponse(text, job) {
|
|
|
373
405
|
}
|
|
374
406
|
return { subject, body };
|
|
375
407
|
}
|
|
408
|
+
// ---------------------------------------------------------------------------
|
|
409
|
+
// Cover letter generation
|
|
410
|
+
// ---------------------------------------------------------------------------
|
|
411
|
+
/**
|
|
412
|
+
* Extract the cover letter body from raw LLM text.
|
|
413
|
+
*
|
|
414
|
+
* Cover letters have no subject line — the full response is the body.
|
|
415
|
+
* Returns null if the response fails sanity checks.
|
|
416
|
+
*/
|
|
417
|
+
function parseCoverLetterResponse(text, job) {
|
|
418
|
+
// Strip any leading/trailing whitespace and word count annotations
|
|
419
|
+
const body = text
|
|
420
|
+
.replace(/\[\d+\s*words?\]/gi, "")
|
|
421
|
+
.trim();
|
|
422
|
+
if (!body || body.length < 50)
|
|
423
|
+
return null;
|
|
424
|
+
// Sanity check: body must mention the company
|
|
425
|
+
if (!body.toLowerCase().includes(job.company.toLowerCase().slice(0, 6))) {
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
return body;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Generate a tailored cover letter for a specific job match (Pro tier).
|
|
432
|
+
*
|
|
433
|
+
* Uses the same LLM provider chain and failover logic as `enhanceDraft()`.
|
|
434
|
+
* Returns null on failure — caller is responsible for template fallback.
|
|
435
|
+
*
|
|
436
|
+
* @param job - The job to write a cover letter for
|
|
437
|
+
* @param profile - User profile
|
|
438
|
+
* @param resumeIntel - Section-aware keyword signals
|
|
439
|
+
* @param gapKeywords - Keywords from the job not present in the profile
|
|
440
|
+
* @param options - Injectable fetch and chain override for testing
|
|
441
|
+
* @returns Cover letter body string, or null on failure
|
|
442
|
+
*/
|
|
443
|
+
export async function generateCoverLetter(job, profile, resumeIntel, gapKeywords = [], options = {}) {
|
|
444
|
+
const fetchFn = options.fetchFn ?? fetch;
|
|
445
|
+
const chain = options._chainOverride ?? buildChain();
|
|
446
|
+
if (chain.length === 0) {
|
|
447
|
+
return null;
|
|
448
|
+
}
|
|
449
|
+
let consecutiveFails = 0;
|
|
450
|
+
for (const candidate of chain) {
|
|
451
|
+
if (consecutiveFails >= LLM_CIRCUIT_BREAKER_FAILS) {
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
for (let attempt = 0; attempt < LLM_MAX_RETRIES; attempt++) {
|
|
455
|
+
if (consecutiveFails >= LLM_CIRCUIT_BREAKER_FAILS)
|
|
456
|
+
break;
|
|
457
|
+
try {
|
|
458
|
+
const prompt = buildPrompt(job, profile, resumeIntel, gapKeywords, "cover_letter");
|
|
459
|
+
const text = await callProvider(candidate, prompt, fetchFn);
|
|
460
|
+
const body = parseCoverLetterResponse(text, job);
|
|
461
|
+
if (body) {
|
|
462
|
+
return body;
|
|
463
|
+
}
|
|
464
|
+
consecutiveFails++;
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
consecutiveFails++;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return null;
|
|
472
|
+
}
|
|
376
473
|
//# sourceMappingURL=llm-enhance.js.map
|
package/dist/llm-enhance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-enhance.js","sourceRoot":"","sources":["../src/llm-enhance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm-enhance.js","sourceRoot":"","sources":["../src/llm-enhance.ts"],"names":[],"mappings":"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"}
|
package/dist/models.d.ts
CHANGED
|
@@ -188,6 +188,19 @@ export interface GapAnalysisResult {
|
|
|
188
188
|
};
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* A gap analysis report for a specific job match (Pro tier).
|
|
193
|
+
*
|
|
194
|
+
* Wraps GapAnalysisResult with job metadata for UI display symmetry
|
|
195
|
+
* with CoverLetter. The `analysis` field contains the full gap result
|
|
196
|
+
* which can be passed as `precomputedGap` to cover letter generation.
|
|
197
|
+
*/
|
|
198
|
+
export interface GapAnalysisReport {
|
|
199
|
+
job_id: string;
|
|
200
|
+
title: string;
|
|
201
|
+
company: string;
|
|
202
|
+
analysis: GapAnalysisResult;
|
|
203
|
+
}
|
|
191
204
|
export interface OutreachDraft {
|
|
192
205
|
job_id: string;
|
|
193
206
|
subject: string;
|
|
@@ -195,6 +208,30 @@ export interface OutreachDraft {
|
|
|
195
208
|
/** True when the draft was produced by LLM enhancement (Pro tier). */
|
|
196
209
|
llm_enhanced: boolean;
|
|
197
210
|
}
|
|
211
|
+
/** Tone presets for cover letter generation. */
|
|
212
|
+
export type CoverLetterTone = "professional";
|
|
213
|
+
/**
|
|
214
|
+
* A tailored cover letter generated for a specific job match (Pro tier).
|
|
215
|
+
*
|
|
216
|
+
* When LLM generation fails, a deterministic template is used as fallback
|
|
217
|
+
* with `is_template: true`. The `match_score` and `keyword_coverage` are
|
|
218
|
+
* always populated from gap analysis regardless of generation method.
|
|
219
|
+
*/
|
|
220
|
+
export interface CoverLetter {
|
|
221
|
+
job_id: string;
|
|
222
|
+
body: string;
|
|
223
|
+
/** Tone preset used for generation. Extensible for future presets. */
|
|
224
|
+
tone: CoverLetterTone;
|
|
225
|
+
/** True when the letter was produced by a deterministic template fallback. */
|
|
226
|
+
is_template: boolean;
|
|
227
|
+
/** Weighted fit score from gap analysis — higher is a stronger match. */
|
|
228
|
+
match_score: number;
|
|
229
|
+
/** Top keyword signals and gaps surfaced by gap analysis. */
|
|
230
|
+
keyword_coverage: {
|
|
231
|
+
top_signals: string[];
|
|
232
|
+
top_gaps: string[];
|
|
233
|
+
};
|
|
234
|
+
}
|
|
198
235
|
/** Returns an ISO-8601 UTC timestamp string for the current moment. */
|
|
199
236
|
export declare function utcNow(): string;
|
|
200
237
|
/** Returns a default empty UserProfile. */
|
|
@@ -210,6 +247,10 @@ export interface BriefingResult {
|
|
|
210
247
|
matches: ScoredJob[];
|
|
211
248
|
/** One OutreachDraft per match, in the same order as matches[]. */
|
|
212
249
|
drafts: OutreachDraft[];
|
|
250
|
+
/** Pro tier: tailored cover letters. Empty array when not requested or free tier. */
|
|
251
|
+
cover_letters: CoverLetter[];
|
|
252
|
+
/** Pro tier: detailed gap analysis reports. Empty array when not requested or free tier. */
|
|
253
|
+
gap_analyses: GapAnalysisReport[];
|
|
213
254
|
/** Counts from upsertEntries() — always accurate even in dry-run. */
|
|
214
255
|
tracking: {
|
|
215
256
|
created: number;
|
package/dist/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiQH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,IAAI;QACtB,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -15,6 +15,10 @@ export interface CareerClawRunInput {
|
|
|
15
15
|
resumeText?: string | null;
|
|
16
16
|
topK?: number;
|
|
17
17
|
dryRun?: boolean;
|
|
18
|
+
/** 0-based indices into the matches array to generate cover letters for. */
|
|
19
|
+
coverLetterMatchIndices?: number[];
|
|
20
|
+
/** 0-based indices into the matches array to run gap analysis for. */
|
|
21
|
+
gapAnalysisMatchIndices?: number[];
|
|
18
22
|
}
|
|
19
23
|
export interface CareerClawRunSupportOptions {
|
|
20
24
|
fetchFn?: () => Promise<FetchResult>;
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,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,cAAc,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,8BACf,SAAQ,2BAA2B;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,cAAc,CAAC,CA8BzB;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,cAAc,CAAC,CAuBzB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,kBAAkB,CAcpB"}
|
package/dist/runtime.js
CHANGED
|
@@ -24,6 +24,12 @@ export async function runCareerClawStandalone(input, options = {}) {
|
|
|
24
24
|
...(options.licenseCachePath !== undefined
|
|
25
25
|
? { licenseCachePath: options.licenseCachePath }
|
|
26
26
|
: {}),
|
|
27
|
+
...(input.coverLetterMatchIndices !== undefined
|
|
28
|
+
? { coverLetterMatchIndices: input.coverLetterMatchIndices }
|
|
29
|
+
: {}),
|
|
30
|
+
...(input.gapAnalysisMatchIndices !== undefined
|
|
31
|
+
? { gapAnalysisMatchIndices: input.gapAnalysisMatchIndices }
|
|
32
|
+
: {}),
|
|
27
33
|
});
|
|
28
34
|
}
|
|
29
35
|
export async function runCareerClawWithContext(input, context, options = {}) {
|
|
@@ -37,6 +43,12 @@ export async function runCareerClawWithContext(input, context, options = {}) {
|
|
|
37
43
|
...(options.enhanceFetchFn !== undefined
|
|
38
44
|
? { enhanceFetchFn: options.enhanceFetchFn }
|
|
39
45
|
: {}),
|
|
46
|
+
...(input.coverLetterMatchIndices !== undefined
|
|
47
|
+
? { coverLetterMatchIndices: input.coverLetterMatchIndices }
|
|
48
|
+
: {}),
|
|
49
|
+
...(input.gapAnalysisMatchIndices !== undefined
|
|
50
|
+
? { gapAnalysisMatchIndices: input.gapAnalysisMatchIndices }
|
|
51
|
+
: {}),
|
|
40
52
|
});
|
|
41
53
|
}
|
|
42
54
|
export function resolveResumeIntelligence(profile, resumeText, explicit) {
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED