add_bullet
Add a bullet to an existing experience. Use for new variations from different resumes.
update_experience
Update an existing experience's fields (not bullets).
add_education
Add an education entry.
add_skills
Add skills by category. Duplicates are skipped automatically.
add_summary_fragment
Store a professional summary line/paragraph. Store ALL variations from different resumes. Exact duplicates are skipped automatically.
add_note
Store contextual clarification — 'company was acquired', 'promoted from X to Y', etc. Exact duplicates are skipped.
add_project
Add a side project, open source contribution, or portfolio piece to the career profile.
Use this when you discover projects from GitHub, personal websites, or conversation.
Projects strengthen a resume by showing initiative beyond day-job work.
get_projects
Get all side projects and portfolio pieces from the career profile.
ingest
Ingest career data from various sources. Use source='resume_text' to parse a resume, source='github' to enrich from GitHub repos, or source='url' to extract career info from a portfolio/LinkedIn/blog URL. Returns instructions for the agent to follow.
batch_ingest
Import a fully parsed resume in one atomic operation. ONE approval, ONE tool call — writes contact, experiences, bullets, education, skills, summary, and notes all at once.
The agent should:
1. Call ingest(source='resume_text') to get existing experiences and instructions
2. Parse the resume text into structured data
3. Call batch_ingest with the parsed data — this replaces the 10+ individual tool calls
Each bullet should include a quality tag: "strong", "weak:needs-metrics", "weak:vague", or "strong:qualitative".
Existing experiences are matched by company + title — pass their ID in the experiences array to add bullet variations instead of duplicates.
log_achievement
The user is casually talking about their work — a project they shipped, a problem they solved, a metric they hit, a skill they learned.
Convert their casual description into a professional resume bullet and add it to the right experience.
How to use:
1. Turn the user's casual language into a strong, quantified resume bullet (action verb + what + impact)
2. Find the matching experience by company or let the user confirm
3. This tool handles both steps — it creates the bullet AND attaches it to the experience
Examples of casual → bullet:
- "shipped the new auth system today" → "Designed and launched authentication system, improving login success rate by X%"
- "saved the team 3 hours a week with my script" → "Developed automation script reducing team manual effort by 3 hours weekly"
- "led the Q3 planning session" → "Led quarterly planning session aligning cross-functional teams on product roadmap"
mark_resume_processed
Mark a resume file as ingested.
generate_tailored_resume
Save a tailored resume for a specific job. Load get_career_profile first, select best bullet variations, write a tailored summary.
Output format matches the WinStack editor — user pastes the JSON into the editor's JSON view.
present_resume
Present a tailored resume to the user for review BEFORE sending to the editor.
You (the AI) should call this tool AFTER building the resume but BEFORE generate_tailored_resume.
This tool formats the resume for readable presentation in chat so the user can review and request changes.
WORKFLOW:
1. Load career profile (get_career_profile)
2. Build the tailored resume in your context
3. Call present_resume — this shows it to the user with your reasoning
4. User reviews and requests changes ("make it more technical", "swap that bullet")
5. You make changes in your context and call present_resume again
6. When user approves → call generate_tailored_resume to save + get editor link
7. User taps editor link for final pixel-level tweaks + PDF download
list_generated_resumes
List all previously generated tailored resumes.
get_generated_resume
Retrieve a previously generated resume by slug. Returns concise summary + editor link.
benchmark_resume
Analyze the full career profile against a job description BEFORE generating a resume.
WHEN TO USE: Before resume generation — this is step 1 of the pipeline.
WORKFLOW after calling this tool:
1. EXTRACT JD REQUIREMENTS — skills, tools, certifications, domain keywords, soft skills, implicit requirements
2. SCORE EVERY BULLET — relevance 0-10, flag which JD requirements each addresses, note metrics
3. RANK AND SELECT — pick 3-5 best per role, avoid redundancy, pick strongest variation
4. STRENGTHEN WEAK BULLETS — for selected bullets tagged "weak:needs-metrics" or "weak:vague":
Ask user ONE AT A TIME. BANNED words: spearheaded, orchestrated, leveraged, synergized, revolutionized, cutting-edge, best-in-class.
GOOD words: Led, Built, Cut, Saved, Ran, Shipped, Fixed, Grew, Designed, Launched.
Replace via delete_item + add_bullet with tags=["strong"]. Skip if user says "skip".
5. IDENTIFY GAPS — COVERED / AVAILABLE (in profile but not selected) / GAP (not in profile)
6. PRESENT ANALYSIS — "Scored X roles, Y bullets. Coverage: Z%. N gaps." Offer gap interview.
7. GAP INTERVIEW — one question at a time, convert answers to bullets, add to profile
8. OUTPUT FINAL SELECTION — selected bullets per role, recommended summary + skills, coverage score
Then: "Ready to generate?" → present_resume → generate_tailored_resume
Do NOT dump all questions at once. Ask one, wait, process, ask next.
delete_item
Delete items from the career profile. Items are soft-deleted by default (hidden but recoverable). Use permanent=true to permanently remove.
Supported types:
- experience: hides experience + all its bullets (requires id)
- bullet: hides a single bullet (requires id)
- education: removes an education entry (requires id)
- skill: removes a skill from a category (requires category + item)
- note: removes a note (requires id)
- summary_fragment: removes a summary fragment (requires id)
- target_company: removes a company from career progression watchlist (requires item = company name)
- career_field: clears a career progression field (requires item = field name)
undo_delete
Restore the most recently deleted experience or bullet. Only works for soft-deleted items.
reset_profile
Delete ALL career data including career progression. This cannot be undone. Use only when the user explicitly asks to start over.