career-compass-mcp 2.9.4 → 2.9.6
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/build/src/clock.d.ts +11 -0
- package/build/src/clock.d.ts.map +1 -0
- package/build/src/clock.js +16 -0
- package/build/src/clock.js.map +1 -0
- package/build/src/tools/career-context.d.ts +16 -0
- package/build/src/tools/career-context.d.ts.map +1 -0
- package/build/src/tools/career-context.js +34 -0
- package/build/src/tools/career-context.js.map +1 -0
- package/build/src/tools/interview.d.ts +16 -0
- package/build/src/tools/interview.d.ts.map +1 -1
- package/build/src/tools/interview.js +64 -25
- package/build/src/tools/interview.js.map +1 -1
- package/build/src/tools/opportunity.d.ts.map +1 -1
- package/build/src/tools/opportunity.js +17 -5
- package/build/src/tools/opportunity.js.map +1 -1
- package/build/src/tools/pipeline.d.ts +1 -0
- package/build/src/tools/pipeline.d.ts.map +1 -1
- package/build/src/tools/pipeline.js +6 -65
- package/build/src/tools/pipeline.js.map +1 -1
- package/build/src/tools/resume.d.ts.map +1 -1
- package/build/src/tools/resume.js +49 -17
- package/build/src/tools/resume.js.map +1 -1
- package/build/src/tools/today-digest.d.ts +6 -0
- package/build/src/tools/today-digest.d.ts.map +1 -0
- package/build/src/tools/today-digest.js +196 -0
- package/build/src/tools/today-digest.js.map +1 -0
- package/build/src/tools/truth-rule.d.ts +19 -0
- package/build/src/tools/truth-rule.d.ts.map +1 -0
- package/build/src/tools/truth-rule.js +28 -0
- package/build/src/tools/truth-rule.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The server's idea of "now", for anything that reads relative dates.
|
|
3
|
+
*
|
|
4
|
+
* `CAREER_COMPASS_TODAY=YYYY-MM-DD` pins it to 9am local on that day. It exists
|
|
5
|
+
* for the eval mocks: the bundled sample pipeline is written as of 2026-06-16,
|
|
6
|
+
* and a digest recorded against the real clock would say "follow-up 110 days
|
|
7
|
+
* overdue" and change every day, so the committed mocks could never match a
|
|
8
|
+
* fresh recording. Unset, or not a date, it is just the real clock.
|
|
9
|
+
*/
|
|
10
|
+
export declare function clockNow(): Date;
|
|
11
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAI/B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The server's idea of "now", for anything that reads relative dates.
|
|
3
|
+
*
|
|
4
|
+
* `CAREER_COMPASS_TODAY=YYYY-MM-DD` pins it to 9am local on that day. It exists
|
|
5
|
+
* for the eval mocks: the bundled sample pipeline is written as of 2026-06-16,
|
|
6
|
+
* and a digest recorded against the real clock would say "follow-up 110 days
|
|
7
|
+
* overdue" and change every day, so the committed mocks could never match a
|
|
8
|
+
* fresh recording. Unset, or not a date, it is just the real clock.
|
|
9
|
+
*/
|
|
10
|
+
export function clockNow() {
|
|
11
|
+
const pinned = process.env.CAREER_COMPASS_TODAY?.trim().match(/^(\d{4})-(\d{2})-(\d{2})$/);
|
|
12
|
+
if (!pinned)
|
|
13
|
+
return new Date();
|
|
14
|
+
return new Date(Number(pinned[1]), Number(pinned[2]) - 1, Number(pinned[3]), 9);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC3F,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CareerData } from "../schemas/career-schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Career facts the drafting and fit tools hand to the model.
|
|
4
|
+
*
|
|
5
|
+
* Every line names its employer, and roles carry their scope (team size, budget)
|
|
6
|
+
* from the summary. When a tool passed only role titles and skills, the model
|
|
7
|
+
* rightly said "your KB doesn't show a budget or team size" to a user whose KB
|
|
8
|
+
* does show them. Whatever the model can't see, it tells the user is missing.
|
|
9
|
+
*/
|
|
10
|
+
/** Each role with its dates and scope summary, newest first as stored. */
|
|
11
|
+
export declare function formatRoles(career: CareerData, max?: number): string;
|
|
12
|
+
/** Achievements, each tagged with the role and employer it belongs to. */
|
|
13
|
+
export declare function formatAchievements(career: CareerData, perRole?: number, max?: number): string;
|
|
14
|
+
/** Degrees, programs and certifications, with the coursework that shows domain depth. */
|
|
15
|
+
export declare function formatCredentials(career: CareerData): string;
|
|
16
|
+
//# sourceMappingURL=career-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"career-context.d.ts","sourceRoot":"","sources":["../../../src/tools/career-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;;;;GAOG;AAEH,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAI,GAAG,MAAM,CAK/D;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,SAAI,EAAE,GAAG,SAAK,GAAG,MAAM,CAMpF;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAO5D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Career facts the drafting and fit tools hand to the model.
|
|
3
|
+
*
|
|
4
|
+
* Every line names its employer, and roles carry their scope (team size, budget)
|
|
5
|
+
* from the summary. When a tool passed only role titles and skills, the model
|
|
6
|
+
* rightly said "your KB doesn't show a budget or team size" to a user whose KB
|
|
7
|
+
* does show them. Whatever the model can't see, it tells the user is missing.
|
|
8
|
+
*/
|
|
9
|
+
/** Each role with its dates and scope summary, newest first as stored. */
|
|
10
|
+
export function formatRoles(career, max = 5) {
|
|
11
|
+
return career.experience.slice(0, max).map(e => {
|
|
12
|
+
const summary = e.summary?.replace(/\s+/g, " ").trim();
|
|
13
|
+
return `- **${e.role} @ ${e.company}** (${e.startDate} to ${e.endDate})${summary ? `: ${summary}` : ""}`;
|
|
14
|
+
}).join("\n") || "- None listed";
|
|
15
|
+
}
|
|
16
|
+
/** Achievements, each tagged with the role and employer it belongs to. */
|
|
17
|
+
export function formatAchievements(career, perRole = 3, max = 12) {
|
|
18
|
+
return career.experience
|
|
19
|
+
.flatMap(e => e.achievements.slice(0, perRole).map(a => `- **${e.role} @ ${e.company}**: ${a.metric}${a.impact ? ` → ${a.impact}` : ""}`))
|
|
20
|
+
.slice(0, max)
|
|
21
|
+
.join("\n") || "- None recorded yet";
|
|
22
|
+
}
|
|
23
|
+
/** Degrees, programs and certifications, with the coursework that shows domain depth. */
|
|
24
|
+
export function formatCredentials(career) {
|
|
25
|
+
return career.education.map(ed => {
|
|
26
|
+
const parts = [`- ${ed.degree}, ${ed.institution}${ed.date ? ` (${ed.date})` : ""}`];
|
|
27
|
+
if (ed.relevantCoursework?.length)
|
|
28
|
+
parts.push(` - Coursework: ${ed.relevantCoursework.join(", ")}`);
|
|
29
|
+
if (ed.certifications.length)
|
|
30
|
+
parts.push(` - Certifications: ${ed.certifications.join("; ")}`);
|
|
31
|
+
return parts.join("\n");
|
|
32
|
+
}).join("\n") || "- None listed";
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=career-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"career-context.js","sourceRoot":"","sources":["../../../src/tools/career-context.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,GAAG,GAAG,CAAC;IACrD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3G,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;AACnC,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE;IAC1E,OAAO,MAAM,CAAC,UAAU;SACrB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACrD,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACnF,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC;AACzC,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAC/B,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,IAAI,EAAE,CAAC,kBAAkB,EAAE,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrG,IAAI,EAAE,CAAC,cAAc,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;AACnC,CAAC"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { Application, Pipeline } from "../schemas/career-schema.js";
|
|
2
3
|
export declare function registerInterviewTools(server: McpServer): void;
|
|
4
|
+
/**
|
|
5
|
+
* One chronological list interleaving recorded rounds with journal signals.
|
|
6
|
+
*
|
|
7
|
+
* The two halves are the whole point: `interviewRounds` says a panel happened
|
|
8
|
+
* and who was in it; the journal says the capacity-optimization story landed and
|
|
9
|
+
* the compliance question did not. Neither alone tells you what the next
|
|
10
|
+
* interviewer will reach for.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* The pipeline entry this prep is about. The id is exact; without one, match the
|
|
14
|
+
* company name (and role, when several share a company), newest first. Users say
|
|
15
|
+
* "my Veridian final", not "demo-001", so a company-only lookup that found nothing
|
|
16
|
+
* told the model "0 rounds recorded" for a process with two rounds on file.
|
|
17
|
+
*/
|
|
18
|
+
export declare function findApplication(pipeline: Pipeline, applicationId: string | undefined, company: string | undefined, role: string | undefined): Application | undefined;
|
|
3
19
|
//# sourceMappingURL=interview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interview.d.ts","sourceRoot":"","sources":["../../../src/tools/interview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"interview.d.ts","sourceRoot":"","sources":["../../../src/tools/interview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,OAAO,KAAK,EAAE,WAAW,EAA4C,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEnH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwX9D;AAkCD;;;;;;;GAOG;AACH;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,WAAW,GAAG,SAAS,CAUzB"}
|
|
@@ -4,6 +4,7 @@ import { guardedRead } from "./read-guard.js";
|
|
|
4
4
|
import { formatSignalDigest } from "./signal-digest.js";
|
|
5
5
|
import { embedUntrusted } from "../untrusted.js";
|
|
6
6
|
import { noCareerDataMessage } from "../empty-state.js";
|
|
7
|
+
import { MARKET_DATA_RULE, TRUTH_RULE } from "./truth-rule.js";
|
|
7
8
|
export function registerInterviewTools(server) {
|
|
8
9
|
server.registerTool("prepare_interview", {
|
|
9
10
|
title: "Prepare Interview",
|
|
@@ -33,23 +34,25 @@ export function registerInterviewTools(server) {
|
|
|
33
34
|
return careerRead.response;
|
|
34
35
|
const career = careerRead.value;
|
|
35
36
|
let appContext = "";
|
|
36
|
-
if (applicationId) {
|
|
37
|
+
if (applicationId || company) {
|
|
37
38
|
const pipeRead = await guardedRead(() => loadPipeline());
|
|
38
39
|
if (!pipeRead.ok)
|
|
39
40
|
return pipeRead.response;
|
|
40
|
-
const
|
|
41
|
-
const app = pipeline.applications.find(a => a.id === applicationId);
|
|
41
|
+
const app = findApplication(pipeRead.value, applicationId, company, role);
|
|
42
42
|
if (app) {
|
|
43
43
|
company = company ?? app.company;
|
|
44
44
|
role = role ?? app.role;
|
|
45
45
|
postingText = postingText ?? app.postingText;
|
|
46
|
+
const rounds = app.interviewRounds.map(r => ` - ${r.type.replace(/_/g, " ")} (${r.date || "date not recorded"})` +
|
|
47
|
+
`${r.interviewers.length ? `, with ${r.interviewers.join(", ")}` : ""}` +
|
|
48
|
+
`${r.outcome ? `: ${r.outcome}` : ""}${r.notes ? `. ${r.notes}` : ""}`);
|
|
46
49
|
appContext = `
|
|
47
|
-
**Application context
|
|
50
|
+
**Application context** (pipeline entry \`${app.id}\`):
|
|
48
51
|
- Status: ${app.status}
|
|
49
|
-
- Applied: ${app.dateApplied ?? "Unknown"}
|
|
50
|
-
- Rounds
|
|
52
|
+
- Applied: ${app.dateApplied ?? "Unknown"}${app.postingUrl ? `\n- Posting: ${app.postingUrl}` : ""}${salaryLine(app)}
|
|
53
|
+
- Rounds recorded: ${app.interviewRounds.length}${rounds.length ? `\n${rounds.join("\n")}` : ""}
|
|
51
54
|
- Notes: ${app.notes.join("; ") || "None"}
|
|
52
|
-
- Contacts: ${app.contacts.map(c => `${c.name} (${c.title})`).join(", ") || "None"}`;
|
|
55
|
+
- Contacts: ${app.contacts.map(c => `${c.name}${c.title ? ` (${c.title})` : ""}`).join(", ") || "None"}`;
|
|
53
56
|
}
|
|
54
57
|
}
|
|
55
58
|
if (!career) {
|
|
@@ -95,8 +98,8 @@ Generate complete interview prep tailored to a ${interviewType.replace("_", " ")
|
|
|
95
98
|
### 1. Opening Pitch (60-90 seconds)
|
|
96
99
|
"Tell me about yourself" — tailored specifically to this role and company. Bridge my background to their context.
|
|
97
100
|
|
|
98
|
-
### 2. STAR Stories (
|
|
99
|
-
For each story, provide:
|
|
101
|
+
### 2. STAR Stories (5-8 stories)
|
|
102
|
+
Build each one from a real achievement in the Career KB, written out in full. For each story, provide:
|
|
100
103
|
- **Situation:** Brief context
|
|
101
104
|
- **Task:** What I was responsible for
|
|
102
105
|
- **Action:** What I specifically did (not "we")
|
|
@@ -123,7 +126,9 @@ How my background specifically connects to ${company ?? "their"} mission, produc
|
|
|
123
126
|
Surprising connections between my experience and their world — things that will make me memorable.
|
|
124
127
|
|
|
125
128
|
### 7. Watch-outs & Reframes
|
|
126
|
-
Likely concerns they'll have about my background, and how to address them proactively and honestly
|
|
129
|
+
Likely concerns they'll have about my background, and how to address them proactively and honestly.
|
|
130
|
+
|
|
131
|
+
${TRUTH_RULE}`,
|
|
127
132
|
}],
|
|
128
133
|
};
|
|
129
134
|
});
|
|
@@ -148,13 +153,12 @@ Likely concerns they'll have about my background, and how to address them proact
|
|
|
148
153
|
let rounds = [];
|
|
149
154
|
let postingText;
|
|
150
155
|
let appContext = "";
|
|
151
|
-
if (applicationId) {
|
|
156
|
+
if (applicationId || company) {
|
|
152
157
|
const pipeRead = await guardedRead(() => loadPipeline());
|
|
153
158
|
if (!pipeRead.ok)
|
|
154
159
|
return pipeRead.response;
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
if (!app) {
|
|
160
|
+
const app = findApplication(pipeRead.value, applicationId, company, role);
|
|
161
|
+
if (!app && applicationId) {
|
|
158
162
|
return {
|
|
159
163
|
isError: true,
|
|
160
164
|
content: [{
|
|
@@ -165,14 +169,17 @@ Likely concerns they'll have about my background, and how to address them proact
|
|
|
165
169
|
}],
|
|
166
170
|
};
|
|
167
171
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
if (app) {
|
|
173
|
+
applicationId = applicationId ?? app.id;
|
|
174
|
+
company = company ?? app.company;
|
|
175
|
+
role = role ?? app.role;
|
|
176
|
+
rounds = app.interviewRounds;
|
|
177
|
+
postingText = app.postingText;
|
|
178
|
+
appContext = `- Status: ${app.status}
|
|
179
|
+
- Applied: ${app.dateApplied ?? "Unknown"}${app.postingUrl ? `\n- Posting: ${app.postingUrl}` : ""}${salaryLine(app)}
|
|
174
180
|
- Known contacts: ${app.contacts.map(c => `${c.name}${c.title ? ` (${c.title})` : ""}`).join(", ") || "None recorded"}
|
|
175
181
|
- Running notes: ${app.notes.join(" · ") || "None"}`;
|
|
182
|
+
}
|
|
176
183
|
}
|
|
177
184
|
if (!applicationId && !company && !interviewSoFarNotes) {
|
|
178
185
|
return {
|
|
@@ -313,16 +320,14 @@ ${otherOffers ? `**Other offers/processes:** ${otherOffers}` : ""}
|
|
|
313
320
|
Break down every component with annualized values:
|
|
314
321
|
- Base salary
|
|
315
322
|
- Target bonus (% and $ amount)
|
|
316
|
-
- Equity (value
|
|
323
|
+
- Equity (grant, vesting schedule, cliff; a dollar value only if the valuation or price per share and the share count are known, otherwise list exactly what to ask for)
|
|
317
324
|
- Benefits (health, 401k match, PTO, etc. — assign approximate $ values)
|
|
318
325
|
- **Total Year 1 comp**
|
|
319
326
|
- **Total Year 4 comp** (fully vested)
|
|
320
327
|
|
|
321
328
|
### 2. Market Comparison
|
|
322
329
|
Compare to market rate for ${role ?? "this role"} at ${company ?? "this company type"}'s stage/size${location ? ` in ${location}` : ""}:
|
|
323
|
-
-
|
|
324
|
-
- How does this offer rank?
|
|
325
|
-
- Is this competitive, low, or above market?
|
|
330
|
+
${marketData ? "- Compare against the market data above, citing it\n- How does this offer rank against it?" : "- No market data was provided, so do not state benchmarks or norms. Say so in one line and name where to get it (Levels.fyi, Glassdoor, Carta, a trusted recruiter)\n- Compare instead against my current pay, my stated targets, and any other offers"}
|
|
326
331
|
|
|
327
332
|
### 3. Negotiation Strategy
|
|
328
333
|
- What should I push on first?
|
|
@@ -348,7 +353,11 @@ If base is firm, what else to ask for:
|
|
|
348
353
|
|
|
349
354
|
### 6. Decision Framework
|
|
350
355
|
Score this offer on: compensation, growth, culture fit, role scope, company trajectory, risk
|
|
351
|
-
Overall recommendation: Accept / Negotiate / Decline
|
|
356
|
+
Overall recommendation: Accept / Negotiate / Decline?
|
|
357
|
+
|
|
358
|
+
${MARKET_DATA_RULE}
|
|
359
|
+
|
|
360
|
+
${TRUTH_RULE}`,
|
|
352
361
|
}],
|
|
353
362
|
};
|
|
354
363
|
});
|
|
@@ -387,6 +396,36 @@ function dateKey(date) {
|
|
|
387
396
|
* the compliance question did not. Neither alone tells you what the next
|
|
388
397
|
* interviewer will reach for.
|
|
389
398
|
*/
|
|
399
|
+
/**
|
|
400
|
+
* The pipeline entry this prep is about. The id is exact; without one, match the
|
|
401
|
+
* company name (and role, when several share a company), newest first. Users say
|
|
402
|
+
* "my Veridian final", not "demo-001", so a company-only lookup that found nothing
|
|
403
|
+
* told the model "0 rounds recorded" for a process with two rounds on file.
|
|
404
|
+
*/
|
|
405
|
+
export function findApplication(pipeline, applicationId, company, role) {
|
|
406
|
+
if (applicationId)
|
|
407
|
+
return pipeline.applications.find(a => a.id === applicationId);
|
|
408
|
+
if (!company)
|
|
409
|
+
return undefined;
|
|
410
|
+
const norm = (t) => t.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
411
|
+
const want = norm(company);
|
|
412
|
+
const byCompany = pipeline.applications
|
|
413
|
+
.filter(a => norm(a.company) === want)
|
|
414
|
+
.sort((a, b) => (b.dateUpdated ?? "").localeCompare(a.dateUpdated ?? ""));
|
|
415
|
+
if (byCompany.length <= 1 || !role)
|
|
416
|
+
return byCompany[0];
|
|
417
|
+
return byCompany.find(a => norm(a.role) === norm(role)) ?? byCompany[0];
|
|
418
|
+
}
|
|
419
|
+
/** The posted pay range saved on the application, as a context line, or nothing. */
|
|
420
|
+
function salaryLine(app) {
|
|
421
|
+
const r = app.salaryRange;
|
|
422
|
+
if (!r || (r.min === undefined && r.max === undefined))
|
|
423
|
+
return "";
|
|
424
|
+
const fmt = (n) => n.toLocaleString("en-US");
|
|
425
|
+
const band = r.min !== undefined && r.max !== undefined ? `${fmt(r.min)}–${fmt(r.max)}`
|
|
426
|
+
: r.min !== undefined ? `from ${fmt(r.min)}` : `up to ${fmt(r.max)}`;
|
|
427
|
+
return `\n- Salary range on file: ${r.currency} ${band}`;
|
|
428
|
+
}
|
|
390
429
|
function buildTimeline(rounds, journal) {
|
|
391
430
|
const items = [];
|
|
392
431
|
for (const r of rounds) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../../src/tools/interview.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../../src/tools/interview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opportunity.d.ts","sourceRoot":"","sources":["../../../src/tools/opportunity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"opportunity.d.ts","sourceRoot":"","sources":["../../../src/tools/opportunity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6LhE"}
|
|
@@ -4,6 +4,8 @@ import { guardedRead } from "./read-guard.js";
|
|
|
4
4
|
import { formatSignalDigest } from "./signal-digest.js";
|
|
5
5
|
import { embedUntrusted } from "../untrusted.js";
|
|
6
6
|
import { noCareerDataMessage } from "../empty-state.js";
|
|
7
|
+
import { TRUTH_RULE } from "./truth-rule.js";
|
|
8
|
+
import { formatRoles, formatAchievements, formatCredentials } from "./career-context.js";
|
|
7
9
|
export function registerOpportunityTools(server) {
|
|
8
10
|
server.registerTool("explore_opportunity", {
|
|
9
11
|
title: "Explore Opportunity",
|
|
@@ -107,7 +109,9 @@ Based on the posting, describe the first 90 days and a typical week in this role
|
|
|
107
109
|
Anything in the posting that warrants clarification or concern.
|
|
108
110
|
|
|
109
111
|
### 10. Verdict
|
|
110
|
-
Pursue or not? The strategic case for or against, stated in one paragraph. If any check in sections 2, 3, or 5 came back as a blocker, the verdict has to reckon with it rather than route around it
|
|
112
|
+
Pursue or not? The strategic case for or against, stated in one paragraph. If any check in sections 2, 3, or 5 came back as a blocker, the verdict has to reckon with it rather than route around it.
|
|
113
|
+
|
|
114
|
+
${TRUTH_RULE}`,
|
|
111
115
|
}],
|
|
112
116
|
};
|
|
113
117
|
});
|
|
@@ -225,12 +229,20 @@ function buildPreferenceContract(profile) {
|
|
|
225
229
|
function buildCareerSummary(career) {
|
|
226
230
|
if (!career)
|
|
227
231
|
return "No career data available.";
|
|
228
|
-
const { profile,
|
|
229
|
-
const topSkills = skills.slice(0,
|
|
230
|
-
const recentRoles = experience.slice(0, 3).map(e => `${e.role} at ${e.company}`).join("; ");
|
|
232
|
+
const { profile, skills } = career;
|
|
233
|
+
const topSkills = skills.slice(0, 15).map(s => s.name).join(", ");
|
|
231
234
|
return `**Name:** ${profile.name}
|
|
232
235
|
**Summary:** ${profile.summary}
|
|
233
|
-
|
|
236
|
+
|
|
237
|
+
**Roles and scope:**
|
|
238
|
+
${formatRoles(career)}
|
|
239
|
+
|
|
240
|
+
**Evidence (achievements by role):**
|
|
241
|
+
${formatAchievements(career)}
|
|
242
|
+
|
|
243
|
+
**Education and certifications:**
|
|
244
|
+
${formatCredentials(career)}
|
|
245
|
+
|
|
234
246
|
**Key skills:** ${topSkills || "None listed"}
|
|
235
247
|
**Target roles:** ${profile.targetRoles.join(", ") || "Not specified"}
|
|
236
248
|
**Target industries:** ${profile.targetIndustries.join(", ") || "Not specified"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opportunity.js","sourceRoot":"","sources":["../../../src/tools/opportunity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"opportunity.js","sourceRoot":"","sources":["../../../src/tools/opportunity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzF,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IAExD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,+DAA+D;QAC/D,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,gSAAgS;QAC7S,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;YAC7F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YAC3E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACtF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mJAAmJ,CAAC;SACpM;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,EAAE;qBAC5B,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;EAGd,aAAa;;EAEb,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;;EAElC,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;EACtC,OAAO,CAAC,CAAC,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;EAC1C,KAAK,CAAC,CAAC,CAAC,gBAAgB,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EAClE,cAAc,CAAC,CAAC,CAAC,6IAA6I,cAAc,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CvN,cAAc;wBACd,CAAC,CAAC;;;sFAGkF;wBACpF,CAAC,CAAC,qWAAqW;;;;;;;;;;;;;;EAcvW,UAAU,EAAE;iBACL,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,sEAAsE;QACtE,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,wIAAwI;QACrJ,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACjE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;SAChG;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;QAEhC,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,6BAA6B,OAAO;;mBAEjC,IAAI,IAAI,eAAe;EACxC,aAAa,CAAC,CAAC,CAAC,sCAAsC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAG1E,OAAO,CAAC,CAAC,CAAC,mBAAmB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;uBACzD,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;uBACtD,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sEAiChD;iBAC7D,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;IACjD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,IAAI,GACR,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QAClF,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,yBAAyB;YACxE,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,iBAAiB;gBACtE,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,EAAE,CAC5C,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzD,OAAO,oBAAoB,IAAI;sBACX,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;0BACxB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;qBACrC,OAAO,CAAC,YAAY,IAAI,SAAS;2BAC3B,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAkD;IAC5E,IAAI,CAAC,MAAM;QAAE,OAAO,2BAA2B,CAAC;IAChD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEnC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElE,OAAO,aAAa,OAAO,CAAC,IAAI;eACnB,OAAO,CAAC,OAAO;;;EAG5B,WAAW,CAAC,MAAM,CAAC;;;EAGnB,kBAAkB,CAAC,MAAM,CAAC;;;EAG1B,iBAAiB,CAAC,MAAM,CAAC;;kBAET,SAAS,IAAI,aAAa;oBACxB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;yBAC5C,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;;;EAG7E,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -27,6 +27,7 @@ export declare function handleUpdate(args: PipelineUpdateArgs, pipeline: Pipelin
|
|
|
27
27
|
export declare function handleGet(args: PipelineGetArgs, pipeline: Pipeline): ToolResponse;
|
|
28
28
|
export declare function handleList(args: PipelineListArgs, pipeline: Pipeline): ToolResponse;
|
|
29
29
|
export declare function handleStats(pipeline: Pipeline): ToolResponse;
|
|
30
|
+
/** Today's ranked digest. See today-digest.ts. */
|
|
30
31
|
export declare function handleNextActions(pipeline: Pipeline, now?: Date): ToolResponse;
|
|
31
32
|
export declare function registerPipelineTools(server: McpServer): void;
|
|
32
33
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/tools/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAe,iBAAiB,EAAE,QAAQ,EAA4B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/tools/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAe,iBAAiB,EAAE,QAAQ,EAA4B,MAAM,6BAA6B,CAAC;AAQjH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAc/B,KAAK,WAAW,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACvC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAapD;AAyBD,wBAAsB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CA6ChG;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAyCtG;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAIjF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,CA+CnF;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAgC5D;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAE,IAAiB,GAAG,YAAY,CAE1F;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6O7D"}
|
|
@@ -6,6 +6,8 @@ import { embedUntrusted } from "../untrusted.js";
|
|
|
6
6
|
import { isWriteClaimUnavailable } from "../storage/write-claim.js";
|
|
7
7
|
import { isReadOnlyStore } from "../storage/read-only-error.js";
|
|
8
8
|
import { ACTIVE_STATUSES, computeStats } from "../pipeline-stats.js";
|
|
9
|
+
import { buildTodayDigest } from "./today-digest.js";
|
|
10
|
+
import { clockNow } from "../clock.js";
|
|
9
11
|
// ─── Status validation ────────────────────────────────────────────────────────
|
|
10
12
|
/**
|
|
11
13
|
* Statuses a search is still live in — everything before `accepted`.
|
|
@@ -234,70 +236,9 @@ ${apps.filter(a => a.priority === "high" && ACTIVE_STATUSES.includes(a.status)).
|
|
|
234
236
|
}],
|
|
235
237
|
};
|
|
236
238
|
}
|
|
239
|
+
/** Today's ranked digest. See today-digest.ts. */
|
|
237
240
|
export function handleNextActions(pipeline, now = new Date()) {
|
|
238
|
-
|
|
239
|
-
// Compare CALENDAR DAYS in the user's own timezone, not timestamps.
|
|
240
|
-
// `new Date("2026-07-24")` is parsed as UTC midnight, while `Date.now()` is
|
|
241
|
-
// local — so west of UTC a follow-up due today came out negative, and east
|
|
242
|
-
// of UTC tomorrow's reminder fired a day early. A date-only field has no
|
|
243
|
-
// time in it; treating it as one is the bug.
|
|
244
|
-
const midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
|
|
245
|
-
const days = (iso) => {
|
|
246
|
-
if (!iso)
|
|
247
|
-
return NaN;
|
|
248
|
-
const [y, m, d] = iso.slice(0, 10).split("-").map(Number);
|
|
249
|
-
if (!y || !m || !d)
|
|
250
|
-
return NaN;
|
|
251
|
-
return Math.round((new Date(y, m - 1, d).getTime() - midnight) / 86400000);
|
|
252
|
-
};
|
|
253
|
-
for (const app of pipeline.applications) {
|
|
254
|
-
// Same closed set the lite dashboard's deriveNextActions skips: a ghosted
|
|
255
|
-
// application is over, and nagging "follow up" on it is the wrong advice.
|
|
256
|
-
if (["rejected", "withdrawn", "accepted", "ghosted"].includes(app.status))
|
|
257
|
-
continue;
|
|
258
|
-
// `dateUpdated` is a full timestamp (toISOString), not a date-only field, so
|
|
259
|
-
// it gets timestamp arithmetic. Running it through the calendar-day helper
|
|
260
|
-
// took its UTC date against LOCAL midnight — between UTC midnight and local
|
|
261
|
-
// midnight every "applied Nd ago" came out one day short. Caught by the
|
|
262
|
-
// 7+-day test failing only in the evening, US time.
|
|
263
|
-
const updatedMs = Date.parse(app.dateUpdated);
|
|
264
|
-
const daysSinceUpdate = Number.isNaN(updatedMs) ? 0 : Math.floor((now.getTime() - updatedMs) / 86400000);
|
|
265
|
-
if (app.status === "applied" && daysSinceUpdate >= 7) {
|
|
266
|
-
actions.push(`📬 **Follow up** — ${app.company} / ${app.role} (applied ${daysSinceUpdate}d ago, ID: ${app.id})`);
|
|
267
|
-
}
|
|
268
|
-
if (app.status === "screening" && daysSinceUpdate >= 5) {
|
|
269
|
-
actions.push(`📞 **Check status** — ${app.company} / ${app.role} (in screening ${daysSinceUpdate}d, ID: ${app.id})`);
|
|
270
|
-
}
|
|
271
|
-
const followUpDays = days(app.followUpDue);
|
|
272
|
-
if (!Number.isNaN(followUpDays) && followUpDays <= 0) {
|
|
273
|
-
actions.push(`⚠️ **Overdue follow-up** — ${app.company} / ${app.role} (due ${app.followUpDue}, ID: ${app.id})`);
|
|
274
|
-
}
|
|
275
|
-
if (app.status === "interviewing") {
|
|
276
|
-
const upcomingRounds = app.interviewRounds
|
|
277
|
-
.map(r => ({ ...r, d: days(r.date) }))
|
|
278
|
-
.filter(r => !Number.isNaN(r.d) && r.d >= 0)
|
|
279
|
-
.sort((a, b) => a.d - b.d);
|
|
280
|
-
const nextInterview = upcomingRounds[0];
|
|
281
|
-
if (nextInterview) {
|
|
282
|
-
actions.push(`🎯 **Upcoming interview** — ${app.company} / ${app.role}: ${nextInterview.type} on ${nextInterview.date} (ID: ${app.id})`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
if (app.status === "offer") {
|
|
286
|
-
actions.push(`💰 **Pending offer** — ${app.company} / ${app.role} — evaluate and respond (ID: ${app.id})`);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
return {
|
|
290
|
-
content: [{
|
|
291
|
-
type: "text",
|
|
292
|
-
text: actions.length > 0
|
|
293
|
-
? `# Next Actions (${actions.length})\n\n${actions.join("\n")}`
|
|
294
|
-
// "Up to date" over an empty pipeline is reassurance where orientation
|
|
295
|
-
// was needed; say which of the two states this is.
|
|
296
|
-
: pipeline.applications.length === 0
|
|
297
|
-
? "Nothing tracked yet, so there is nothing to act on. Add your first application with `pipeline_add` and follow-ups, interviews, and expiring offers will surface here."
|
|
298
|
-
: "✅ No immediate actions needed. Your pipeline is up to date.",
|
|
299
|
-
}],
|
|
300
|
-
};
|
|
241
|
+
return buildTodayDigest(pipeline, now);
|
|
301
242
|
}
|
|
302
243
|
// ─── Tool Registration ────────────────────────────────────────────────────────
|
|
303
244
|
export function registerPipelineTools(server) {
|
|
@@ -315,7 +256,7 @@ export function registerPipelineTools(server) {
|
|
|
315
256
|
description: "Read the job application pipeline: list applications, summarize stats, surface what needs attention, or fetch one application by id. Read-only — never modifies anything.",
|
|
316
257
|
inputSchema: {
|
|
317
258
|
action: z.enum(["list", "stats", "next_actions", "get"])
|
|
318
|
-
.describe("list = all applications (filterable); stats = funnel and response-rate summary; next_actions = what is
|
|
259
|
+
.describe("list = all applications (filterable); stats = funnel and response-rate summary; next_actions = today's ranked digest: one start-here move, the rest of what is due, and what is coming up; get = one application by id"),
|
|
319
260
|
id: z.string().optional().describe("Application id. Required when action=get."),
|
|
320
261
|
filterStatus: ApplicationStatus.optional().describe("action=list only: show only applications in this status"),
|
|
321
262
|
filterPriority: z.enum(["high", "medium", "low"]).optional().describe("action=list only: show only applications at this priority"),
|
|
@@ -352,7 +293,7 @@ export function registerPipelineTools(server) {
|
|
|
352
293
|
case "stats":
|
|
353
294
|
return handleStats(pipeline);
|
|
354
295
|
case "next_actions":
|
|
355
|
-
return handleNextActions(pipeline);
|
|
296
|
+
return handleNextActions(pipeline, clockNow());
|
|
356
297
|
default:
|
|
357
298
|
return { content: [{ type: "text", text: `❌ Unknown action: ${args.action}` }], isError: true };
|
|
358
299
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/tools/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/tools/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/tools/resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/tools/resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqT3D"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { loadCareerData } from "../storage/file-store.js";
|
|
2
|
+
import { loadCareerData, loadPipeline } from "../storage/file-store.js";
|
|
3
3
|
import { guardedRead } from "./read-guard.js";
|
|
4
4
|
import { formatSignalDigest } from "./signal-digest.js";
|
|
5
5
|
import { embedUntrusted } from "../untrusted.js";
|
|
6
6
|
import { noCareerDataMessage } from "../empty-state.js";
|
|
7
|
+
import { TRUTH_RULE } from "./truth-rule.js";
|
|
8
|
+
import { formatRoles, formatAchievements } from "./career-context.js";
|
|
7
9
|
export function registerResumeTools(server) {
|
|
8
10
|
server.registerTool("tailor_resume", {
|
|
9
11
|
title: "Tailor Resume",
|
|
@@ -58,7 +60,7 @@ Using the complete Career KB above, generate a tailored resume:
|
|
|
58
60
|
**Structure for ${format} format:**
|
|
59
61
|
${format === "standard" ? `1. Header (name, contact, LinkedIn)
|
|
60
62
|
2. Professional Summary (3-4 sentences, bridging background to this role)
|
|
61
|
-
3. Core Competencies (
|
|
63
|
+
3. Core Competencies (only skills in the Career KB, in the posting's wording where it names the same skill)
|
|
62
64
|
4. Professional Experience (reverse chronological, achievement-focused)
|
|
63
65
|
5. ${includeProjects ? "Key Projects\n6. Education & Certifications" : "Education & Certifications"}` : ""}
|
|
64
66
|
${format === "federal" ? `1. Header with full contact info
|
|
@@ -85,13 +87,15 @@ ${format === "functional" ? `1. Header
|
|
|
85
87
|
**Rules:**
|
|
86
88
|
- Match the posting's language exactly where truthful
|
|
87
89
|
- Lead each achievement with an action verb
|
|
88
|
-
-
|
|
90
|
+
- Keep every number the Career KB gives; never add a number it doesn't
|
|
89
91
|
- ATS-safe: no tables, columns, headers/footers, graphics
|
|
90
92
|
- Do not fabricate — only use data from the Career KB
|
|
91
|
-
-
|
|
93
|
+
- Mark anything that needs my confirmation with a [confirm: ...] placeholder
|
|
92
94
|
- Industry-agnostic: use the posting's vocabulary, not my previous employer's
|
|
93
95
|
|
|
94
|
-
Output the full resume text, then a "Keyword Match Report" showing which posting requirements are covered and which aren't
|
|
96
|
+
Output the full resume text, then a "Keyword Match Report" showing which posting requirements are covered and which aren't.
|
|
97
|
+
|
|
98
|
+
${TRUTH_RULE}`,
|
|
95
99
|
}],
|
|
96
100
|
};
|
|
97
101
|
});
|
|
@@ -104,15 +108,17 @@ Output the full resume text, then a "Keyword Match Report" showing which posting
|
|
|
104
108
|
idempotentHint: true,
|
|
105
109
|
openWorldHint: false,
|
|
106
110
|
},
|
|
107
|
-
description: "Write a compelling, personalized cover letter
|
|
111
|
+
description: "Write a compelling, personalized cover letter using your Career KB. Works from a pasted posting, from an application already in the pipeline (its cached posting, role, and notes), or from just a company and role.",
|
|
108
112
|
inputSchema: {
|
|
109
|
-
posting: z.string().describe("Full job posting text"),
|
|
113
|
+
posting: z.string().optional().describe("Full job posting text. Optional: without it, the cached posting from the pipeline is used, or the letter is written from the role and your history"),
|
|
110
114
|
company: z.string().describe("Company name"),
|
|
115
|
+
role: z.string().optional().describe("Role title, used to find the application in the pipeline and when there is no posting"),
|
|
116
|
+
applicationId: z.string().optional().describe("Pipeline application ID, to use its cached posting and notes"),
|
|
111
117
|
hiringManager: z.string().optional().describe("Hiring manager name if known"),
|
|
112
118
|
tone: z.enum(["professional", "conversational", "enthusiastic", "concise"]).default("professional").describe("Voice of the letter. Match it to the company: professional for traditional or regulated employers, conversational for startups, enthusiastic when you genuinely want this one, concise when the posting asks for brevity."),
|
|
113
119
|
angle: z.string().optional().describe("The key story or angle to lead with"),
|
|
114
120
|
},
|
|
115
|
-
}, async ({ posting, company, hiringManager, tone, angle }) => {
|
|
121
|
+
}, async ({ posting, company, role, applicationId, hiringManager, tone, angle }) => {
|
|
116
122
|
const read = await guardedRead(() => loadCareerData());
|
|
117
123
|
if (!read.ok)
|
|
118
124
|
return read.response;
|
|
@@ -122,6 +128,27 @@ Output the full resume text, then a "Keyword Match Report" showing which posting
|
|
|
122
128
|
content: [{ type: "text", text: noCareerDataMessage() }],
|
|
123
129
|
};
|
|
124
130
|
}
|
|
131
|
+
// Asking a user to paste a posting the pipeline already holds, or refusing to
|
|
132
|
+
// draft without one, was the top memory failure in the evals. Use what's saved.
|
|
133
|
+
let appContext = "";
|
|
134
|
+
if (!posting || applicationId) {
|
|
135
|
+
const pipeRead = await guardedRead(() => loadPipeline());
|
|
136
|
+
if (!pipeRead.ok)
|
|
137
|
+
return pipeRead.response;
|
|
138
|
+
const lc = (s) => s.trim().toLowerCase();
|
|
139
|
+
const app = applicationId
|
|
140
|
+
? pipeRead.value.applications.find(a => a.id === applicationId)
|
|
141
|
+
: pipeRead.value.applications.find(a => lc(a.company) === lc(company) && (!role || lc(a.role) === lc(role)));
|
|
142
|
+
if (app) {
|
|
143
|
+
role = role ?? app.role;
|
|
144
|
+
posting = posting ?? app.postingText;
|
|
145
|
+
appContext = `
|
|
146
|
+
## From Your Pipeline
|
|
147
|
+
- **Role:** ${app.role}
|
|
148
|
+
- **Status:** ${app.status}${app.referral ? `\n- **Referral:** ${app.referral}` : ""}
|
|
149
|
+
- **Notes:** ${app.notes.length ? embedUntrusted("application notes", app.notes.join("; ")) : "None"}`;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
125
152
|
return {
|
|
126
153
|
content: [{
|
|
127
154
|
type: "text",
|
|
@@ -130,14 +157,17 @@ Output the full resume text, then a "Keyword Match Report" showing which posting
|
|
|
130
157
|
## Career KB Summary
|
|
131
158
|
**Name:** ${career.profile.name}
|
|
132
159
|
**Summary:** ${career.profile.summary}
|
|
133
|
-
**
|
|
134
|
-
${career
|
|
160
|
+
**Roles and scope:**
|
|
161
|
+
${formatRoles(career)}
|
|
135
162
|
|
|
136
|
-
|
|
137
|
-
${
|
|
163
|
+
**Top achievements (by role):**
|
|
164
|
+
${formatAchievements(career, 2, 8)}
|
|
165
|
+
|
|
166
|
+
${posting ? `## Job Posting\n${embedUntrusted("job posting", posting)}` : `## Job Posting\nNone available. Write the letter from the role${role ? ` (${role})` : ""}, the company name, and my history. Do not ask me for the posting first: deliver the letter, then say in one line that pasting the posting would let you sharpen it.`}
|
|
167
|
+
${appContext}
|
|
138
168
|
|
|
139
169
|
## Parameters
|
|
140
|
-
- **Company:** ${company}
|
|
170
|
+
- **Company:** ${company}${role ? `\n- **Role:** ${role}` : ""}
|
|
141
171
|
- **Hiring manager:** ${hiringManager ?? "Unknown (use 'Dear Hiring Team')"}
|
|
142
172
|
- **Tone:** ${tone}
|
|
143
173
|
${angle ? `- **Lead angle:** ${angle}` : ""}
|
|
@@ -147,11 +177,11 @@ ${angle ? `- **Lead angle:** ${angle}` : ""}
|
|
|
147
177
|
**Instructions for Claude:**
|
|
148
178
|
Write a compelling cover letter. Structure:
|
|
149
179
|
|
|
150
|
-
**Opening (1 paragraph):** Hook with a specific achievement or
|
|
180
|
+
**Opening (1 paragraph):** Hook with a specific achievement of mine, or something the posting says about ${company}, that connects to why I'm applying. Don't open with "I am writing to apply" or any version of "I'm applying for the X role".
|
|
151
181
|
|
|
152
182
|
**Body (2 paragraphs):**
|
|
153
|
-
- Para 1: My most relevant experience
|
|
154
|
-
- Para 2: Why ${company} specifically
|
|
183
|
+
- Para 1: My most relevant experience and its outcome, told plainly from the Career KB
|
|
184
|
+
- Para 2: Why ${company} specifically, using only what the posting, my notes, or I have said about them. If that's nothing, make the case about the role and the problems it owns rather than inventing facts about the company
|
|
155
185
|
|
|
156
186
|
**Closing (1 paragraph):** Confident call to action. Specific, not generic.
|
|
157
187
|
|
|
@@ -161,7 +191,9 @@ ${tone === "conversational" ? "Warm, direct, human — write like you talk" : ""
|
|
|
161
191
|
${tone === "enthusiastic" ? "High energy, genuine excitement, mission-driven" : ""}
|
|
162
192
|
${tone === "concise" ? "Every sentence earns its place. Max 250 words total." : ""}
|
|
163
193
|
|
|
164
|
-
Keep it under 400 words. Make it feel human, not templated
|
|
194
|
+
Keep it under 400 words. Make it feel human, not templated, through plain specific language rather than invented story: each sentence about me is either a fact from the Career KB or a plain statement of what I would bring or want. No scenes, causes, surprises, or lessons the Career KB doesn't give ("when results were stuck", "I didn't call it that at the time"), no "I've always…", and no claims about how I work today unless I am working today.
|
|
195
|
+
|
|
196
|
+
${TRUTH_RULE}`,
|
|
165
197
|
}],
|
|
166
198
|
};
|
|
167
199
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/tools/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/tools/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IAEnD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,kEAAkE;QAClE,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,mGAAmG;QAChH,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACrD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC/G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACxE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;SAC5G;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,EAAE;QAChE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC;aACzD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;EAGd,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;EAE/B,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;;EAElC,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;;;gBAGxB,MAAM;gBACN,KAAK;0BACK,eAAe;EACvC,UAAU,CAAC,CAAC,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;kBAOvC,MAAM;EACtB,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC;;;;KAIrB,eAAe,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE;EACxG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;;;;iBAIR,CAAC,CAAC,CAAC,EAAE;EACpB,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC;;;;;;;;wDAQ8B,CAAC,CAAC,CAAC,EAAE;EAC3D,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC;;;;;aAKf,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;EAahB,UAAU,EAAE;iBACL,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,kEAAkE;QAClE,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,sNAAsN;QACnO,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oJAAoJ,CAAC;YAC7L,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;YAC7H,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YAC7G,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC7E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,2NAA2N,CAAC;YACzU,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SAC7E;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC;aACzD,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,gFAAgF;QAChF,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;YAC3C,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,aAAa;gBACvB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC;gBAC/D,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACnC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;gBACxB,OAAO,GAAG,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC;gBACrC,UAAU,GAAG;;cAET,GAAG,CAAC,IAAI;gBACN,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;eACrE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,mBAAmB,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;YAGJ,MAAM,CAAC,OAAO,CAAC,IAAI;eAChB,MAAM,CAAC,OAAO,CAAC,OAAO;;EAEnC,WAAW,CAAC,MAAM,CAAC;;;EAGnB,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;;EAEhC,OAAO,CAAC,CAAC,CAAC,mBAAmB,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,iEAAiE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,sKAAsK;EACvU,UAAU;;;iBAGK,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;wBACtC,aAAa,IAAI,kCAAkC;cAC7D,IAAI;EAChB,KAAK,CAAC,CAAC,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;2GAOgE,OAAO;;;;gBAIlG,OAAO;;;;mBAIJ,IAAI;EACrB,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE;EAClE,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE;EAC5E,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,EAAE;EAChF,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,EAAE;;;;EAIhF,UAAU,EAAE;iBACL,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,+DAA+D;QAC/D,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,mHAAmH;QAChI,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC/D,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAClJ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SAC5E;KACF,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;QACpD,MAAM,YAAY,GAA2B;YAC3C,OAAO,EAAE;;;;;;;wBAOO;YAEhB,UAAU,EAAE;;;;;4DAKwC;YAEpD,KAAK,EAAE;;;;;iEAKkD;YAEzD,QAAQ,EAAE;;;;;gEAK8C;YAExD,KAAK,EAAE;;;;;oCAKqB;YAE5B,KAAK,EAAE;;;;;6CAK8B;YAErC,eAAe,EAAE;;;;6CAIoB;YAErC,OAAO,EAAE;;;;;wDAKuC;SACjD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qBAAqB,YAAY,CAAC,WAAW,EAAE;;EAE7D,YAAY,CAAC,YAAY,CAAC;;;EAG1B,cAAc,CAAC,gBAAgB,EAAE,aAAa,CAAC;;EAE/C,UAAU,CAAC,CAAC,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;kDAKR,YAAY;;iDAEb,YAAY;;;;;;sFAMyB;iBAC7E,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Pipeline } from "../schemas/career-schema.js";
|
|
2
|
+
import type { ToolResponse } from "../types/tool-args.js";
|
|
3
|
+
/** Days from `now`'s calendar day to an ISO date, in the user's own timezone. */
|
|
4
|
+
export declare function calendarDays(now: Date): (iso?: string) => number;
|
|
5
|
+
export declare function buildTodayDigest(pipeline: Pipeline, now?: Date): ToolResponse;
|
|
6
|
+
//# sourceMappingURL=today-digest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"today-digest.d.ts","sourceRoot":"","sources":["../../../src/tools/today-digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAiC1D,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,UAKtB,MAAM,KAAG,MAAM,CAM9B;AA2GD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAE,IAAiB,GAAG,YAAY,CAmEzF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { statusRank } from "../schemas/career-schema.js";
|
|
2
|
+
import { computeStats } from "../pipeline-stats.js";
|
|
3
|
+
/**
|
|
4
|
+
* Today's job-search digest: what `pipeline_view action=next_actions` returns,
|
|
5
|
+
* and what `/career-compass:today` is built on.
|
|
6
|
+
*
|
|
7
|
+
* The old version was a flat, unranked list. On the sample pipeline four months
|
|
8
|
+
* on it printed nine lines, the same application twice ("Follow up" and
|
|
9
|
+
* "Overdue follow-up"), "evaluate and respond" on an offer whose deadline had
|
|
10
|
+
* passed, and "follow up" on applications silent for 110 days. It never named a
|
|
11
|
+
* discovered role left unapplied or a follow-up due tomorrow. A list like that
|
|
12
|
+
* gives nobody a reason to come back the next morning.
|
|
13
|
+
*
|
|
14
|
+
* Now each live application yields at most one item, its most pressing, and the
|
|
15
|
+
* items are ranked. The top one is the "Start here" move; the rest of today's
|
|
16
|
+
* list follows; anything due in the next few days goes under "Coming up". Every
|
|
17
|
+
* item ends with one concrete action the user can take or ask for.
|
|
18
|
+
*/
|
|
19
|
+
const CLOSED = ["rejected", "withdrawn", "accepted", "ghosted"];
|
|
20
|
+
/** Scores at or above this are today's work; below it, "Coming up". */
|
|
21
|
+
const TODAY = 40;
|
|
22
|
+
/** Days from `now`'s calendar day to an ISO date, in the user's own timezone. */
|
|
23
|
+
export function calendarDays(now) {
|
|
24
|
+
// `new Date("2026-07-24")` is parsed as UTC midnight while `now` is local, so
|
|
25
|
+
// west of UTC a follow-up due today came out negative and east of UTC
|
|
26
|
+
// tomorrow's fired a day early. A date-only field has no time in it.
|
|
27
|
+
const midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
|
|
28
|
+
return (iso) => {
|
|
29
|
+
if (!iso)
|
|
30
|
+
return NaN;
|
|
31
|
+
const [y, m, d] = iso.slice(0, 10).split("-").map(Number);
|
|
32
|
+
if (!y || !m || !d)
|
|
33
|
+
return NaN;
|
|
34
|
+
return Math.round((new Date(y, m - 1, d).getTime() - midnight) / 86400000);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function when(d) {
|
|
38
|
+
if (d === 0)
|
|
39
|
+
return "today";
|
|
40
|
+
if (d === 1)
|
|
41
|
+
return "tomorrow";
|
|
42
|
+
if (d === -1)
|
|
43
|
+
return "yesterday";
|
|
44
|
+
return d > 0 ? `in ${d} days` : `${-d} days ago`;
|
|
45
|
+
}
|
|
46
|
+
function label(app) {
|
|
47
|
+
return `${app.company} / ${app.role}`;
|
|
48
|
+
}
|
|
49
|
+
/** The person to nudge: a recruiter if one is recorded, else the first contact. */
|
|
50
|
+
function contactFor(app) {
|
|
51
|
+
const people = app.contacts ?? [];
|
|
52
|
+
const recruiter = people.find((c) => /recruit|talent|people|\bhr\b/i.test(c.title ?? ""));
|
|
53
|
+
return (recruiter ?? people[0])?.name;
|
|
54
|
+
}
|
|
55
|
+
function roundName(type) {
|
|
56
|
+
return type.replace(/_/g, " ");
|
|
57
|
+
}
|
|
58
|
+
/** Every reason this application might need the user, scored. */
|
|
59
|
+
function candidates(app, now) {
|
|
60
|
+
const days = calendarDays(now);
|
|
61
|
+
const out = [];
|
|
62
|
+
const who = contactFor(app);
|
|
63
|
+
const nudge = who ? `Send ${who} a two-line check-in. I can draft it.` : "Send a two-line check-in to the recruiter or hiring manager. I can draft it.";
|
|
64
|
+
// `dateUpdated` is a full timestamp, so it gets timestamp arithmetic: through
|
|
65
|
+
// the calendar-day helper its UTC date lost a day every evening, US time.
|
|
66
|
+
const updatedMs = Date.parse(app.dateUpdated);
|
|
67
|
+
const quiet = Number.isNaN(updatedMs) ? 0 : Math.floor((now.getTime() - updatedMs) / 86400000);
|
|
68
|
+
// Interviews. A future round on an application already at offer is a
|
|
69
|
+
// leftover, not a plan, so only stages up to interviewing count.
|
|
70
|
+
const upcoming = statusRank(app.status) > statusRank("interviewing") ? [] : (app.interviewRounds ?? [])
|
|
71
|
+
.map((r) => ({ ...r, d: days(r.date) }))
|
|
72
|
+
.filter((r) => !Number.isNaN(r.d) && r.d >= 0)
|
|
73
|
+
.sort((a, b) => a.d - b.d);
|
|
74
|
+
const next = upcoming[0];
|
|
75
|
+
if (next) {
|
|
76
|
+
const line = `🎯 **Upcoming interview** — ${label(app)}: ${roundName(next.type)} ${when(next.d)} (${next.date}, ID: ${app.id})`;
|
|
77
|
+
const action = `Prep for it${next.d <= 1 ? " today" : ""}. Ask "prep me for my ${app.company} ${roundName(next.type)}" and I'll build it from your history and notes.`;
|
|
78
|
+
out.push({ app, score: next.d <= 1 ? 100 : next.d <= 7 ? 70 : 15, line, action });
|
|
79
|
+
}
|
|
80
|
+
// Offers.
|
|
81
|
+
if (app.status === "offer" || app.status === "negotiating") {
|
|
82
|
+
const exp = days(app.offer?.expiresDate);
|
|
83
|
+
const evaluate = `Ask "evaluate my ${app.company} offer" to weigh it against your targets.`;
|
|
84
|
+
if (Number.isNaN(exp)) {
|
|
85
|
+
out.push({ app, score: 75, line: `💰 **Pending offer** — ${label(app)}: no deadline recorded (ID: ${app.id})`, action: `Decide or counter, and ask for a decision date if you don't have one. ${evaluate}` });
|
|
86
|
+
}
|
|
87
|
+
else if (exp < 0) {
|
|
88
|
+
out.push({ app, score: 92, line: `💰 **Offer deadline passed** — ${label(app)}: it expired ${when(exp)} (${app.offer.expiresDate}, ID: ${app.id})`, action: "Tell me where it stands (accepted, still negotiating, or declined) and I'll update the board." });
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
out.push({ app, score: exp <= 3 ? 97 : 75, line: `💰 **Pending offer** — ${label(app)}: expires ${when(exp)} (${app.offer.expiresDate}, ID: ${app.id})`, action: `Decide or counter before then. ${evaluate}` });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// A month of silence with nothing booked is no longer a follow-up to send;
|
|
95
|
+
// it is a process to close or chase one last time.
|
|
96
|
+
const stale = quiet >= 30 && !next && ["applied", "screening", "interviewing"].includes(app.status);
|
|
97
|
+
// Follow-ups the user set.
|
|
98
|
+
const fu = days(app.followUpDue);
|
|
99
|
+
if (!Number.isNaN(fu) && !stale) {
|
|
100
|
+
if (fu <= 0) {
|
|
101
|
+
out.push({ app, score: 80 + Math.min(-fu, 7), line: `⚠️ **Overdue follow-up** — ${label(app)}: due ${fu === 0 ? "today" : `${app.followUpDue}, ${-fu} days ago`} (ID: ${app.id})`, action: nudge });
|
|
102
|
+
}
|
|
103
|
+
else if (fu <= 3) {
|
|
104
|
+
out.push({ app, score: 30, line: `📅 Follow-up due ${when(fu)} — ${label(app)} (${app.followUpDue}, ID: ${app.id})` });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Silence. A follow-up date set in the future means the user chose to wait,
|
|
108
|
+
// so silence alone does not nag until it is a month long.
|
|
109
|
+
const waiting = !Number.isNaN(fu) && fu > 0;
|
|
110
|
+
if (app.status === "applied") {
|
|
111
|
+
if (quiet >= 30) {
|
|
112
|
+
out.push({ app, score: 45, quiet, line: `🕸️ **Gone quiet** — ${label(app)}: applied ${quiet}d ago, no reply recorded (ID: ${app.id})`, action: "Send one last nudge, or say so and I'll mark it ghosted so it stops counting as live." });
|
|
113
|
+
}
|
|
114
|
+
else if (quiet >= 7 && !waiting) {
|
|
115
|
+
out.push({ app, score: 55, line: `📬 **Follow up** — ${label(app)}: applied ${quiet}d ago (ID: ${app.id})`, action: nudge });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if ((app.status === "screening" || app.status === "interviewing") && !next) {
|
|
119
|
+
const limit = app.status === "screening" ? 5 : 7;
|
|
120
|
+
if (quiet >= 30) {
|
|
121
|
+
out.push({ app, score: 50, quiet, line: `🕸️ **Gone quiet** — ${label(app)}: ${app.status} ${quiet}d with no next step (ID: ${app.id})`, action: "Send one last nudge for a timeline, or say so and I'll mark it ghosted." });
|
|
122
|
+
}
|
|
123
|
+
else if (quiet >= limit && !waiting) {
|
|
124
|
+
out.push({ app, score: 60, line: `📞 **Check status** — ${label(app)}: in ${app.status} ${quiet}d with no next step booked (ID: ${app.id})`, action: who ? `Ask ${who} for a timeline. I can draft it.` : "Ask the recruiter for a timeline. I can draft it." });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (app.status === "discovered" && quiet >= 7) {
|
|
128
|
+
out.push({ app, score: 25, line: `🗂️ Not applied yet — ${label(app)}: found ${quiet}d ago (ID: ${app.id}). Apply this week or drop it.` });
|
|
129
|
+
}
|
|
130
|
+
const bonus = app.priority === "high" ? 3 : app.priority === "low" ? -3 : 0;
|
|
131
|
+
return out.map((c) => ({ ...c, score: c.score + bonus }));
|
|
132
|
+
}
|
|
133
|
+
function today(now) {
|
|
134
|
+
const p = (n) => String(n).padStart(2, "0");
|
|
135
|
+
return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}`;
|
|
136
|
+
}
|
|
137
|
+
export function buildTodayDigest(pipeline, now = new Date()) {
|
|
138
|
+
const apps = pipeline.applications;
|
|
139
|
+
const text = (t) => ({ content: [{ type: "text", text: t }] });
|
|
140
|
+
if (apps.length === 0) {
|
|
141
|
+
return text([
|
|
142
|
+
"# Today",
|
|
143
|
+
"",
|
|
144
|
+
"Nothing tracked yet, so there is nothing to act on.",
|
|
145
|
+
"",
|
|
146
|
+
"**Start here:** paste a job posting you're considering and say \"track this\". I'll add it and check your fit. Or name a role you've already applied to (company, title, roughly when) and I'll add it with `pipeline_add`.",
|
|
147
|
+
"",
|
|
148
|
+
"Once something is tracked, this shows follow-ups due, interviews coming up, offer deadlines, and applications that have gone quiet, with one clear first move each day.",
|
|
149
|
+
].join("\n"));
|
|
150
|
+
}
|
|
151
|
+
// One item per application: its most pressing reason.
|
|
152
|
+
let items = apps
|
|
153
|
+
.filter((a) => !CLOSED.includes(a.status))
|
|
154
|
+
.map((a) => candidates(a, now).sort((x, y) => y.score - x.score)[0])
|
|
155
|
+
.filter((i) => Boolean(i));
|
|
156
|
+
// Several silent processes are one decision, not several chores.
|
|
157
|
+
const silent = items.filter((i) => i.quiet !== undefined);
|
|
158
|
+
if (silent.length >= 2) {
|
|
159
|
+
silent.sort((x, y) => y.quiet - x.quiet);
|
|
160
|
+
items = items.filter((i) => i.quiet === undefined);
|
|
161
|
+
items.push({
|
|
162
|
+
app: silent[0].app,
|
|
163
|
+
score: Math.max(...silent.map((i) => i.score)),
|
|
164
|
+
line: `🕸️ **Gone quiet** — ${silent.length} applications with no reply in 30+ days: ${silent.map((i) => `${i.app.company} (${i.quiet}d, ID: ${i.app.id})`).join(", ")}`,
|
|
165
|
+
action: "Pick any worth one last nudge and I'll draft it. Say so and I'll mark the rest ghosted, so your board shows what is really live.",
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
items.sort((x, y) => y.score - x.score);
|
|
169
|
+
const due = items.filter((i) => i.score >= TODAY);
|
|
170
|
+
const soon = items.filter((i) => i.score < TODAY);
|
|
171
|
+
const stats = computeStats(apps);
|
|
172
|
+
const board = `${stats.total} tracked · ${stats.active} active · ${stats.inConversation} in conversation · ${stats.offers} with an offer${stats.sent ? ` · ${stats.responseRate}% response rate` : ""}`;
|
|
173
|
+
const out = [`# Today — ${today(now)}`, ""];
|
|
174
|
+
if (due.length === 0) {
|
|
175
|
+
out.push(stats.active === 0
|
|
176
|
+
? `Nothing needs you today: all ${stats.total} tracked applications are closed.`
|
|
177
|
+
: `Nothing needs you today. Your ${stats.active} active application${stats.active === 1 ? " is" : "s are"} inside normal wait windows.`, "", "**Start here:** a good day to line up the next role. Paste a posting and I'll check your fit and track it.");
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const [first, ...rest] = due;
|
|
181
|
+
out.push("## Start here", first.line, `→ ${first.action}`);
|
|
182
|
+
if (rest.length) {
|
|
183
|
+
out.push("", `## Also today (${rest.length})`);
|
|
184
|
+
for (const i of rest)
|
|
185
|
+
out.push(`- ${i.line}`, ` → ${i.action}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (soon.length) {
|
|
189
|
+
out.push("", "## Coming up");
|
|
190
|
+
for (const i of soon)
|
|
191
|
+
out.push(`- ${i.line}`);
|
|
192
|
+
}
|
|
193
|
+
out.push("", `_${board}_`);
|
|
194
|
+
return text(out.join("\n"));
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=today-digest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"today-digest.js","sourceRoot":"","sources":["../../../src/tools/today-digest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one honesty rule every tool that drafts words in the user's voice carries.
|
|
3
|
+
*
|
|
4
|
+
* The offline evals (eval-src/) found the failure is rarely a made-up job. It is
|
|
5
|
+
* embroidery: a drafted bullet that adds an audience ("for non-technical
|
|
6
|
+
* stakeholders"), a domain ("a regulated launch", "a money-movement product"), an
|
|
7
|
+
* outcome the résumé never claimed, a rounded-up tenure, or an assumption about the
|
|
8
|
+
* user's situation ("that chapter is behind me"). Each one reads as plausible
|
|
9
|
+
* polish, and each one is something the user could be asked about in an interview.
|
|
10
|
+
* The tools that draft (résumé, cover letter, interview prep, offer review, fit
|
|
11
|
+
* check) append this block so the rule is stated once, the same way, everywhere.
|
|
12
|
+
*/
|
|
13
|
+
export declare const TRUTH_RULE = "**Truth rule (applies to everything you write about me):**\n- Every fact about me must come from the Career KB above or from what I have said in this conversation. Copy numbers exactly; never round them up or turn \"under 0.5%\" into \"zero\".\n- In drafted r\u00E9sum\u00E9 bullets, letters, and interview answers, do not add context the source does not state: no new audience, domain, scope, outcome, tool, responsibility, or reason. Rewording is fine; new facts are not.\n- Use the posting's words only where my history says the same thing. \"Owned demand generation\" is not \"owned pipeline targets\", and \"wrote a findings report\" is not \"presented findings\". Never write \"you ask for X, Y and Z; I did all three\" unless each one is in my history.\n- Don't label my work beyond what the source says: not B2B or consumer, not technical or non-technical, not W2 or 1099, not coursework or on-the-job, not \"money movement\" or \"regulated\". If a label matters for the job, it is a gap to ask about.\n- A skills or competencies list holds only skills the source names. Use the posting's wording only where it names the same skill.\n- In my voice, never invent my inner life or story: how I felt, what I used to call my work, why I am moving on, how a role changed over time, what a break was like or whether it was planned. Keep tense true: if I am between jobs or on a break, don't write that I use a tool \"every day\".\n- If a stronger version needs a fact you don't have, still write the full draft, and put the missing piece in a short visible placeholder such as [confirm: who used these reports?]. Never state something as fact and also ask me to confirm it; if it needs confirming, it is a placeholder. In a letter, use at most two placeholders and put any other questions after the letter.\n- Things I haven't told you about my situation (work authorization, why a job ended, whether a career break is over, my current equity or bonus) are open questions. Name them as gaps or ask; never assume an answer in my voice.\n- Before you send a draft, reread every sentence about me and check that you could point to its source. Cut or bracket anything you can't. Only say \"I added nothing\" after doing that check.";
|
|
14
|
+
/**
|
|
15
|
+
* For tools that discuss pay. Market figures the model "knows" are unsourced and
|
|
16
|
+
* often stale, and the evals caught offer reviews stating equity norms as fact.
|
|
17
|
+
*/
|
|
18
|
+
export declare const MARKET_DATA_RULE = "**Market data rule:** Only cite salary, bonus, or equity benchmarks that appear in the market data above or that I gave you. If there are none, say so plainly, tell me where to get them (Levels.fyi, Glassdoor, Carta's equity benchmarks, a recruiter), and reason from my own numbers and stated targets instead. Never put a dollar value on equity without the company's valuation or price per share and the total share count.";
|
|
19
|
+
//# sourceMappingURL=truth-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truth-rule.d.ts","sourceRoot":"","sources":["../../../src/tools/truth-rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,0rEASuK,CAAC;AAE/L;;;GAGG;AACH,eAAO,MAAM,gBAAgB,2aAA2a,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one honesty rule every tool that drafts words in the user's voice carries.
|
|
3
|
+
*
|
|
4
|
+
* The offline evals (eval-src/) found the failure is rarely a made-up job. It is
|
|
5
|
+
* embroidery: a drafted bullet that adds an audience ("for non-technical
|
|
6
|
+
* stakeholders"), a domain ("a regulated launch", "a money-movement product"), an
|
|
7
|
+
* outcome the résumé never claimed, a rounded-up tenure, or an assumption about the
|
|
8
|
+
* user's situation ("that chapter is behind me"). Each one reads as plausible
|
|
9
|
+
* polish, and each one is something the user could be asked about in an interview.
|
|
10
|
+
* The tools that draft (résumé, cover letter, interview prep, offer review, fit
|
|
11
|
+
* check) append this block so the rule is stated once, the same way, everywhere.
|
|
12
|
+
*/
|
|
13
|
+
export const TRUTH_RULE = `**Truth rule (applies to everything you write about me):**
|
|
14
|
+
- Every fact about me must come from the Career KB above or from what I have said in this conversation. Copy numbers exactly; never round them up or turn "under 0.5%" into "zero".
|
|
15
|
+
- In drafted résumé bullets, letters, and interview answers, do not add context the source does not state: no new audience, domain, scope, outcome, tool, responsibility, or reason. Rewording is fine; new facts are not.
|
|
16
|
+
- Use the posting's words only where my history says the same thing. "Owned demand generation" is not "owned pipeline targets", and "wrote a findings report" is not "presented findings". Never write "you ask for X, Y and Z; I did all three" unless each one is in my history.
|
|
17
|
+
- Don't label my work beyond what the source says: not B2B or consumer, not technical or non-technical, not W2 or 1099, not coursework or on-the-job, not "money movement" or "regulated". If a label matters for the job, it is a gap to ask about.
|
|
18
|
+
- A skills or competencies list holds only skills the source names. Use the posting's wording only where it names the same skill.
|
|
19
|
+
- In my voice, never invent my inner life or story: how I felt, what I used to call my work, why I am moving on, how a role changed over time, what a break was like or whether it was planned. Keep tense true: if I am between jobs or on a break, don't write that I use a tool "every day".
|
|
20
|
+
- If a stronger version needs a fact you don't have, still write the full draft, and put the missing piece in a short visible placeholder such as [confirm: who used these reports?]. Never state something as fact and also ask me to confirm it; if it needs confirming, it is a placeholder. In a letter, use at most two placeholders and put any other questions after the letter.
|
|
21
|
+
- Things I haven't told you about my situation (work authorization, why a job ended, whether a career break is over, my current equity or bonus) are open questions. Name them as gaps or ask; never assume an answer in my voice.
|
|
22
|
+
- Before you send a draft, reread every sentence about me and check that you could point to its source. Cut or bracket anything you can't. Only say "I added nothing" after doing that check.`;
|
|
23
|
+
/**
|
|
24
|
+
* For tools that discuss pay. Market figures the model "knows" are unsourced and
|
|
25
|
+
* often stale, and the evals caught offer reviews stating equity norms as fact.
|
|
26
|
+
*/
|
|
27
|
+
export const MARKET_DATA_RULE = `**Market data rule:** Only cite salary, bonus, or equity benchmarks that appear in the market data above or that I gave you. If there are none, say so plainly, tell me where to get them (Levels.fyi, Glassdoor, Carta's equity benchmarks, a recruiter), and reason from my own numbers and stated targets instead. Never put a dollar value on equity without the company's valuation or price per share and the total share count.`;
|
|
28
|
+
//# sourceMappingURL=truth-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truth-rule.js","sourceRoot":"","sources":["../../../src/tools/truth-rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;8LASoK,CAAC;AAE/L;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,waAAwa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "career-compass-mcp",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.6",
|
|
4
4
|
"description": "AI-native career co-pilot for Claude — Career KB, resume tailoring, job pipeline, interview prep, and offer evaluation via MCP",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/src/index.js",
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
"pack:mcpb:guard": "node scripts/mcpb-guard.mjs",
|
|
38
38
|
"prepublishOnly": "npm run build:mcp && npm run test:mcp && npm run pack:guard",
|
|
39
39
|
"test:dashboard": "cd dashboard && npx vitest run",
|
|
40
|
-
"visuals": "node scripts/visual-harness.mjs"
|
|
40
|
+
"visuals": "node scripts/visual-harness.mjs",
|
|
41
|
+
"eval:mocks": "npm run build:mcp && node eval-src/record-mocks.mjs",
|
|
42
|
+
"eval:build": "node eval-src/build-suite.mjs",
|
|
43
|
+
"eval:score": "node eval-src/scoreboard.mjs"
|
|
41
44
|
},
|
|
42
45
|
"keywords": [
|
|
43
46
|
"mcp",
|