| name | launch |
| description | Launch your job search with Career Navigator: the single entry point for configuration. Sets up the job search folder, builds the user profile, ExperienceLibrary and application tracker from existing documents, walks through the Indeed MCP connector (browser OAuth) for live job search, optional Apify for salary data, optional Gmail / Microsoft 365 inbox and optional Google Calendar connectors (OAuth) for outreach and meeting context, optional LinkedIn post analytics, and optional cloud storage connectors (Google Drive, OneDrive, Dropbox) when applicable. No Customize button required â run this command to do everything.
|
| triggers | ["/career-navigator:launch","/launch","launch career","launch career navigator","begin my job search with career navigator","set up career","set up career navigator","configure career navigator","get started with career navigator"] |
Use this after installing the plugin â it is how you launch Career Navigator: registering your job search folder, reading your existing documents, building your profile and ExperienceLibrary, and configuring integrations (the same setup flow as before, framed as starting your search).
The working directory (or relevant sub-directory) should be configured as the user's job search directory to be referred to as {user_dir}. All data this plugin producesâ profile, ExperienceLibrary, tracker, generated artifacts â lives in subdirectories of the {user_dir} folder alongside the user's raw documents.
Integrations (Indeed, Apify, LinkedIn, Gmail, Microsoft 365, Google Calendar): Follow CONNECTORS.md: only prompt for services that are not already connected in this session (host tools missing or user reports a problem). If tools are already present, a brief acknowledgment is enoughâdo not ask setup, OAuth, or browser-access questions for those services.
Workflow
Connector pattern (apply to steps 3â7)
| Step | What to do |
|---|
| 1 â Discover | Check tools in this chat for that integration. If connected (tools present), acknowledge briefly and skip further steps for it. |
| 2 â Configure | Only if not connected: ask if they want to set up; guide CONNECTORS.md; they complete Connectors + OAuth/token. Never automate OAuth with Chrome/computer use. |
| 3 â Browser access | Only if not connected via MCP or the flow is browser-only (e.g. LinkedIn analytics). Do not ask for Indeed / Apify / inbox / calendar when MCP tools already work. |
Apply 1 â 2 â (3 only when needed) per integrationâomit steps 2â3 when step 1 already succeeded.
1. Confirm job search directory
If the user provided a directory path: use it. inform the user of the path to {user_dir}
If no path was provided: ask:
"What folder should Career Navigator use for your job search? This is where your resumes and cover letters live, and where I'll save everything I generate. Start a new chat and click the "+" icon in the text box to add that folder to our chat"
2. Check for existing data files
After confirming {user_dir}, check whether each of the five core data files exists. Handle each independently.
Files to check
| File | Path |
|---|
| Profile | {user_dir}/CareerNavigator/profile.md |
| ExperienceLibrary | {user_dir}/CareerNavigator/ExperienceLibrary.json |
| Tracker | {user_dir}/CareerNavigator/tracker.json |
| Artifacts index | {user_dir}/CareerNavigator/artifacts-index.json |
| Story corpus | {user_dir}/CareerNavigator/StoryCorpus.json |
For each file: two paths
If the file exists â validate its format and content:
-
CareerNavigator/profile.md: Must contain sections for target roles, compensation floor, location, and key differentiators. If any section is missing or empty, fill it in from other available sources (ExperienceLibrary, resume documents in {user_dir}). Inform the user of any gaps found and how they were resolved.
-
CareerNavigator/profile.md: Must contain sections for target roles, compensation floor, location, and key differentiators. If any section is missing or empty, fill it in from other available sources (ExperienceLibrary, resume documents in {user_dir}). Also ensure support sections exist or are empty-but-ready to fill:
## Employment Context
## Certifications & Credentials
If they are missing or empty, resolve from documents and then ask the user to confirm/add missing details.
-
CareerNavigator/ExperienceLibrary.json: Must be valid JSON with a meta object and a non-empty units array. Each unit must have id, type, company (or institution), title, and dates. Flag any units missing required fields and prompt the user to supply them. If the array is empty, treat the file as missing and rebuild it.
-
CareerNavigator/tracker.json: Must be valid JSON with meta, applications array, and pipeline_summary. Each application entry must have at minimum id, company, role, and status. applications[] contains only submitted applications â pre-application roles live in recommendations.json. Recalculate pipeline_summary counts from the actual applications array and update if stale.
-
artifacts-index.json: Must be valid JSON with a meta object and an artifacts array. Cross-check the listed artifact filenames against files actually present in {user_dir}. Remove entries for files that no longer exist. Add entries for PDF/DOCX files found in {user_dir} that are not yet indexed.
-
CareerNavigator/StoryCorpus.json: Must be valid JSON with meta, stories array, and source_index array. If empty or stale, run mine-stories extraction on journal/PKM/debrief/resume sources found in {user_dir}.
After validation, report to the user:
- What was found and whether it passed validation
- Any corrections made automatically
- Any gaps that need the user's input
If the file does not exist â create it from documents in {user_dir}:
- Scan
{user_dir} (non-recursively) for readable documents: PDF, DOCX, TXT, MD files.
- Read each document and extract relevant content.
- Build the missing file(s) following the schemas below.
- Create any missing subdirectories (
profile/, tracker/) before writing.
- Inform the user which documents were used and what was created.
If no source documents exist in {user_dir} at all, create minimal placeholder files and prompt the user to add their resume:
"I didn't find any resumes or documents in your job search folder. Add a resume (PDF or DOCX) and run /career-navigator:launch again to build your profile and ExperienceLibrary."
Schemas for newly created files
CareerNavigator/profile.md
# {Name} â Job Search Profile
## Contact
- Email, Phone, Website (extracted from resume)
## Target Roles
(extracted from resume objective/summary or left as placeholder)
## Target Companies
(leave blank if not determinable)
## Compensation Floor
(leave blank â ask the user)
## Location
(extracted from resume or left as placeholder)
## Key Differentiators
(extracted from resume summary/highlights)
## Employment Context
- Employment status: employed | unemployed | unknown
- If employed: current comp package (base/bonus/equity/benefits if available) and what issues might make you open to a new role (bullets).
- If unemployed: last job (title/company/end date if known), income sources (unemployment/severance/other), and runway until you need a new job (weeks/months).
- Notes / assumptions (no invention).
## Certifications & Credentials
- Degrees:
- Certifications / professional licenses:
- Clearance / security clearance:
- Other credentials:
- Notes (e.g., expiration/renewal if known).
## LinkedIn
- LinkedIn slug: (vanity username, e.g. `todd-margolis` from `linkedin.com/in/todd-margolis`)
## Current Search Status
- Actively searching as of {today's date}
CareerNavigator/ExperienceLibrary.json
{
"meta": { "created": "{today}", "version": "1.0", "description": "..." },
"units": [
{
"id": "exp-001",
"type": "role",
"company": "...",
"title": "...",
"dates": "...",
"summary": "...",
"achievements": [
{ "id": "exp-001-a1", "theme": "...", "text": "..." }
],
"skills": ["..."]
}
]
}
CareerNavigator/tracker.json
{
"meta": { "created": "{today}", "version": "1.0", "description": "..." },
"applications": [],
"pipeline_summary": {
"as_of": "{today}",
"applied": 0,
"declined_or_inactive": 0,
"overdue_followup": 0
}
}
CareerNavigator/networking.json
{
"meta": { "created": "{today}", "version": "1.0", "description": "Networking data â recruiter relationships and LinkedIn post analytics" },
"recruiter_relationships": [],
"networking": []
}
CareerNavigator/recommendations.json
{
"meta": { "created": "{today}", "version": "1.0", "description": "Pre-application role pipeline â roles under consideration before applying" },
"recommendations": []
}
artifacts-index.json
{
"meta": { "created": "{today}", "version": "1.0", "description": "..." },
"artifacts": [
{
"id": "artifact-001",
"type": "resume",
"filename": "...",
"path": "...",
"target_company": "...",
"target_role": "...",
"date_created": "...",
"source": "existing",
"notes": "..."
}
]
}
2.4 employment situation + credentials instake (persist to profile.md)
After core files exist (or after they are created/repaired), ensure your
{user_dir}/CareerNavigator/profile.md has usable context:
-
Read {user_dir}/CareerNavigator/profile.md and check whether:
## Employment Context is present and not just placeholders, and
## Certifications & Credentials is present and not just placeholders.
-
Attempt to fill from documents already found in {user_dir}:
- From CV/resume/cover letter text: extract degrees, certifications,
professional licenses, and any clearance/security mentions.
- Extract employment clues (current employer, if theyâre between roles,
unemployment/severance mentions, etc.).
-
If Employment Context is missing/unclear, ask targeted questions and
then write the answers back into profile.md under:
## Employment Context
- Scenario A (employed): ask current comp package and what issues/constraints might make a job change attractive.
- Scenario B (unemployed): ask unemployment benefits/severance/income sources,
last job (title/company/end date if known), and runway until you need a new job.
- Scenario C (unknown): ask one minimal clarifier question to distinguish employed vs unemployed.
-
If Certifications & Credentials are missing/unclear, present what you found
(as a short list) and ask the user to confirm and add anything missing.
-
Ensure ## LinkedIn has all fields required for scheduled analytics:
LinkedIn slug:
LinkedIn analytics permission: granted | denied
LinkedIn analytics mode: chrome | computer | either
If slug is missing/blank, ask: "What's your LinkedIn vanity username? (the part after linkedin.com/in/)" and save it.
If permission/mode are missing, ask once and save them. If the user declines analytics, save permission: denied and mode: unknown.
-
Persistence rules:
- Do not overwrite other sections (Target Roles, Key Differentiators, etc.).
- Only update the content under the relevant headings.
- If the user says ânot sureâ, record
unknown explicitly instead of inventing.
2.5 Voice profile (launch)
After core files exist, build or refresh {user_dir}/CareerNavigator/voice-profile.md so writer has real tone signalânot a single auto-generated markdown artifact when rĂ©sumĂ©s/CVs/letters live elsewhere.
Order: Run 2.5b first (inventory + read Tier A PDFs/DOCX), then 2.5a (LinkedIn prompt), then incorporate paste or a continue re-scan into 2.5c. If the user adds new files after 2.5a, re-run 2.5b before writing.
2.5a Ask for LinkedIn / social writing (same session)
After 2.5b (and any re-scan if the user drops new files), prompt once before writing 2.5c:
Voice & tone: To match how you sound on LinkedIn and in messagesânot only on rĂ©sumĂ©sâplease choose one:
- Paste 2â5 recent LinkedIn posts (or other short professional writing) here, or
- Add them as files in this folder (e.g.
linkedin-posts.md, .txt, or a PDF export), then tell me when theyâre saved or say continue so I can re-read the folder, or
- Reply skip and Iâll rely on rĂ©sumĂ©s/cover letters only (weaker match for social and DMs).
If they paste: append a dated ## User writing samples (launch) section with excerpts (trimmed), label source: user paste (launch).
If they skip: record one line under ## Launch â LinkedIn prompt: User skipped LinkedIn samples at launch; writer may ask again before drafting.
2.5b Gather prose from disk (priority order)
Goal: Use CVs, résumés, and cover letters as primary voice sources, not stray .md alone.
-
Scope: Walk {user_dir} recursively (or top level plus all non-hidden subfoldersâminimum depth that finds Documents/, resumes/, etc.). Skip: .git, node_modules, .Trash, and anything that is clearly not user documents.
-
Always ignore as corpus input:
{user_dir}/CareerNavigator/voice-profile.md (donât read this file to infer voice).
- All
CareerNavigator/*.json (schemas/data, not voice).
-
Classify every candidate file (by path + name + artifacts-index.json when present):
- Tier A â Raw career documents (prefer):
*.pdf, *.docx, *.txt, *.md whose names/paths suggest resume, cv, curriculum vitae, cover, letter, bio, about, or obvious user-upload basenames. You must read PDF and DOCX the same way you do when building profile.md / ExperienceLibraryâextract professional summary / profile, cover letter body (if present in file), and representative bullet lines (not the entire work history). If a file is only bullet lists with no narrative, note register (density, metrics, voice in bullets).
- Tier B â Other prose: remaining
.md / .txt that look like user writing (not changelogs, not unrelated repo readmes).
- Tier C â Plugin-generated artifacts (use with care): entries in
artifacts-index.json with "source": "generated" (and matching files on disk). Do not let Tier C be the only narrative basis if any Tier A file exists. If only Tier C supplies paragraph prose, use it but label Source: generated artifact and flag lower confidence for ânaturalâ voice.
-
Minimum bar: If you find multiple sources with clearly different tone (e.g. formal cover letter vs casual LinkedIn paste), do not flatten into one voiceâuse 2.5c multi-context sections and/or Open questions.
-
If no narrative at all: only bullets and structureâstill write voice notes (brevity, metrics, keyword density); flag that writer needs pasted prose for paragraph-level match.
2.5c Write voice-profile.md (structure)
Create or update with dated sections (you may keep older dated blocks below for history).
-
## Launch voice harvest (YYYY-MM-DD) (or retain ## Setup scan (YYYY-MM-DD) if you prefer that headingâbut use one dated harvest per run):
- Table Source files scanned: Path (relative to
{user_dir}), Tier (A/B/C), Doc type (résumé / CV / cover / LinkedIn file / other), Voice notes (short).
- Include every qualifying file you foundânot only the first markdown file.
-
## Voice by context (when tones diverge or user supplied formal + casual samples):
- Subsections e.g.
### Applications (résumé / cover letter), ### Public (LinkedIn), ### Other. Register, sentence length, humor, CTAs per subsection.
- If tones conflict and intent is unclear, add
## Open questions (1â4 bullets): default voice for cover letter vs DM vs post; intentional multiple personas for different audiences; etc.
-
## Voice quality flags (launch) â candid risks (job-search pragmatism, not personal attack):
- Examples: snark / sarcasm that may read poorly to conservative employers; try-hard or overselling; generic âAI slopâ tells (empty grandiosity, filler transitions, buzzword stacks without proof); apology / hedging loops; political or divisive edge in public samples; over-share. For each: low / medium / high concern + why. If clean: No major flags from available samples.
-
Optional voice_profile_v1 JSON at end: include "tones": { "applications": "âŠ", "public": "âŠ" } when multi-context sections exist.
-
## Usage guidance for writer: Which context to use for cover letter vs LinkedIn vs DM; if ambiguous, ask the user once in this launch session before moving on.
Do not treat a lone plugin-generated cover letter as sufficient if Tier A rĂ©sumĂ©s/CVs exist in the same folderâingest those files for this section.
2.6 Story corpus initialization
After core files and voice profile:
- Ensure
{user_dir}/CareerNavigator/StoryCorpus.json exists.
- Run
mine-stories as a preprocessing pass:
- Full extraction on first launch
- Incremental extraction on subsequent launches (new/changed source files only)
- Explain that interview prep now uses this corpus as the source of truth for behavioral stories, so the model does not need to re-read full journals each time.
- If source files are missing or sparse, keep an empty-ready corpus and ask the user to add journals/notes/PKM exports when available.
3. Connect the Indeed MCP connector (live job search)
Apply Connector pattern; do not ask about Indeed if search_jobs / get_job_details are already available in this chat.
Career Navigatorâs search-jobs skill expects the Indeed MCP tools search_jobs and get_job_details. On Claude Desktop, those tools appear only after the user connects Indeed under Customize â Connectors and finishes browser-based OAuth with Indeed (this is not a static API key you paste into .mcp.json). Only if tools are missing, run Configure; they complete Connect and OAuthâdo not drive it via Claude in Chrome or computer use.
What to expect in Claude Desktop:
- The Indeed connector page describes âSearch for jobs on Indeedâ, developer Indeed, and under Tools lists
search_jobs and get_job_details. Details may show the connector URL https://mcp.indeed.com/claude/mcp (for reference only â connect through the app, not by editing JSON).
- Tapping Connect starts the link flow. Claude shows âGrant access to Indeedâ with a prompt to complete the sign-in steps in the new browser tab (and âDidnât work? Relaunch the tabâ if needed).
- In the browser, Indeed opens an OAuth page on
secure.indeed.com (âClaude would like to access your accountâ). The user signs in (or confirms the right Indeed account), reviews permissions (e.g. search jobs on their behalf, profile access), then clicks Continue to authorize.
Walk the user through:
- Customize (or Settings) â Connectors â find Indeed in the catalog.
- Open Indeed â confirm Tools includes
search_jobs and get_job_details.
- Click Connect. When Grant access to Indeed appears, tell them to switch to the new browser tab, finish Indeed sign-in / consent, and click Continue on the OAuth screen.
- After success, Claude should show the connector as connected (e.g. Disconnect visible instead of Connect). If tools still donât appear, start a new chat.
Validation: In this session (or after a fresh chat), confirm search_jobs / get_job_details are available. If yes:
"Indeed is connected. Run /career-navigator:search-jobs any time, or ask me to find jobs for your target role and location."
Do not ask about Indeed further (including browser access)âit is already configured.
If tools are missing after OAuth, have them verify: Indeed account authorized, connector still enabled, new chat after connecting.
Claude Cowork / other hosts: Use the hostâs documented way to enable Indeed job search MCP (same tool names when available). Do not invent credentials or scrape Indeed without the official connector.
4. Configure Apify for salary benchmarking (optional)
Apply Connector pattern; do not ask about Apify if its tools are already availableâsuggest /career-navigator:salary-research and move on.
The salary-research skill uses the Apify MCP tools to pull live compensation data. This step is optional â skip it if the user doesn't need salary benchmarking.
Do not ask the user to paste their Apify token into chat, edit claude_desktop_config.json, or rely on .env / APIFY_TOKEN for MCP startup â Claude Desktop does not expand ${APIFY_TOKEN} inside MCP args the way a shell would. They paste the token into the Apify connector form in the appâdo not use browser automation to configure it.
First check if the Apify MCP is already connected. It may be in a deferred state, so double check and make sure to activate them if you need to. If they are active, suggest they run /career-navigator:salary-research for a role and location from their profile. If not, ask the user:
"Would you like to set up salary benchmarking? It uses Apify's free tier ($5/month in credits â enough for personal job search use) to pull live salary data by role and location."
If yes â Claude Desktop connector flow:
-
Direct them to sign up at https://apify.com (free account).
-
They copy their Personal API token from Console â Settings â Integrations (they keep it private â do not ask them to paste it into this conversation).
-
Walk them through the host UI:
-
Open Customize (or Settings) â Connectors
-
Under Desktop, choose Apify (may show as apify-mcp-server)
-
Open Configure
-
Paste the token into Apify token (Required)
-
Set Enabled tools to this exact string (comma-separated, no spaces):
call-actor,get-actor-run,get-dataset-items,cheapget/best-job-search
-
Save, turn the connector on, start a new chat so MCP tools load
-
Validation: Confirm Apify tools are available (e.g. Call Actor, Get Actor run, Get dataset items). If tools need to be activated from a deferred state, then do that. If the tools are missing, summarize what they should double-check (token, enabled tools string, connector enabled, new session). If Apify is already connected, do not ask further questions about it.
Cowork / other hosts: If the user is not on Claude Desktop, tell them to add Apify MCP the way their host documents (same Enabled tools string and a secure token field if the UI offers one). Do not invent a JSON config that embeds the token.
If no or skipped:
"No problem â salary benchmarking is off for now. You can set it up any time by running /career-navigator:launch again."
5. Offer LinkedIn post analytics (optional)
Apply Connector pattern (LinkedIn is usually no host MCP for this flowâbrowser access is the main lever).
After Indeed and Apify (or if the user skipped Apify), offer a read-only snapshot of their own LinkedIn post metrics into {user_dir}/CareerNavigator/networking.json (networking[], per linkedin-post-analytics). This is optional; do not run it without a clear yes.
1 â Discover: There is typically no LinkedIn MCP tool for this plugin path; note that analytics use browser access (step 3).
2 â Configure: Ask whether they are logged into LinkedIn in a browser profile the host can use; they sign inâdo not automate LinkedIn login.
3 â Browser access: Ask whether they want Claude in Chrome and/or computer use for read-only LinkedIn analytics (neither / Chrome / computer use / both). If neither, do not run analytics in-browser; offer schedule later or skip.
Before running now or scheduling later, persist choices in {user_dir}/CareerNavigator/profile.md under ## LinkedIn:
LinkedIn analytics permission: granted | denied
LinkedIn analytics mode: chrome | computer | either
If they pick both, save mode: either.
Say something like:
LinkedIn visibility (optional): You can snapshot your post analytics into your career tracker (read-only). Which browser access should we useâClaude in Chrome, computer use, both, or neither (skip browser run for now)?
If you want a run now or later via /schedule, say so.
If they choose run now and approved Chrome and/or computer use:
- Confirm the chosen tooling is available in the host. If neither was approved or tools are missing, do not scrapeâexplain they can enable tooling, log into LinkedIn, then run
linkedin-post-analytics or /career-navigator:linkedin-post-analytics (or continue in a new chat).
- If approved: follow
skills/linkedin-post-analytics/SKILL.md end-to-end (ask for LinkedIn vanity slug if unknown, append snapshots to tracker.json, summarize).
If they choose schedule later: still save slug/permission/mode to profile.md now so unattended /schedule runs can execute without re-asking.
If they skip or defer:
"Understood â run linkedin-post-analytics or /career-navigator:linkedin-post-analytics anytime, or add a /schedule task when you're ready. networking-strategist can remind you when you're working on visibility."
6. Connect Gmail / Microsoft 365 / Google Calendar for email & meeting context (optional)
Apply Connector pattern; do not prompt for Gmail, Microsoft 365, or Google Calendar if tools for that service are already in this chat (brief acknowledgment only).
After Indeed, Apify, and the LinkedIn post analytics offer (or skips), offer Gmail and/or Microsoft 365 (inbox) and/or Google Calendar so draft-outreach, follow-up, and contact-context can search read-only mail and summarize recent meetings with a contact when the user explicitly approves each lookup.
Step 2 only: never automate Connectors with Chrome/computer-use tools. Ask if they want to set up or re-enable Gmail/M365/Calendar; if yes, they complete Connectors + OAuth themselves while you give instructions.
6a. Gmail â check connection first
-
Check this session: Look at tools available in this chat. If any clearly belong to Gmail / Google mail (names often include gmail, google, or similarâexact strings vary by host), treat Gmail as connected and enabled for this session. Say so briefly (e.g. âGmail looks connected hereâgreat for inbox context when you approve a searchâ) and do not ask them to install Gmail again. Still offer Microsoft 365 below if useful.
-
If no Gmail tools appear: You cannot see their Connectors screen from chat. Ask them to open Customize / Settings â Connectors and look at Gmail:
- Gmail not listed: Use the normal âadd + connectâ path in step 6d (first-time install).
- Gmail is listed but turned off (toggle disabled, connector inactive, or equivalent): ask politely, e.g.
âYou already have the Gmail connector in Claude, but itâs not enabled right now. Would you like to turn it on for read-only access? Career Navigator only searches when you approve each lookup, and Anthropicâs Gmail integration doesnât send mail on your behalf.â
If they yes â ask them to enable the toggle (or equivalent) themselves in Connectors, then Connect / re-auth if the UI asks, then start a new chat if tools still donât load. Do not use Claude in Chrome or computer use to flip the toggle or complete OAuth.
- Gmail is listed but not signed in (shows Connect, Reconnect, or disconnected state): ask politely, e.g.
âGmail is added but not connected to your Google account. Would you like to set that upâyouâll click Connect and finish Google sign-in in the browser tab Claude opens? Same read-only patternâwe only search when you say yes each time.â
If they yes â give the steps below; they click Connect and complete OAuth in the app (no passwords in chat).
-
If they decline enable/connect: respect that; note they can turn it on later in Connectors.
6b. Microsoft 365 (unchanged pattern)
Offer Microsoft 365 when relevant (see 6d). Optional: if Microsoft 365 tools are already in this session (including via project .mcp.json ms365 â https://microsoft365.mcp.claude.com/mcp â Outlook/M365 as an alternate to Gmail/Google Calendar), acknowledge and skip redundant install instructions.
6c. Google Calendar â check connection first
-
Check this session: Look at tools available in this chat. If any clearly belong to Google Calendar (names often include calendar, google_calendar, gcal, or similarâexact strings vary by host), treat Google Calendar as connected and enabled for this session. Say so briefly (e.g. âGoogle Calendar looks connectedâgreat for meeting context when you approve a lookupâ) and do not ask them to install Google Calendar again.
-
If no Google Calendar tools appear: You cannot see their Connectors screen from chat. Ask them to open Customize / Settings â Connectors and look at Google Calendar:
- Google Calendar not listed: Use the normal âadd + connectâ path in step 6d (first-time install).
- Google Calendar is listed but turned off or shows Connect / Reconnect: ask politely, e.g.
âYou already have the Google Calendar connector in Claude, but itâs not enabled right now. Would you like to turn it on? Career Navigator only reads events when you approve each lookupâfor example, prior calls with a hiring manager before you draft outreach.â
If they yes â they enable / Connect themselves in Connectors, finish OAuth if prompted, then start a new chat if tools still donât load. Do not use Claude in Chrome or computer use to flip the toggle or complete OAuth.
- If they decline enable/connect: respect that; note they can turn it on later in Connectors.
6d. Generic email & calendar pitch (when connector state is unknown or user wants several)
If 6a already confirmed Gmail tools in-session, omit Gmail from this pitch where redundant. If 6c already confirmed Google Calendar tools in-session, omit Google Calendar from redundant install languageâstill offer Microsoft 365 if missing.
Say something like:
Email & calendar context (optional): If you want help remembering what you already said to recruiters or hiring managersâand recent meetings (calls, interviews) with themâyou can connect Gmail and/or Microsoft 365 (Outlook) and/or Google Calendar through Claudeâs Connectors. Auth is OAuth in the browserâno passwords in chat. Career Navigator only searches mail or reads calendar when you say yes to a specific lookup.
Want to set up Gmail, Microsoft 365, Google Calendar, a combination, or skip for now?
If they want to set up (they do the clicksâdo not use Chrome/computer-use tools to connect):
- Customize / Settings â Connectors.
- Gmail: They open Gmail â Connect â finish Google sign-in and consent. Official docs: Gmail integration · Google Workspace connectors.
- Google Calendar: They open Google Calendar â Connect â finish Google sign-in and consent (separate connector from Gmail). Official docs: Google Calendar integration · Google Workspace connectors.
- Microsoft 365 (includes Outlook; calendar/Teams surfaces per host): They open Microsoft 365 â Connect â finish Microsoft sign-in. Team/Enterprise and sometimes admin setup may be requiredâsee Microsoft 365 connector and Enabling and using the Microsoft 365 connector. Security overview: Microsoft 365 connector: Security Guide.
- After each connection, suggest a new chat if mail- or calendar-related tools do not appear.
Validation: If the host exposes Gmail, Microsoft 365, or Google Calendar tools, confirm they are listed/enabled. If the userâs plan or org does not include a connector, say so plainly and point to in-app Connectors catalog and CONNECTORS.md. If those tools are already working, do not ask about browser access for mail or calendarâMCP in chat is enough.
If skipped:
"No problem â outreach and follow-ups will work without inbox or calendar search. You can connect later under Settings â Connectors or run /career-navigator:launch again. Details: CONNECTORS.md."
7. Configure cloud storage connector (optional)
Apply Connector pattern; do not prompt for storage setup if tools for the chosen provider are already present in this chat.
After email/calendar setup (or skip), offer cloud storage for artifact portability:
Cloud storage (optional): Want your job-search files/artifacts backed up outside a single laptop? You can also keep local-only storage.
- Google Drive: recommended via Google Drive app sync (or manual backup/restore) because Claudeâs native Drive connector is not reliable for typical job files (PDF/DOCX/etc.).
- OneDrive: recommended via OneDrive application sync (or manual backup/restore) because the Claude Microsoft 365/OneDrive file access connector is optimized for native formats (Word/PowerPoint/PDF) and is not reliably usable for the pluginâs JSON artifacts.
- Dropbox: recommended via Dropbox application sync (or manual backup/restore) for the same durability reasons.
Which option do you want?
If they choose a provider:
- Confirm which provider they want and whether they prefer app sync or manual backup/restore.
- If they chose cloud storage: do not ask them to connect a connector for job files. Instead ask:
- Do you want to use an application to sync or manual backup/restore?
- For app sync: ask them to sync the local
{user_dir} folder using the Google, Microsoft or Dropbox desktop app (so the folder contents are available locally on every device).
- For manual backup/restore: ask them to copy the job-search folder into their cloud storage provider before switching devices, then restore it to a local folder on the new device before running launch.
- In either case, ask them to start a new chat after theyâve ensured the folder is available locally.
Discover-first behavior:
- If the selected provider is already syncing locally (or the restored folder is already present), acknowledge and skip setup instructions.
- If local folder contents are not present yet, ask them to complete sync/restore first, then restart chat.
Guardrails:
- Do not use browser automation for storage setup; the user performs sync/backup steps.
- If they skip, keep local filesystem storage in
{user_dir} and continue launch normally.
8. Set up local voice MCP (optional)
Discover: Check whether tools named speak and listen are available in this session. If both are present, the mcp-voice MCP is already available â acknowledge briefly and skip this step entirely.
If voice tools are missing, offer once:
"Career Navigator supports optional voice features â text-to-speech for mock interview questions and speech-to-text to capture your answers. It runs entirely on your machine with no cloud account. You install a small Claude Desktop Extension (.mcpb) from GitHub â want the steps?"
If yes, give these steps (do not edit claude_desktop_config.json or project .mcp.json for voice):
- Open Career Navigator releases and download
mcp-voice.mcpb from the latest release.
- In Claude Desktop, open Settings (macOS: â Command + comma; Windows: Ctrl + comma).
- Go to Extensions.
- Drag
mcp-voice.mcpb into the Extensions window.
- Click Install.
- Ensure the mcp-voice extension is enabled.
- Start a new chat if tools do not appear.
Point to README.md (Optional: Local voice) and CONNECTORS.md (Voice section) for copy-paste detail.
If skipped:
"No problem â run /career-navigator:launch again any time to enable voice features."