career-compass-mcp 2.0.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/LICENSE +21 -0
- package/README.md +340 -0
- package/build/bin/cli.d.ts +9 -0
- package/build/bin/cli.d.ts.map +1 -0
- package/build/bin/cli.js +134 -0
- package/build/bin/cli.js.map +1 -0
- package/build/src/index.d.ts +3 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js +18 -0
- package/build/src/index.js.map +1 -0
- package/build/src/prompts/index.d.ts +3 -0
- package/build/src/prompts/index.d.ts.map +1 -0
- package/build/src/prompts/index.js +122 -0
- package/build/src/prompts/index.js.map +1 -0
- package/build/src/resources/career-kb.d.ts +3 -0
- package/build/src/resources/career-kb.d.ts.map +1 -0
- package/build/src/resources/career-kb.js +143 -0
- package/build/src/resources/career-kb.js.map +1 -0
- package/build/src/schemas/career-schema.d.ts +361 -0
- package/build/src/schemas/career-schema.d.ts.map +1 -0
- package/build/src/schemas/career-schema.js +146 -0
- package/build/src/schemas/career-schema.js.map +1 -0
- package/build/src/server.d.ts +3 -0
- package/build/src/server.d.ts.map +1 -0
- package/build/src/server.js +30 -0
- package/build/src/server.js.map +1 -0
- package/build/src/storage/file-store.d.ts +22 -0
- package/build/src/storage/file-store.d.ts.map +1 -0
- package/build/src/storage/file-store.js +163 -0
- package/build/src/storage/file-store.js.map +1 -0
- package/build/src/tools/career-kb.d.ts +3 -0
- package/build/src/tools/career-kb.d.ts.map +1 -0
- package/build/src/tools/career-kb.js +148 -0
- package/build/src/tools/career-kb.js.map +1 -0
- package/build/src/tools/interview.d.ts +3 -0
- package/build/src/tools/interview.d.ts.map +1 -0
- package/build/src/tools/interview.js +194 -0
- package/build/src/tools/interview.js.map +1 -0
- package/build/src/tools/opportunity.d.ts +3 -0
- package/build/src/tools/opportunity.d.ts.map +1 -0
- package/build/src/tools/opportunity.js +137 -0
- package/build/src/tools/opportunity.js.map +1 -0
- package/build/src/tools/pipeline.d.ts +11 -0
- package/build/src/tools/pipeline.d.ts.map +1 -0
- package/build/src/tools/pipeline.js +295 -0
- package/build/src/tools/pipeline.js.map +1 -0
- package/build/src/tools/resume.d.ts +3 -0
- package/build/src/tools/resume.d.ts.map +1 -0
- package/build/src/tools/resume.js +222 -0
- package/build/src/tools/resume.js.map +1 -0
- package/build/src/types/tool-args.d.ts +52 -0
- package/build/src/types/tool-args.d.ts.map +1 -0
- package/build/src/types/tool-args.js +2 -0
- package/build/src/types/tool-args.js.map +1 -0
- package/data/example/career/experience.yaml +67 -0
- package/data/example/career/profile.yaml +31 -0
- package/data/example/career/skills.yaml +71 -0
- package/data/example/career/testimonials.yaml +26 -0
- package/data/example/pipeline/applications.yaml +312 -0
- package/package.json +82 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerPrompts(server) {
|
|
3
|
+
server.registerPrompt("resume-tailor", {
|
|
4
|
+
title: "Resume Tailor",
|
|
5
|
+
description: "Generate a tailored, ATS-optimized resume for a specific job posting using your Career KB",
|
|
6
|
+
argsSchema: {
|
|
7
|
+
posting: z.string().describe("Full job posting text or URL"),
|
|
8
|
+
format: z.enum(["standard", "federal", "academic", "creative"]).optional().describe("Resume format style"),
|
|
9
|
+
pages: z.enum(["1", "2"]).optional().describe("Target page count"),
|
|
10
|
+
notes: z.string().optional().describe("Any special instructions or context"),
|
|
11
|
+
},
|
|
12
|
+
}, ({ posting, format = "standard", pages = "2", notes }) => ({
|
|
13
|
+
messages: [{
|
|
14
|
+
role: "user",
|
|
15
|
+
content: {
|
|
16
|
+
type: "text",
|
|
17
|
+
text: `You are an expert resume writer and career coach. Using the career data from my Career Knowledge Base (read career://full), create a tailored, ATS-optimized resume for the following job posting.
|
|
18
|
+
|
|
19
|
+
**Job Posting:**
|
|
20
|
+
${posting}
|
|
21
|
+
|
|
22
|
+
**Format:** ${format}
|
|
23
|
+
**Target length:** ${pages} page(s)
|
|
24
|
+
${notes ? `**Special instructions:** ${notes}` : ""}
|
|
25
|
+
|
|
26
|
+
**Requirements:**
|
|
27
|
+
- Match the language and keywords from the posting exactly where truthful
|
|
28
|
+
- Lead with a strong summary that bridges my experience to this specific role
|
|
29
|
+
- Prioritize achievements most relevant to this posting (use impact metrics)
|
|
30
|
+
- Use clean formatting: no tables, no columns, no graphics (ATS-safe)
|
|
31
|
+
- Industry-agnostic: adapt terminology to match the posting's domain
|
|
32
|
+
- Be truthful — only include things from my actual career history
|
|
33
|
+
- Surface transferable skills even if the industry differs
|
|
34
|
+
- Flag any gaps honestly but frame positively
|
|
35
|
+
|
|
36
|
+
Start by reading career://full, then produce the complete resume.`,
|
|
37
|
+
},
|
|
38
|
+
}],
|
|
39
|
+
}));
|
|
40
|
+
server.registerPrompt("interview-coach", {
|
|
41
|
+
title: "Interview Coach",
|
|
42
|
+
description: "Prepare for a specific interview with STAR stories, company research, and likely questions",
|
|
43
|
+
argsSchema: {
|
|
44
|
+
applicationId: z.string().optional().describe("Pipeline application ID for context"),
|
|
45
|
+
company: z.string().describe("Company name"),
|
|
46
|
+
role: z.string().describe("Role title"),
|
|
47
|
+
interviewType: z.enum(["phone_screen", "behavioral", "technical", "panel", "final", "negotiation"]).describe("Type of interview"),
|
|
48
|
+
interviewerInfo: z.string().optional().describe("Who you're meeting with (name, title, LinkedIn)"),
|
|
49
|
+
notes: z.string().optional().describe("Any additional context or concerns"),
|
|
50
|
+
},
|
|
51
|
+
}, ({ applicationId, company, role, interviewType, interviewerInfo, notes }) => ({
|
|
52
|
+
messages: [{
|
|
53
|
+
role: "user",
|
|
54
|
+
content: {
|
|
55
|
+
type: "text",
|
|
56
|
+
text: `You are an expert interview coach. Prepare me for my upcoming ${interviewType.replace("_", " ")} interview.
|
|
57
|
+
|
|
58
|
+
**Company:** ${company}
|
|
59
|
+
**Role:** ${role}
|
|
60
|
+
**Interview type:** ${interviewType}
|
|
61
|
+
${interviewerInfo ? `**Interviewer:** ${interviewerInfo}` : ""}
|
|
62
|
+
${applicationId ? `**Application ID:** ${applicationId} (read career://pipeline/${applicationId} for context)` : ""}
|
|
63
|
+
${notes ? `**Additional context:** ${notes}` : ""}
|
|
64
|
+
|
|
65
|
+
Please read career://full for my background, then provide:
|
|
66
|
+
|
|
67
|
+
1. **Opening pitch** — A 90-second "tell me about yourself" tailored to this role
|
|
68
|
+
2. **STAR stories** — 5-7 stories from my experience matched to likely questions for this role/interview type
|
|
69
|
+
3. **Likely questions** — Top 10 questions for this company/role, with suggested angles from my background
|
|
70
|
+
4. **Company intelligence** — What I should know about their product, culture, and current priorities
|
|
71
|
+
5. **Questions to ask them** — 5 thoughtful questions that show genuine interest and insight
|
|
72
|
+
6. **Bridge topics** — Where my background unexpectedly connects to their world
|
|
73
|
+
7. **Watch-outs** — Any gaps or concerns to prepare for, with reframe strategies
|
|
74
|
+
|
|
75
|
+
Be specific. Don't give generic advice — connect everything back to my actual career history.`,
|
|
76
|
+
},
|
|
77
|
+
}],
|
|
78
|
+
}));
|
|
79
|
+
server.registerPrompt("negotiation-coach", {
|
|
80
|
+
title: "Negotiation Coach",
|
|
81
|
+
description: "Evaluate an offer and build a negotiation strategy with roleplay support",
|
|
82
|
+
argsSchema: {
|
|
83
|
+
applicationId: z.string().optional().describe("Pipeline application ID"),
|
|
84
|
+
company: z.string().describe("Company name"),
|
|
85
|
+
role: z.string().describe("Role title"),
|
|
86
|
+
offerDetails: z.string().describe("Full offer details: base, bonus, equity, benefits, start date"),
|
|
87
|
+
marketData: z.string().optional().describe("Any salary research you have"),
|
|
88
|
+
priorities: z.string().optional().describe("What matters most to you: salary, equity, flexibility, etc."),
|
|
89
|
+
},
|
|
90
|
+
}, ({ applicationId, company, role, offerDetails, marketData, priorities }) => ({
|
|
91
|
+
messages: [{
|
|
92
|
+
role: "user",
|
|
93
|
+
content: {
|
|
94
|
+
type: "text",
|
|
95
|
+
text: `You are an expert compensation negotiation coach. Help me evaluate and negotiate this offer.
|
|
96
|
+
|
|
97
|
+
**Company:** ${company}
|
|
98
|
+
**Role:** ${role}
|
|
99
|
+
${applicationId ? `**Application:** career://pipeline/${applicationId}` : ""}
|
|
100
|
+
|
|
101
|
+
**Offer details:**
|
|
102
|
+
${offerDetails}
|
|
103
|
+
|
|
104
|
+
${marketData ? `**My market research:** ${marketData}` : ""}
|
|
105
|
+
${priorities ? `**My priorities:** ${priorities}` : ""}
|
|
106
|
+
|
|
107
|
+
Please provide:
|
|
108
|
+
|
|
109
|
+
1. **Offer analysis** — Break down total compensation (base + bonus + equity + benefits), annualized
|
|
110
|
+
2. **Market comparison** — How this compares to market for this role/level/location
|
|
111
|
+
3. **Negotiation strategy** — What to push on, in what order, and why
|
|
112
|
+
4. **Opening script** — Exact words to use when countering
|
|
113
|
+
5. **Concession plan** — What to give up if they push back, and what to hold firm on
|
|
114
|
+
6. **Alternative asks** — Non-salary items to request if base is fixed (signing bonus, equity cliff, remote days, title)
|
|
115
|
+
7. **Roleplay** — Play the hiring manager responding to my counter, then coach me through it
|
|
116
|
+
|
|
117
|
+
Then ask me if I want to do a full negotiation roleplay.`,
|
|
118
|
+
},
|
|
119
|
+
}],
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"career-kb.d.ts","sourceRoot":"","sources":["../../../src/resources/career-kb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsM/D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { loadCareerData, loadPipeline } from "../storage/file-store.js";
|
|
3
|
+
export function registerCareerResources(server) {
|
|
4
|
+
// ── Static career resources ──────────────────────────────────────────────────
|
|
5
|
+
server.registerResource("career-profile", "career://profile", {
|
|
6
|
+
title: "Career Profile",
|
|
7
|
+
description: "Professional profile: name, contact, summary, target roles, and preferences",
|
|
8
|
+
mimeType: "application/json",
|
|
9
|
+
}, async () => {
|
|
10
|
+
const data = await loadCareerData();
|
|
11
|
+
return {
|
|
12
|
+
contents: [{
|
|
13
|
+
uri: "career://profile",
|
|
14
|
+
mimeType: "application/json",
|
|
15
|
+
text: JSON.stringify(data?.profile ?? null, null, 2),
|
|
16
|
+
}],
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
server.registerResource("career-experience", "career://experience", {
|
|
20
|
+
title: "Work Experience",
|
|
21
|
+
description: "Full work history with roles, achievements, and impact metrics",
|
|
22
|
+
mimeType: "application/json",
|
|
23
|
+
}, async () => {
|
|
24
|
+
const data = await loadCareerData();
|
|
25
|
+
return {
|
|
26
|
+
contents: [{
|
|
27
|
+
uri: "career://experience",
|
|
28
|
+
mimeType: "application/json",
|
|
29
|
+
text: JSON.stringify(data?.experience ?? [], null, 2),
|
|
30
|
+
}],
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
server.registerResource("career-skills", "career://skills", {
|
|
34
|
+
title: "Skills Inventory",
|
|
35
|
+
description: "All skills with categories, proficiency levels, and recency",
|
|
36
|
+
mimeType: "application/json",
|
|
37
|
+
}, async () => {
|
|
38
|
+
const data = await loadCareerData();
|
|
39
|
+
return {
|
|
40
|
+
contents: [{
|
|
41
|
+
uri: "career://skills",
|
|
42
|
+
mimeType: "application/json",
|
|
43
|
+
text: JSON.stringify(data?.skills ?? [], null, 2),
|
|
44
|
+
}],
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
server.registerResource("career-projects", "career://projects", {
|
|
48
|
+
title: "Project Portfolio",
|
|
49
|
+
description: "Key projects with descriptions, technologies, and outcomes",
|
|
50
|
+
mimeType: "application/json",
|
|
51
|
+
}, async () => {
|
|
52
|
+
const data = await loadCareerData();
|
|
53
|
+
return {
|
|
54
|
+
contents: [{
|
|
55
|
+
uri: "career://projects",
|
|
56
|
+
mimeType: "application/json",
|
|
57
|
+
text: JSON.stringify(data?.projects ?? [], null, 2),
|
|
58
|
+
}],
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
server.registerResource("career-education", "career://education", {
|
|
62
|
+
title: "Education & Certifications",
|
|
63
|
+
description: "Degrees, certifications, and relevant coursework",
|
|
64
|
+
mimeType: "application/json",
|
|
65
|
+
}, async () => {
|
|
66
|
+
const data = await loadCareerData();
|
|
67
|
+
return {
|
|
68
|
+
contents: [{
|
|
69
|
+
uri: "career://education",
|
|
70
|
+
mimeType: "application/json",
|
|
71
|
+
text: JSON.stringify(data?.education ?? [], null, 2),
|
|
72
|
+
}],
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
server.registerResource("career-testimonials", "career://testimonials", {
|
|
76
|
+
title: "Testimonials & Awards",
|
|
77
|
+
description: "Quotes from managers/peers, awards, and recognition",
|
|
78
|
+
mimeType: "application/json",
|
|
79
|
+
}, async () => {
|
|
80
|
+
const data = await loadCareerData();
|
|
81
|
+
return {
|
|
82
|
+
contents: [{
|
|
83
|
+
uri: "career://testimonials",
|
|
84
|
+
mimeType: "application/json",
|
|
85
|
+
text: JSON.stringify(data?.testimonials ?? [], null, 2),
|
|
86
|
+
}],
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
server.registerResource("career-full", "career://full", {
|
|
90
|
+
title: "Full Career Knowledge Base",
|
|
91
|
+
description: "Complete SSOT: profile, experience, skills, projects, education, testimonials",
|
|
92
|
+
mimeType: "application/json",
|
|
93
|
+
}, async () => {
|
|
94
|
+
const data = await loadCareerData();
|
|
95
|
+
return {
|
|
96
|
+
contents: [{
|
|
97
|
+
uri: "career://full",
|
|
98
|
+
mimeType: "application/json",
|
|
99
|
+
text: JSON.stringify(data, null, 2),
|
|
100
|
+
}],
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
// ── Pipeline resources ───────────────────────────────────────────────────────
|
|
104
|
+
server.registerResource("pipeline-overview", "career://pipeline", {
|
|
105
|
+
title: "Application Pipeline",
|
|
106
|
+
description: "All job applications with status, contacts, interview rounds, and offers",
|
|
107
|
+
mimeType: "application/json",
|
|
108
|
+
}, async () => {
|
|
109
|
+
const pipeline = await loadPipeline();
|
|
110
|
+
const statusCounts = pipeline.applications.reduce((acc, app) => {
|
|
111
|
+
acc[app.status] = (acc[app.status] ?? 0) + 1;
|
|
112
|
+
return acc;
|
|
113
|
+
}, {});
|
|
114
|
+
return {
|
|
115
|
+
contents: [{
|
|
116
|
+
uri: "career://pipeline",
|
|
117
|
+
mimeType: "application/json",
|
|
118
|
+
text: JSON.stringify({
|
|
119
|
+
summary: { total: pipeline.applications.length, byStatus: statusCounts, lastUpdated: pipeline.lastUpdated },
|
|
120
|
+
applications: pipeline.applications,
|
|
121
|
+
}, null, 2),
|
|
122
|
+
}],
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
// ── Per-application resource ─────────────────────────────────────────────────
|
|
126
|
+
const appTemplate = new ResourceTemplate("career://pipeline/{id}", { list: undefined });
|
|
127
|
+
server.registerResource("pipeline-application", appTemplate, {
|
|
128
|
+
title: "Application Detail",
|
|
129
|
+
description: "Full detail for a specific job application by ID",
|
|
130
|
+
mimeType: "application/json",
|
|
131
|
+
}, async (uri, { id }) => {
|
|
132
|
+
const pipeline = await loadPipeline();
|
|
133
|
+
const app = pipeline.applications.find(a => a.id === id);
|
|
134
|
+
return {
|
|
135
|
+
contents: [{
|
|
136
|
+
uri: uri.href,
|
|
137
|
+
mimeType: "application/json",
|
|
138
|
+
text: JSON.stringify(app ?? { error: `Application ${id} not found` }, null, 2),
|
|
139
|
+
}],
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=career-kb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"career-kb.js","sourceRoot":"","sources":["../../../src/resources/career-kb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ApplicationStatus: z.ZodEnum<{
|
|
3
|
+
discovered: "discovered";
|
|
4
|
+
applied: "applied";
|
|
5
|
+
screening: "screening";
|
|
6
|
+
interviewing: "interviewing";
|
|
7
|
+
offer: "offer";
|
|
8
|
+
negotiating: "negotiating";
|
|
9
|
+
accepted: "accepted";
|
|
10
|
+
rejected: "rejected";
|
|
11
|
+
withdrawn: "withdrawn";
|
|
12
|
+
ghosted: "ghosted";
|
|
13
|
+
}>;
|
|
14
|
+
export type ApplicationStatus = z.infer<typeof ApplicationStatus>;
|
|
15
|
+
export declare const Achievement: z.ZodObject<{
|
|
16
|
+
metric: z.ZodString;
|
|
17
|
+
context: z.ZodString;
|
|
18
|
+
impact: z.ZodString;
|
|
19
|
+
keywords: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
export declare const Experience: z.ZodObject<{
|
|
22
|
+
role: z.ZodString;
|
|
23
|
+
company: z.ZodString;
|
|
24
|
+
industry: z.ZodOptional<z.ZodString>;
|
|
25
|
+
location: z.ZodOptional<z.ZodString>;
|
|
26
|
+
startDate: z.ZodString;
|
|
27
|
+
endDate: z.ZodString;
|
|
28
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
29
|
+
achievements: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
30
|
+
metric: z.ZodString;
|
|
31
|
+
context: z.ZodString;
|
|
32
|
+
impact: z.ZodString;
|
|
33
|
+
keywords: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
34
|
+
}, z.core.$strip>>>;
|
|
35
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
export declare const Skill: z.ZodObject<{
|
|
38
|
+
name: z.ZodString;
|
|
39
|
+
category: z.ZodString;
|
|
40
|
+
proficiency: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
yearsUsed: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
lastUsed: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
export declare const Education: z.ZodObject<{
|
|
45
|
+
degree: z.ZodString;
|
|
46
|
+
institution: z.ZodString;
|
|
47
|
+
date: z.ZodString;
|
|
48
|
+
honors: z.ZodOptional<z.ZodString>;
|
|
49
|
+
relevantCoursework: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
50
|
+
certifications: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
export declare const Project: z.ZodObject<{
|
|
53
|
+
name: z.ZodString;
|
|
54
|
+
role: z.ZodString;
|
|
55
|
+
description: z.ZodString;
|
|
56
|
+
technologies: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
57
|
+
metrics: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
58
|
+
outcomes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
59
|
+
url: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
export declare const Testimonial: z.ZodObject<{
|
|
62
|
+
source: z.ZodString;
|
|
63
|
+
relationship: z.ZodString;
|
|
64
|
+
quote: z.ZodString;
|
|
65
|
+
date: z.ZodOptional<z.ZodString>;
|
|
66
|
+
context: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export declare const Profile: z.ZodObject<{
|
|
69
|
+
name: z.ZodString;
|
|
70
|
+
email: z.ZodOptional<z.ZodString>;
|
|
71
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
72
|
+
location: z.ZodOptional<z.ZodString>;
|
|
73
|
+
linkedIn: z.ZodOptional<z.ZodString>;
|
|
74
|
+
portfolio: z.ZodOptional<z.ZodString>;
|
|
75
|
+
summary: z.ZodString;
|
|
76
|
+
targetRoles: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
77
|
+
targetIndustries: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
78
|
+
targetCompanySize: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
79
|
+
salaryMin: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
salaryMax: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
salaryCurrency: z.ZodDefault<z.ZodString>;
|
|
82
|
+
openToRemote: z.ZodDefault<z.ZodBoolean>;
|
|
83
|
+
openToRelocation: z.ZodDefault<z.ZodBoolean>;
|
|
84
|
+
noticePeriod: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$strip>;
|
|
86
|
+
export declare const CareerData: z.ZodObject<{
|
|
87
|
+
profile: z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
email: z.ZodOptional<z.ZodString>;
|
|
90
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
91
|
+
location: z.ZodOptional<z.ZodString>;
|
|
92
|
+
linkedIn: z.ZodOptional<z.ZodString>;
|
|
93
|
+
portfolio: z.ZodOptional<z.ZodString>;
|
|
94
|
+
summary: z.ZodString;
|
|
95
|
+
targetRoles: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
96
|
+
targetIndustries: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
97
|
+
targetCompanySize: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
98
|
+
salaryMin: z.ZodOptional<z.ZodNumber>;
|
|
99
|
+
salaryMax: z.ZodOptional<z.ZodNumber>;
|
|
100
|
+
salaryCurrency: z.ZodDefault<z.ZodString>;
|
|
101
|
+
openToRemote: z.ZodDefault<z.ZodBoolean>;
|
|
102
|
+
openToRelocation: z.ZodDefault<z.ZodBoolean>;
|
|
103
|
+
noticePeriod: z.ZodOptional<z.ZodString>;
|
|
104
|
+
}, z.core.$strip>;
|
|
105
|
+
experience: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
106
|
+
role: z.ZodString;
|
|
107
|
+
company: z.ZodString;
|
|
108
|
+
industry: z.ZodOptional<z.ZodString>;
|
|
109
|
+
location: z.ZodOptional<z.ZodString>;
|
|
110
|
+
startDate: z.ZodString;
|
|
111
|
+
endDate: z.ZodString;
|
|
112
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
113
|
+
achievements: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
114
|
+
metric: z.ZodString;
|
|
115
|
+
context: z.ZodString;
|
|
116
|
+
impact: z.ZodString;
|
|
117
|
+
keywords: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
118
|
+
}, z.core.$strip>>>;
|
|
119
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
120
|
+
}, z.core.$strip>>>;
|
|
121
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
122
|
+
name: z.ZodString;
|
|
123
|
+
category: z.ZodString;
|
|
124
|
+
proficiency: z.ZodOptional<z.ZodNumber>;
|
|
125
|
+
yearsUsed: z.ZodOptional<z.ZodNumber>;
|
|
126
|
+
lastUsed: z.ZodOptional<z.ZodString>;
|
|
127
|
+
}, z.core.$strip>>>;
|
|
128
|
+
education: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
129
|
+
degree: z.ZodString;
|
|
130
|
+
institution: z.ZodString;
|
|
131
|
+
date: z.ZodString;
|
|
132
|
+
honors: z.ZodOptional<z.ZodString>;
|
|
133
|
+
relevantCoursework: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
134
|
+
certifications: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
135
|
+
}, z.core.$strip>>>;
|
|
136
|
+
projects: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
137
|
+
name: z.ZodString;
|
|
138
|
+
role: z.ZodString;
|
|
139
|
+
description: z.ZodString;
|
|
140
|
+
technologies: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
141
|
+
metrics: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
142
|
+
outcomes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
143
|
+
url: z.ZodOptional<z.ZodString>;
|
|
144
|
+
}, z.core.$strip>>>;
|
|
145
|
+
testimonials: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
146
|
+
source: z.ZodString;
|
|
147
|
+
relationship: z.ZodString;
|
|
148
|
+
quote: z.ZodString;
|
|
149
|
+
date: z.ZodOptional<z.ZodString>;
|
|
150
|
+
context: z.ZodOptional<z.ZodString>;
|
|
151
|
+
}, z.core.$strip>>>;
|
|
152
|
+
}, z.core.$strip>;
|
|
153
|
+
export declare const Contact: z.ZodObject<{
|
|
154
|
+
name: z.ZodString;
|
|
155
|
+
title: z.ZodOptional<z.ZodString>;
|
|
156
|
+
email: z.ZodOptional<z.ZodString>;
|
|
157
|
+
linkedIn: z.ZodOptional<z.ZodString>;
|
|
158
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
159
|
+
}, z.core.$strip>;
|
|
160
|
+
export declare const InterviewRound: z.ZodObject<{
|
|
161
|
+
type: z.ZodEnum<{
|
|
162
|
+
phone_screen: "phone_screen";
|
|
163
|
+
behavioral: "behavioral";
|
|
164
|
+
technical: "technical";
|
|
165
|
+
panel: "panel";
|
|
166
|
+
final: "final";
|
|
167
|
+
offer_call: "offer_call";
|
|
168
|
+
other: "other";
|
|
169
|
+
}>;
|
|
170
|
+
date: z.ZodOptional<z.ZodString>;
|
|
171
|
+
interviewers: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
172
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
173
|
+
outcome: z.ZodOptional<z.ZodString>;
|
|
174
|
+
}, z.core.$strip>;
|
|
175
|
+
export declare const Offer: z.ZodObject<{
|
|
176
|
+
baseSalary: z.ZodOptional<z.ZodNumber>;
|
|
177
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
178
|
+
bonus: z.ZodOptional<z.ZodNumber>;
|
|
179
|
+
equity: z.ZodOptional<z.ZodString>;
|
|
180
|
+
benefits: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
181
|
+
startDate: z.ZodOptional<z.ZodString>;
|
|
182
|
+
expiresDate: z.ZodOptional<z.ZodString>;
|
|
183
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
184
|
+
}, z.core.$strip>;
|
|
185
|
+
export declare const Application: z.ZodObject<{
|
|
186
|
+
id: z.ZodString;
|
|
187
|
+
company: z.ZodString;
|
|
188
|
+
role: z.ZodString;
|
|
189
|
+
department: z.ZodOptional<z.ZodString>;
|
|
190
|
+
industry: z.ZodOptional<z.ZodString>;
|
|
191
|
+
location: z.ZodOptional<z.ZodString>;
|
|
192
|
+
remote: z.ZodDefault<z.ZodEnum<{
|
|
193
|
+
unknown: "unknown";
|
|
194
|
+
remote: "remote";
|
|
195
|
+
hybrid: "hybrid";
|
|
196
|
+
onsite: "onsite";
|
|
197
|
+
}>>;
|
|
198
|
+
postingUrl: z.ZodOptional<z.ZodString>;
|
|
199
|
+
postingText: z.ZodOptional<z.ZodString>;
|
|
200
|
+
status: z.ZodEnum<{
|
|
201
|
+
discovered: "discovered";
|
|
202
|
+
applied: "applied";
|
|
203
|
+
screening: "screening";
|
|
204
|
+
interviewing: "interviewing";
|
|
205
|
+
offer: "offer";
|
|
206
|
+
negotiating: "negotiating";
|
|
207
|
+
accepted: "accepted";
|
|
208
|
+
rejected: "rejected";
|
|
209
|
+
withdrawn: "withdrawn";
|
|
210
|
+
ghosted: "ghosted";
|
|
211
|
+
}>;
|
|
212
|
+
dateDiscovered: z.ZodOptional<z.ZodString>;
|
|
213
|
+
dateApplied: z.ZodOptional<z.ZodString>;
|
|
214
|
+
dateUpdated: z.ZodString;
|
|
215
|
+
contacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
216
|
+
name: z.ZodString;
|
|
217
|
+
title: z.ZodOptional<z.ZodString>;
|
|
218
|
+
email: z.ZodOptional<z.ZodString>;
|
|
219
|
+
linkedIn: z.ZodOptional<z.ZodString>;
|
|
220
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
221
|
+
}, z.core.$strip>>>;
|
|
222
|
+
interviewRounds: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
223
|
+
type: z.ZodEnum<{
|
|
224
|
+
phone_screen: "phone_screen";
|
|
225
|
+
behavioral: "behavioral";
|
|
226
|
+
technical: "technical";
|
|
227
|
+
panel: "panel";
|
|
228
|
+
final: "final";
|
|
229
|
+
offer_call: "offer_call";
|
|
230
|
+
other: "other";
|
|
231
|
+
}>;
|
|
232
|
+
date: z.ZodOptional<z.ZodString>;
|
|
233
|
+
interviewers: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
234
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
235
|
+
outcome: z.ZodOptional<z.ZodString>;
|
|
236
|
+
}, z.core.$strip>>>;
|
|
237
|
+
offer: z.ZodOptional<z.ZodObject<{
|
|
238
|
+
baseSalary: z.ZodOptional<z.ZodNumber>;
|
|
239
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
240
|
+
bonus: z.ZodOptional<z.ZodNumber>;
|
|
241
|
+
equity: z.ZodOptional<z.ZodString>;
|
|
242
|
+
benefits: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
243
|
+
startDate: z.ZodOptional<z.ZodString>;
|
|
244
|
+
expiresDate: z.ZodOptional<z.ZodString>;
|
|
245
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
246
|
+
}, z.core.$strip>>;
|
|
247
|
+
salaryRange: z.ZodOptional<z.ZodObject<{
|
|
248
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
249
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
250
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
251
|
+
}, z.core.$strip>>;
|
|
252
|
+
notes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
253
|
+
tailoredResumeVersion: z.ZodOptional<z.ZodString>;
|
|
254
|
+
coverLetterGenerated: z.ZodDefault<z.ZodBoolean>;
|
|
255
|
+
followUpDue: z.ZodOptional<z.ZodString>;
|
|
256
|
+
priority: z.ZodDefault<z.ZodEnum<{
|
|
257
|
+
high: "high";
|
|
258
|
+
medium: "medium";
|
|
259
|
+
low: "low";
|
|
260
|
+
}>>;
|
|
261
|
+
source: z.ZodOptional<z.ZodString>;
|
|
262
|
+
referral: z.ZodOptional<z.ZodString>;
|
|
263
|
+
excitement: z.ZodOptional<z.ZodNumber>;
|
|
264
|
+
}, z.core.$strip>;
|
|
265
|
+
export declare const Pipeline: z.ZodObject<{
|
|
266
|
+
applications: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
267
|
+
id: z.ZodString;
|
|
268
|
+
company: z.ZodString;
|
|
269
|
+
role: z.ZodString;
|
|
270
|
+
department: z.ZodOptional<z.ZodString>;
|
|
271
|
+
industry: z.ZodOptional<z.ZodString>;
|
|
272
|
+
location: z.ZodOptional<z.ZodString>;
|
|
273
|
+
remote: z.ZodDefault<z.ZodEnum<{
|
|
274
|
+
unknown: "unknown";
|
|
275
|
+
remote: "remote";
|
|
276
|
+
hybrid: "hybrid";
|
|
277
|
+
onsite: "onsite";
|
|
278
|
+
}>>;
|
|
279
|
+
postingUrl: z.ZodOptional<z.ZodString>;
|
|
280
|
+
postingText: z.ZodOptional<z.ZodString>;
|
|
281
|
+
status: z.ZodEnum<{
|
|
282
|
+
discovered: "discovered";
|
|
283
|
+
applied: "applied";
|
|
284
|
+
screening: "screening";
|
|
285
|
+
interviewing: "interviewing";
|
|
286
|
+
offer: "offer";
|
|
287
|
+
negotiating: "negotiating";
|
|
288
|
+
accepted: "accepted";
|
|
289
|
+
rejected: "rejected";
|
|
290
|
+
withdrawn: "withdrawn";
|
|
291
|
+
ghosted: "ghosted";
|
|
292
|
+
}>;
|
|
293
|
+
dateDiscovered: z.ZodOptional<z.ZodString>;
|
|
294
|
+
dateApplied: z.ZodOptional<z.ZodString>;
|
|
295
|
+
dateUpdated: z.ZodString;
|
|
296
|
+
contacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
297
|
+
name: z.ZodString;
|
|
298
|
+
title: z.ZodOptional<z.ZodString>;
|
|
299
|
+
email: z.ZodOptional<z.ZodString>;
|
|
300
|
+
linkedIn: z.ZodOptional<z.ZodString>;
|
|
301
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
302
|
+
}, z.core.$strip>>>;
|
|
303
|
+
interviewRounds: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
304
|
+
type: z.ZodEnum<{
|
|
305
|
+
phone_screen: "phone_screen";
|
|
306
|
+
behavioral: "behavioral";
|
|
307
|
+
technical: "technical";
|
|
308
|
+
panel: "panel";
|
|
309
|
+
final: "final";
|
|
310
|
+
offer_call: "offer_call";
|
|
311
|
+
other: "other";
|
|
312
|
+
}>;
|
|
313
|
+
date: z.ZodOptional<z.ZodString>;
|
|
314
|
+
interviewers: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
315
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
316
|
+
outcome: z.ZodOptional<z.ZodString>;
|
|
317
|
+
}, z.core.$strip>>>;
|
|
318
|
+
offer: z.ZodOptional<z.ZodObject<{
|
|
319
|
+
baseSalary: z.ZodOptional<z.ZodNumber>;
|
|
320
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
321
|
+
bonus: z.ZodOptional<z.ZodNumber>;
|
|
322
|
+
equity: z.ZodOptional<z.ZodString>;
|
|
323
|
+
benefits: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
324
|
+
startDate: z.ZodOptional<z.ZodString>;
|
|
325
|
+
expiresDate: z.ZodOptional<z.ZodString>;
|
|
326
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
327
|
+
}, z.core.$strip>>;
|
|
328
|
+
salaryRange: z.ZodOptional<z.ZodObject<{
|
|
329
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
330
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
331
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
332
|
+
}, z.core.$strip>>;
|
|
333
|
+
notes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
334
|
+
tailoredResumeVersion: z.ZodOptional<z.ZodString>;
|
|
335
|
+
coverLetterGenerated: z.ZodDefault<z.ZodBoolean>;
|
|
336
|
+
followUpDue: z.ZodOptional<z.ZodString>;
|
|
337
|
+
priority: z.ZodDefault<z.ZodEnum<{
|
|
338
|
+
high: "high";
|
|
339
|
+
medium: "medium";
|
|
340
|
+
low: "low";
|
|
341
|
+
}>>;
|
|
342
|
+
source: z.ZodOptional<z.ZodString>;
|
|
343
|
+
referral: z.ZodOptional<z.ZodString>;
|
|
344
|
+
excitement: z.ZodOptional<z.ZodNumber>;
|
|
345
|
+
}, z.core.$strip>>>;
|
|
346
|
+
lastUpdated: z.ZodString;
|
|
347
|
+
}, z.core.$strip>;
|
|
348
|
+
export type Profile = z.infer<typeof Profile>;
|
|
349
|
+
export type Experience = z.infer<typeof Experience>;
|
|
350
|
+
export type Skill = z.infer<typeof Skill>;
|
|
351
|
+
export type Education = z.infer<typeof Education>;
|
|
352
|
+
export type Project = z.infer<typeof Project>;
|
|
353
|
+
export type Testimonial = z.infer<typeof Testimonial>;
|
|
354
|
+
export type Achievement = z.infer<typeof Achievement>;
|
|
355
|
+
export type CareerData = z.infer<typeof CareerData>;
|
|
356
|
+
export type Application = z.infer<typeof Application>;
|
|
357
|
+
export type Pipeline = z.infer<typeof Pipeline>;
|
|
358
|
+
export type Contact = z.infer<typeof Contact>;
|
|
359
|
+
export type InterviewRound = z.infer<typeof InterviewRound>;
|
|
360
|
+
export type Offer = z.infer<typeof Offer>;
|
|
361
|
+
//# sourceMappingURL=career-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"career-schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/career-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;EAW5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAIlE,eAAO,MAAM,WAAW;;;;;iBAKtB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;iBAUrB,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;iBAMhB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;iBAOpB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;iBAQlB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;iBAMtB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;iBAiBlB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOrB,CAAC;AAIH,eAAO,MAAM,OAAO;;;;;;iBAMlB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;iBAMzB,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;iBAShB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BtB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGnB,CAAC;AAIH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC"}
|