Local-first, open-source job application assistant built on the Model Context Protocol. Free community core with optional Pro features for AI-powered CV tailoring, cover letters, and advanced analytics.
Critical gaps across naming, descriptions, and schemas. Tool names lack consistent verb prefixes (e.g., 'analytics', 'status', 'credits' are nouns). Descriptions are present but generic (avg ~50 chars, well below 194-char baseline). No visible input schemas in source code, tools reference Zod schemas but actual parameter definitions, types, and constraints are not shown. Output schemas undocumented. Error handling is minimal (generic 'Tool X failed' messages). 41 tools with high variance in quality; many appear to be inferred from file paths rather than explicit registration with full schemas.
Add a candidate to a team account (business/admin feature)
Add a reminder for a job application task
Get analytics and statistics about job applications
Analyze a job posting for key requirements and skills
Auto-fill a job application form with user data
Create a backup of all local data
Mark a reminder as complete
Confirm and record a job application submission using an approval token
No input schemas visible in source code. Tools reference Zod schemas (src/tools/*.ts) but actual parameter definitions, types, constraints, and descriptions are not shown in provided code.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Generate a cover letter for a job posting using AI
Create a new account (business/admin feature)
Get the current AI credit balance
Delete a reminder
Generate a draft answer to a screening question using AI
List reminders that are due now
Export a CV as Markdown text
Retrieve a job posting by ID
Retrieve the user's profile information
Grant monthly AI credits (admin/Pro feature)
List all job applications for the user's profile
List all available data backups
List all versions of a CV with full version history
List all CVs for the user's profile
List jobs in the user's inbox with optional filtering by status
List all reminders for the user
List team members and candidates (business/admin feature)
Calculate match score between a CV and a job posting
Parse a CV file (PDF or DOCX) and extract structured information
Rank jobs by match score against the user's CV
Request approval to submit an application with validation checks
Restore data from a backup
Save a new job application
Get the current status of the job application system
Run system checks and diagnostics
Generate a tailored CV for a specific job posting using AI
Top up AI credits (Pro feature)
Update the triage status of a job (new, triaged, applied, archived)
Update an application's editable fields (CV, cover letter, answers, notes)
Update or revise a CV as a new version
Update the user's profile information
Update an application's status (draft, submitted, rejected, etc.)
Generate a usage report for the team (business/admin feature)
Noun-based tool names reduce clarity. 'analytics', 'status', 'credits' are nouns, not action verbs. LLMs infer intent from verb prefixes (get_, list_, create_). Rename to 'get_analytics', 'get_status', 'get_credits' for consistency.
Generic descriptions under 20 characters. Tools like 'status' (25 chars), 'credits' (25 chars), 'list_cvs' (30 chars) lack sufficient context. Expand to 50-200 chars with WHAT, WHEN, and WHY.
No output schemas documented. Tools return results but expected response structure (fields, types, pagination) is not visible in source. LLMs cannot plan downstream calls without knowing what fields to extract.
Error handling is generic. src/server.ts returns 'Tool X failed: <message>' with no recovery guidance. Per pattern:recovery-guide, errors should suggest next steps (e.g., 'User not found. Try search_users() first.').