Skip to main content
Glama
Ambuj123-lab

Ambuj Systems - Career Workspace

Live Production Demo Interactive System Docs GitHub Release Uptime SLA 99.998% Product Hunt Featured on UptimeRobot Glama MCP Score M8ven Verified Smithery Verified MCP Author Portfolio

Next.js 16 React 19 Google Gemini API Multi-Provider Fallback Tavily AI Search Jina AI Reader MongoDB Atlas Langfuse Observability GitHub MCP Proofer Docker Vercel Edge License: MIT


๐ŸŽฏ The Engineering Philosophy

โŒ The "Toy AI Generator" Fallacy

99% of cover letter tools on the internet are simple prompt wrappers that cause immediate disqualification during technical recruiter screens:

  • Hallucinated Metrics: They invent fake quantitative claims ("Increased revenue by 43% using Docker" when the candidate only listed Docker under skills).

  • Fluff & Sycophancy: They inject generic, embarrassing praise ("I have long admired your revolutionary, industry-defining synergy").

  • Zero Company Grounding: They have no real-time awareness of recent engineering pivots, active tech stacks, or corporate subsidiaries.

  • Hidden Third-Party Traps: They fail to detect when a job posting is a third-party staffing/payroll agency disguised as a direct employer.

โœ… The CoverCraft Architecture: Verifiable Evidence Graph

CoverCraft is not a template filler. It is an Evidence-Grounded Career Workspace & Claim-Validation Engine designed for senior engineers and discerning hiring teams.

Candidate Resume (PDF)          Job Description (JD)           Live Web (Tavily + Jina AI)
        โ”‚                               โ”‚                                 โ”‚
        โ–ผ                               โ–ผ                                 โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Deterministic    โ”‚           โ”‚ Deterministic    โ”‚             โ”‚ 8-Page Multi-Board โ”‚
โ”‚ Text & Evidence  โ”‚           โ”‚ Fallback Regex   โ”‚             โ”‚ Crawl & Markdown   โ”‚
โ”‚ Extraction Layer โ”‚           โ”‚ & Vendor Auditor โ”‚             โ”‚ Deep Extraction    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                             โ”‚                                 โ”‚
          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                        โ–ผ
                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                        โ”‚   Human-in-the-Loop Gateway     โ”‚
                        โ”‚   (Source Approval & Selection) โ”‚
                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                        โ–ผ
                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                        โ”‚   Evidence-Grounded Generator   โ”‚
                        โ”‚   โ€ข Strict Verbatim Anchors     โ”‚
                        โ”‚   โ€ข Evidence-Grounded Claim Validation โ”‚
                        โ”‚   โ€ข Citation Footnotes [1], [2] โ”‚
                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                        โ–ผ
                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                        โ”‚   Interview-Defensible Output   โ”‚
                        โ”‚   (Every claim backed by facts) โ”‚
                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Related MCP server: JobFindsMe

โšก Core Architectural Pillars

1. Multi-Source Real-Time Intelligence & Deep Markdown Crawling

  • Tavily 8-Page Authoritative Crawl: Queries live enterprise footprints targeting careers, linkedin, naukri, and ambitionbox.

  • Jina AI Reader (r.jina.ai) Deep Scraping: Strips HTML clutter, popups, and cookie walls, returning clean, high-fidelity markdown with an exponential timeout fallback.

  • Three-Tier Domain Classifier: Categorizes incoming intelligence into Company Official, Job Portals & Reviews, and External Engineering News.

2. Deterministic Fallback Regex & 4-Tier Company Intelligence

When LLM JSON structures are delayed or partially populated, a deterministic regex pipeline extracts ground truth directly from raw JD tokens:

  • ๐Ÿ“‹ Job Context Sub-Tab (Default): Extracts Role, Work Model (Remote / Hybrid / On-Site), Experience Band, and Disclosed Salary Status.

  • โš ๏ธ Third-Party / Staffing Detection: Flags staffing vendors, C2H (Contract-to-Hire), and payroll intermediaries with verbatim quotes directly extracted from the JD.

  • ๐Ÿข Company Identity Sub-Tab: Verifies whether the firm is a Direct Employer, Services Vendor, GCC (Global Capability Center), or Product Company. Missing fields strictly report "Not verified from available sources".

  • โšก Hiring Signals Sub-Tab: Isolates technology focuses, active initiatives, and recent hiring surges with cited references [1], [2].

  • ๐Ÿ”— Sources Coverage Sub-Tab: Displays full URL citations and scrape statuses.

3. Evidence-Grounded Generation, UX & Claim Validation Policy

  • Evidence-Grounded Synthesizer: System instructions enforce that every single achievement claim in the cover letter must map directly to a verified bullet in the candidate's resume.

  • Interactive In-Line Evidence Markers with Clean Submission Export: On-screen interactive badges ([Resume Anchor] & [Source Citation]) allow candidates to hover and verify exact source quotes with a live [Evidence Markers: ON/OFF] toggle. When candidates click Copy to Clipboard or Download Markdown/PDF, internal citation tags are automatically stripped to deliver 100% clean, submission-ready letters for recruiters.

  • Adversarial Overclaim Red-Teamer (Veracity Audit Gate): Scans generated text against candidate resume verbs to catch senior inflation (e.g., resume states "assisted team with Kubernetes rollout" vs draft stating "spearheaded enterprise migration"). The engine automatically softens unverified verbs to authentic baseline evidence and records an audit log.

  • Live Step Progress Tracker & Dynamic Elapsed Timer: An event-driven 4-phase execution tracker (01. Competency Match โ†’ 02. MCP Company Research โ†’ 03. Human Approval โ†’ 04. Evidence Synthesis) with a live counting timer (00:04s) and active tool indicator so candidates clearly follow live execution without confusion or perceived stalls.

  • Human-in-the-Loop (HITL) Gate: Users explicitly inspect, evaluate credibility scores, and toggle on/off scraped web sources before any external intelligence enters the LLM generation prompt.

4. Native Model Context Protocol (MCP) Integration (8 Production Tools)

TIP

๐Ÿ›ก๏ธ Triple-Registry Verified FastMCP Server (Glama ยท Smithery ยท M8ven):
CoverCraft's FastMCP server and its 8 registered tools have been independently audited and verified across leading registries with Glama Grade A - A, M8ven Trust Score 89/100 (Grade B), and Smithery Verified (8 Tools) with continuous live monitoring and 0 security vulnerabilities.

Glama MCP Score M8ven Score M8ven Verified Smithery Verified MCP

Glama MCP server

  • Contains a standalone Anthropic Model Context Protocol (MCP) server written in Python 3.11 (mcp-server/).

  • Exposes 8 Registered Tools via standard Model Context Protocol stdio transport and Streamable HTTP SSE transport:

    1. company_research: Real-time web search via Tavily with traceable source citations.

    2. evidence_validator: Claim Ledger validation against source data returning VERIFIED / PARTIAL / UNSUPPORTED.

    3. jd_analyzer: Evidence-backed JD matching against resume with actual proof anchors.

    4. ats_readiness: Deterministic heuristic audit on keyword coverage, format integrity, and length.

    5. source_filter: Algorithmic domain authority tiering, noise suppression, and Outdated News & Stale Tech Filter (<9m company initiatives, <18m engineering stack, [Historical Context] tag).

    6. cover_letter_generator: Evidence-grounded synthesis with structured in-line citation markers and zero-overclaim enforcement.

    7. github_proofer: Real-time candidate GitHub portfolio & commit history verification engine ($0 free tier PAT, 5,000 req/hr). Inspects public repositories, extracts commit SHAs and messages, and anchors resume technical claims directly into verifiable code evidence with zero overclaiming.

    8. huggingface_proofer: Autonomous GenAI model & weights verification engine ($0 free tier HF Token, 30,000 req/hr). Inspects candidate's public Hugging Face models, spaces, datasets, and aggregate download metrics (e.g. 700+ model downloads, qLoRA fine-tuning, GGUF quantization), cross-referencing AI claims against verifiable weights.

  • Dual-transport support: run locally with Claude Desktop/Cursor via stdio_server or deploy as an independent streaming microservice using --transport=sse.

5. Live GitHub Code Proof & Commit Auditor (MCP Tool #7)

  • Verifiable Public Code Evidence: Connects to candidate GitHub profile via official GitHub MCP tool (mcp-server/tools/github_proofer.py) and Next.js route /api/github-verify.

  • Commit-Level Hashing: Extracts real-time commit SHAs (e.g. sha: 7f2a1b9), commit messages, repository descriptions, and architecture files to ground technical claims in verifiable code history.

  • Zero-Cost Free Tier: Powered by a GitHub Personal Access Token (PAT) with read-only public scope, unlocking 5,000 req/hr at $0 cost with 100% reliable rate limit isolation.

  • Adversarial Overclaim Sentinel: If a candidate claims a framework without public repository or commit proof, CoverCraft flags the gap and prompts the applicant for clarification rather than hallucinating fictitious enterprise experience.

6. Autonomous Hugging Face Weights & Model Auditor (MCP Tool #8)

  • Verifiable Open-Source Weights & Models: Connects to candidate Hugging Face profile via official MCP tool (mcp-server/tools/huggingface_proofer.py) and Next.js route /api/hf-verify.

  • Real-World Download & Community Proof: Audits real community adoption metrics (e.g. 726+ model downloads, 39 community likes/stars), cross-referencing GenAI claims (fine-tuning, LoRA, QLoRA, GGUF quantization, Legal AI) against verifiable downloadable weights.

  • Interactive AI Demo Grounding (Gradio Spaces): Inspects candidate's live interactive Gradio spaces (e.g. ambuj-ai-chatbot, legal-india-chatbot), mathematically verifying live model deployment and edge inference capabilities.

  • Zero-Cost Free Tier API: Powered by Hugging Face user access tokens ($0 free tier) delivering 30,000 req/hr with 5-minute stale-while-revalidate caching and high-availability fallback.

  • Anti-Overclaim Sentinel: Distinguishes candidates who merely prompt commercial APIs from true AI engineers who fine-tune, quantize, and ship real weights with community traction.

7. Candidate Privacy-First Architecture & Dual Auto-Extraction Engine

  • PII Hardening & Phone Number Removal: Mobile phone numbers have been completely removed from the UI and backend schemas to preserve applicant privacy.

  • Dual Intelligent Auto-Extraction:

    • Resume Ingestion Auto-Fill (/api/parse-resume): Auto-extracts candidate Name, Email, LinkedIn URL, and GitHub Profile URL from uploaded PDF resumes via regex + LLM extraction, pre-filling the generator form.

    • Job Description Auto-Detection (InputForm.jsx): Automatically detects target Role and Company Name as soon as a user pastes a Job Description, eliminating redundant manual typing.

8. Production Observability: Langfuse LLM Tracing & MongoDB Atlas

  • Langfuse LLM Observability & Tracing: Full-trace telemetry capturing end-to-end generation latency, prompt/completion token consumption, Gemini model parameters, and span-level child traces across all 8 MCP tool operations.

  • Resilient Non-Blocking Execution: Observability spans execute in protected async try/catch blocks; if network limits occur, generation continues seamlessly with zero user latency impact.

  • MongoDB Atlas Telemetry: Logs anonymized generation latency, token volume, tone selections, and error distributions.

5. Production Observability & Multi-Stage Containerization

  • MongoDB Atlas Telemetry: Logs anonymized generation latency, token volume, tone selections, and error distributions.

  • Production Docker Architecture: Next.js 16 standalone build reduces Docker image size from 1.2 GB to ~120 MB, running under an unprivileged nextjs:nodejs user for zero root vulnerabilities.


๐Ÿ› ๏ธ Complete Tech Stack

Layer

Technologies / Services

Purpose

Frontend Framework

Next.js 16.1.6 (App Router) + React 19

Server Components, Streaming SSR, High-Performance Hydration

Styling & Motion

Vanilla Tailwind CSS v4 + HSL Design Tokens

Modern dark mode, frosted glass surfaces, tactile spring micro-interactions

Language Model

3-Tier Multi-Provider Cascade: Primary gemini-3.5-flash-lite, Tier 2 gemini-3.1-flash-lite-preview, Tier 3 nvidia/nemotron-3-ultra-550b-a55b:free (OpenRouter)

Circuit breaker, exponential backoff, zero-downtime resilience

Web Crawling

Tavily AI Search API (8-Page Crawl)

Real-time portal & news search with domain filtering

Page Extractor

Jina AI Reader (r.jina.ai)

Deep page markdown conversion with Bearer token authentication

Agent Protocols

Anthropic Model Context Protocol (MCP)

Python 3.11 stdio server for external LLM agent invocation (8 Tools)

Code Verification

GitHub REST API & MCP Proofer

Real-time public commit SHA and repository grounding ($0 Free Tier)

Model & Weights Verification

Hugging Face Hub API & MCP Proofer

Real-time open-source weights, GGUF/LoRA quants, community downloads ($0 Free Tier)

LLM Observability

Langfuse Node SDK

Full-trace latency, token consumption, and multi-agent child spans

Authentication

NextAuth.js v4 (Google OAuth 2.0 Provider)

Secure session management & OAuth callback flow

Database & Telemetry

MongoDB Atlas (Mongoose Driver)

Persistent telemetry schema, audit trails, usage tracking

Deployment

Vercel Serverless Edge + Docker Standalone

0-second cold starts, global CDN caching, container portability


๐Ÿ“ End-to-End System Sequence

sequenceDiagram
    autonumber
    actor Candidate as User / Recruiter
    participant Web as Next.js 16 Frontend
    participant API as Route Handlers (/api/*)
    participant Tavily as Tavily Search Engine
    participant Jina as Jina AI Reader
    participant GitHub as GitHub MCP Proofer
    participant Langfuse as Langfuse Observability
    participant LLM as Google Gemini 2.5 Flash Lite
    participant DB as MongoDB Atlas

    Candidate->>Web: Upload Resume (PDF) & Paste Job Description
    Web->>API: POST /api/parse-resume & /api/analyze
    API->>API: Auto-Extract Candidate Name, Email, LinkedIn & GitHub Handle
    API->>API: Auto-Detect Target Role & Company from JD
    API->>GitHub: GET /api/github-verify (MCP Tool #7 Commit Auditor)
    GitHub-->>API: Verified Public Repositories, Commit SHAs & Timestamps
    API->>LLM: Schema-Enforced Extraction (Skills & Match Matrix)
    LLM-->>API: Structured Match Matrix & Vendor Indicators
    API->>Langfuse: Log Trace & Child Spans (Latency, Tokens, Model)
    API-->>Web: Render Evidence Match, GitHub Code Proof, Hugging Face Proof & 4-Tier Job Context Tabs

    Candidate->>Web: Trigger Real-Time Research
    Web->>API: POST /api/research { company, role }
    API->>Tavily: Crawl 8 Authoritative URLs (Careers, News, Reviews)
    Tavily-->>API: Raw Search Results
    API->>Jina: Deep Scrape Top URLs to Clean Markdown
    Jina-->>API: High-Fidelity Content
    API-->>Web: Display HITL Source Cards (User Approves Sources)

    Candidate->>Web: Select Tone & Click "Generate Cover Letter"
    Web->>API: POST /api/generate { approvedSources, evidenceMap }
    API->>LLM: Evidence-Grounded Generation Prompt (Claim Validation)
    LLM-->>API: Streamed Verified Cover Letter + Citations
    API->>DB: Log Telemetry & Audit Record
    API-->>Web: Render Final Letter with Copy, Download & Interview Defense

๐Ÿ“‚ Project Directory Structure

career-workspace-ambujsystems/
โ”œโ”€โ”€ web/                             # Next.js 16 Fullstack Application
โ”‚   โ”œโ”€โ”€ public/                      # Static assets & SVG icons
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ analyze/         # Resume parsing & JD matching handler
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/            # NextAuth Google OAuth endpoints
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ generate/        # Evidence-grounded generation pipeline
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ research/        # Tavily 8-page crawl + Jina Reader pipeline
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ docs/                # Interactive Architectural Documentation
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ generate/            # Main interactive workspace interface
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ globals.css          # Design system tokens, tactile spring curves & glow utilities
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ layout.js            # Root layout with NextAuth Provider
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ page.js              # High-conversion Obsidian Black landing page
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ResultsPanel.jsx     # 4-tier tabbed intel & vendor verification UI
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SourceCard.jsx       # Human-in-the-loop approved source cards
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...                  # Reusable UI component modules
โ”‚   โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ gemini.js            # Resilient Google Gemini client with retry
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ mongodb.js           # Production connection-cached MongoDB client
โ”‚   โ”‚   โ””โ”€โ”€ prompts/                 # Strict system prompts & JSON schemas
โ”‚   โ”œโ”€โ”€ Dockerfile                   # Multi-stage standalone Next.js container (~120MB)
โ”‚   โ”œโ”€โ”€ next.config.mjs              # Standalone output configuration
โ”‚   โ””โ”€โ”€ package.json                 # Dependencies & build scripts
โ”œโ”€โ”€ mcp-server/                      # Anthropic Model Context Protocol (MCP)
โ”‚   โ”œโ”€โ”€ server.py                    # Stdio protocol handler with analysis tools
โ”‚   โ”œโ”€โ”€ Dockerfile                   # Python 3.11-slim container definition
โ”‚   โ””โ”€โ”€ requirements.txt             # MCP protocol SDK & utilities
โ”œโ”€โ”€ docker-compose.yml               # Multi-service local orchestrator
โ””โ”€โ”€ README.md                        # Production Engineering Specification

๐Ÿš€ Getting Started Locally

Prerequisites

  • Node.js: v20.x or v22.x

  • Docker & Docker Compose (Optional, for containerized run)

  • API Keys: Google Gemini API, Tavily Search API, Jina AI API, MongoDB Atlas URI

1. Clone the Repository

git clone https://github.com/Ambuj123-lab/career-workspace-ambujsystems.git
cd career-workspace-ambujsystems/web

2. Configure Environment Variables

Create .env.local inside the web/ folder (or copy .env.example from repository root):

# --- Core AI & Grounding Search (Required) ---
GEMINI_API_KEY=your_gemini_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here

# --- Authentication & Security (NextAuth.js) ---
GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_random_32_character_secret_here

# --- Candidate Proofing & Verification (Optional) ---
GITHUB_TOKEN=your_github_token_here
HF_TOKEN=your_huggingface_token_here
JINA_API_KEY=your_jina_api_key_here

# --- LLM Provider Fallback & Telemetry (Optional) ---
OPENROUTER_API_KEY=your_openrouter_api_key_here
MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/?appName=CoverCraft
MONGODB_DB_NAME=covercraft_db

Credential Audit & Transparency (M8ven Verified)

Credential / Variable

Scope

Requirement

Purpose & Audit Description

GEMINI_API_KEY

Server / LLM

Required

Primary synthesis engine (Google AI Studio Gemini 2.5 / Flash)

TAVILY_API_KEY

Server / Web Search

Required

Live web grounding & target company intelligence crawler

GOOGLE_CLIENT_SECRET

NextAuth OAuth

Required for Auth

Google OAuth 2.0 client secret for candidate sign-in

GOOGLE_CLIENT_ID

NextAuth OAuth

Required for Auth

Google OAuth 2.0 client ID

NEXTAUTH_SECRET

Web Security

Required for Auth

Cryptographic signing secret for JWT session cookies

GITHUB_TOKEN

MCP / API

Optional

Higher rate limits for candidate public GitHub repository audits

HF_TOKEN

MCP / API

Optional

Candidate Hugging Face ML models, spaces, and dataset proofing

JINA_API_KEY

Web Crawler

Optional

Markdown parser fallback for target company landing pages

OPENROUTER_API_KEY

LLM Fallback

Optional

Multi-model provider fallback if primary Gemini API quota is throttled

MONGODB_URI

Telemetry / DB

Optional

Telemetry, generation audit logs, and user feedback persistence

3. Install Dependencies & Launch

npm install
npm run dev

Open http://localhost:3000 in your browser.


๐Ÿณ Docker Production Deployment

Build and run the multi-stage standalone container locally:

# Build multi-stage image (~120MB footprint)
docker build -t covercraft-web:latest ./web

# Run standalone container
docker run -p 3000:3000 --env-file ./web/.env.local covercraft-web:latest

Or deploy both the Next.js app and the Python MCP server via Docker Compose:

docker compose up -d --build

Asset

Link

Status

๐Ÿš€ Production App

career-workspace-ambujsystems.vercel.app

Live

๐Ÿ“– Interactive Architecture Docs

career-workspace-ambujsystems.vercel.app/docs

Ready

๐Ÿ’ป GitHub Repository

Ambuj123-lab/career-workspace-ambujsystems

GitHub

๐Ÿ‘ค Engineering Portfolio

ambuj-ai-portfolio.vercel.app

Portfolio

๐Ÿ“ฐ Official UptimeRobot Feature

Community Spotlight Article

Featured


๐Ÿ‘จโ€๐Ÿ’ป Architect & Author

Ambuj Kumar Tripathi

Generative AI Engineer & Production Systems Specialist
Building production-grade agentic architectures, deterministic extraction pipelines, and high-reliability LLM systems.

LinkedIn GitHub Portfolio Email

Other Flagship Engineering Projects by Ambuj:


๐Ÿ“œ License

This project is open-source and licensed under the MIT License.

Architected with โค๏ธ by Ambuj Kumar Tripathi โ€ข Powered by Google Gemini 3.5 & 3-Tier Multi-Provider Cascade (OpenRouter Nemotron 550B) โ€ข Langfuse Telemetry โ€ข Tavily AI โ€ข Jina AI โ€ข Next.js 16

Available Tools

8 tools
ats_readinessA
Read-onlyIdempotent
Inspect

Honest ATS readiness check (NOT a fake score). Returns individual checks: keyword coverage, skills, evidence, length. Includes disclaimer: heuristic analysis, not actual ATS vendor score.

ParametersJSON Schema
NameRequiredDescriptionDefault
jd_textYesJob description text
letter_textYesGenerated cover letter text

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely useful context beyond them: it discloses the four returned checks and, importantly, that the analysis is heuristic rather than a real ATS vendor score. This manages expectations in a way no annotation does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the core promise and the honesty caveat. Every clause carries information, though the disclaimer framing is slightly redundant with the 'heuristic analysis' clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only analysis tool with no output schema, the description usefully enumerates what comes back and its limits, which is what an agent most needs. It stops short of explaining how the checks are computed or whether a pass/fail verdict is issued.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (jd_text, letter_text) are already documented in the schema. The description adds no format, length, or content guidance beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('readiness check') and resource ('ATS'), and enumerates the four checks it returns (keyword coverage, skills, evidence, length). The parenthetical 'NOT a fake score' differentiates it from generic ATS scorers, though it does not name or contrast with its actual sibling tools such as evidence_validator or jd_analyzer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this tool versus the siblings (e.g. evidence_validator, jd_analyzer) or of prerequisites such as needing a generated letter first. Usage is only weakly implied by the required letter_text/jd_text inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_researchA
Read-onlyIdempotent
Inspect

Search the web for company information using Tavily. Returns grounded data with source citations. Every claim is traceable to a source URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
focus_areasNoOptional focus: tech_stack, culture, recent_news
company_nameYesTarget company name (max 200 chars)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuine behavioral context about the output: grounded data with source citations and traceability to a source URL, which tells the agent what kind of result to expect from an open-world search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero waste, with the primary action front-loaded and the return-value guarantee following directly. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries return-value disclosure and does so briefly (grounded, cited, traceable). Combined with full schema coverage and complete annotations, an agent has enough to invoke it correctly; only pagination/rate-limit behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are fully documented in the schema (company_name with char limit, focus_areas with example values). The description adds no parameter-level detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Search the web") and resource ("company information"), and even names the underlying engine (Tavily). It is clear what the tool does, though it does not explicitly differentiate itself from the research-adjacent siblings like source_filter or evidence_validator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the action (research a company when you need company info). There is no explicit when-to-use, when-not-to-use, or mention of an alternative sibling, and no prerequisites or sequencing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cover_letter_generatorA
Read-onlyIdempotent
Inspect

Generate an evidence-grounded cover letter strictly bounded by candidate's verified skills and approved company research. Returns structured paragraphs with in-line citation markers.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
toneNoTone: professional, technical, or conversational
companyYes
candidate_nameYes
matched_skillsYesList of matched skills with evidence quotes
approved_company_factsNoOptional list of verified company facts

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context the annotations do not: output shape ('structured paragraphs with in-line citation markers') and a hard grounding constraint against unverified content, which is the key risk an agent should know about for a generation tool. Required permissions for company facts remain unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the grounding constraint front-loaded and the return format second. Each sentence earns its place, especially the return-format line since there is no output schema. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generation tool with no output schema and only 50% parameter documentation, the description covers output format and grounding well but omits the tone parameter's effect, the ordering dependency on evidence_validator/company_research, and expected behavior when matched_skills is thin. Adequate but with visible gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, so the description must carry more weight. It constrains two parameters conceptually โ€” matched_skills ('verified skills') and approved_company_facts ('approved company research') โ€” but does not explain the tone parameter's effect, the shape of matched_skills objects, or which of the 6 parameters are required versus optional. Baseline 3 given partial schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Generate) and resource (cover letter), plus a scope qualifier ('evidence-grounded', 'strictly bounded by verified skills and approved company research') that separates it from siblings like evidence_validator and company_research. However, it never names those siblings explicitly, so differentiation is inferred from the constraint rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'strictly bounded by candidate's verified skills and approved company research' implies the prerequisites (validation and research must happen first), which is useful implicit routing. But there is no explicit when-to-use/when-not statement and no named alternative tool, so the agent must infer the workflow ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evidence_validatorA
Read-onlyIdempotent
Inspect

Validate AI-generated claims against actual source data. Implements Claim Ledger pattern. Returns VERIFIED / PARTIAL / UNSUPPORTED per claim.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimsYesList of claims to validate
sourcesYesSource data to validate against

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds useful output semantics (per-claim VERIFIED / PARTIAL / UNSUPPORTED verdicts) but says nothing about what on its own makes a claim PARTIAL vs UNSUPPORTED, or about any matching/threshold behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with no filler; the core action, the pattern, and the return taxonomy each earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly supplies the return values, and the two required inputs are conceptually clear from the name and schema. Slightly incomplete on how sources are consumed (url vs content) and any size limits, but adequate for a two-parameter read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description's phrase 'against actual source data' loosely reinforces the sources parameter but adds no format or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Validate AI-generated claims against actual source data') and even states the domain pattern (Claim Ledger). It does not explicitly differentiate itself from siblings, but the sibling set (filter, proofer, generator tools) is far enough away that no real ambiguity exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is for checking claims against sources, but there is no statement of when to prefer it over alternatives, no preconditions, and no exclusions (e.g. claim count limits or source format requirements).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_prooferA
Read-onlyIdempotent
Inspect

Inspect a candidate's public GitHub profile and repositories. Cross-references technical resume claims with verifiable production code commits.

ParametersJSON Schema
NameRequiredDescriptionDefault
technical_claimsNoOptional list of technical skills or claims to verify against code repos
candidate_github_or_resumeYesGitHub profile URL, username handle, or resume text containing GitHub link

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that only public GitHub data is inspected and that the operation is a claims-vs-commits cross-reference, but it omits practical traits like GitHub API rate limits, auth/token needs, or behavior when a handle has no public activity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The core action (inspect public GitHub profile/repos) is front-loaded and the differentiating behavior (cross-reference resume claims with commits) follows immediately, so every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should carry more of the return-value burden; it only implies that evidence-backed verification results come back, without indicating what an agent receives (per-claim verdicts, matched commits, confidence). What it does convey about inputs and read-only public scope is otherwise adequate for a two-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already documents the required identifier and the optional technical_claims list. The phrase 'technical resume claims' loosely echoes the technical_claims parameter but adds no format, cardinality, or matching semantics beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States two specific actions on a specific resource: inspecting a candidate's public GitHub profile/repos and cross-referencing resume claims against production code commits. The 'GitHub' scope naturally distinguishes it from the sibling huggingface_proofer, and the verification framing separates it from jd_analyzer, ats_readiness, and evidence_validator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the cross-referencing framing (use it when you need to verify a candidate's technical claims), but there is no explicit when-to-use statement, no exclusions, and no direction toward huggingface_proofer or evidence_validator as alternatives for adjacent verification tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

huggingface_prooferB
Read-onlyIdempotent
Inspect

Inspect a candidate's public Hugging Face profile, models, spaces, and datasets. Cross-references GenAI resume claims (fine-tuning, LoRA, GGUF, Quantization, Legal AI) with verifiable Hugging Face model weights, spaces, and real-world downloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
ai_technical_claimsNoOptional list of GenAI claims or models to verify against Hugging Face
candidate_hf_or_resumeYesHugging Face profile URL, handle (e.g. 'invincibleambuj'), or resume text containing Hugging Face link

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile of this external read operation is fully covered structurally. The description adds that it inspects only *public* data and that it performs cross-referencing, but says nothing about authentication requirements, HF rate limits, or behavior when a profile/handle cannot be resolved โ€” a real gap for an open-world external lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with the core action front-loaded ('Inspect a candidate's public Hugging Face profile') followed by the verification purpose. No filler or repetition, though the parenthetical claim list is slightly list-heavy for a two-sentence description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining what comes back; it gestures at this ('verifiable Hugging Face model weights, spaces, and real-world downloads') but never describes the response shape, scoring, or handling of unverifiable claims. Adequate for a simple two-param tool, but thin for a verification tool with no structured output contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented (handle/URL/resume text, and the optional claims list). The description indirectly explains what ai_technical_claims is for by enumerating claim categories (LoRA, GGUF, Quantization), but adds no format or syntax detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs (Inspect, Cross-references) and resources (Hugging Face profile, models, spaces, datasets), and enumerates the claim types it validates (fine-tuning, LoRA, GGUF, Quantization, Legal AI). It names the domain explicitly, but never distinguishes itself from the near-identical sibling github_proofer, leaving the agent to infer which proofer applies to which artifact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Cross-references GenAI resume claims ... with verifiable Hugging Face model weights' โ€” i.e., use this to verify a candidate's HF presence against resume claims. However, no explicit when-to-use, when-not-to-use, or alternative (e.g., github_proofer for repos, evidence_validator for general claims) is given, so routing between siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jd_analyzerA
Read-onlyIdempotent
Inspect

Evidence-backed JD matching. Extracts skills from JD, matches each against resume with ACTUAL evidence. Returns STRONG_MATCH / PARTIAL_MATCH / TRANSFERABLE / MISSING per skill.

ParametersJSON Schema
NameRequiredDescriptionDefault
jd_textYesFull job description text (max 10000 chars)
resume_textYesUser's resume/experience text (max 15000 chars)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real value by disclosing the result taxonomy (STRONG_MATCH / PARTIAL_MATCH / TRANSFERABLE / MISSING) and the evidence-backed matching behavior, though it says nothing about determinism, cost, or handling of empty/extreme input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler, and the core purpose is front-loaded in the opening clause. The first sentence is slightly redundant with the second, which keeps it just short of ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description is responsible for conveying return values, and it does so via the four match categories. Missing only secondary detail such as how evidence is surfaced per skill or what the agent should do with MISSING results, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters documented including their character limits, so the schema does the heavy lifting. The description adds only an indirect mapping ('from JD' / 'against resume') and no format or syntax guidance beyond that, which is the baseline 3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource: extracts skills from a JD and matches each against a resume, and it even names its output taxonomy. It's clear what the tool does, though it never explicitly separates itself from closely related siblings like evidence_validator or ats_readiness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied โ€” the two required inputs (jd_text, resume_text) make the scenario obvious, but there's no statement of when to reach for this tool versus cover_letter_generator or ats_readiness, nor any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

source_filterA
Read-onlyIdempotent
Inspect

Evaluate, rank, and filter web research sources based on domain credibility and outdated news & stale tech filtering. Tier 1: Official company domains & verified newsrooms, Tier 2: Job boards & tech media, Tier 3: Noise/scrapers.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcesYesList of source objects with url, title, and optional snippet
company_domainNoOptional primary domain of target company

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful context about the tiering logic and filtering criteria, which goes beyond structured data. However, it doesn't disclose how the ranking works (scoring algorithm, ordering of output) or any limitations (e.g., what happens with unknown domains).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and then provides a compact tier breakdown. It is efficient and wastes no words, though the tier definitions could be slightly clearer (e.g., what exactly qualifies as 'noise/scrapers').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should ideally explain return values (e.g., filtered list, ranked order, tier labels). It also doesn't clarify how 'outdated news & stale tech filtering' works or what happens to sources that don't fit a tier. For a filtering/ranking tool with no output schema, this is a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are fully documented in the input schema. The description does not add any parameter-level details (e.g., expected structure of source objects, how company_domain influences filtering). Baseline 3 is appropriate when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb triple (evaluate, rank, filter) and names the resource (web research sources). It also names the specific criteria (domain credibility, outdated news, stale tech), which distinguishes it clearly from siblings like evidence_validator or company_research that deal with research but not source ranking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (filtering research sources), but it does not explicitly say when to call this tool vs. alternatives like evidence_validator or company_research. The tier system gives implicit guidance on what it does, but not on when an agent should invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedats_readiness
    • First observedcompany_research
    • First observedcover_letter_generator
    • First observedevidence_validator
    • First observedgithub_proofer
    • First observedhuggingface_proofer
    • First observedjd_analyzer
    • First observedsource_filter

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes across the job-application pipeline (research, proofing, validation, generation). The two proofers (github_proofer vs huggingface_proofer) and the grounding-related tools (source_filter, company_research, evidence_validator) are conceptually adjacent but each targets a distinct stage, so confusion is limited.

Naming Consistency4/5

All names use consistent snake_case and a predictable descriptor-noun convention (source_filter, evidence_validator, jd_analyzer, ats_readiness). Minor stylistic variation between agent-noun (proofer) and object-noun (generator) patterns, but readable and uniform overall.

Tool Count5/5

Eight tools is well-scoped for a career workspace, with each tool mapping to a discrete step in a resume/JD/application workflow. Nothing appears redundant or bloated.

Completeness4/5

The surface covers research, JD matching, ATS checks, evidence validation, and cover letter generation with strong grounding. Minor gaps exist: no resume parsing/tailoring or interview-prep tool, but the core application lifecycle is largely covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to discover, filter, and track job openings based on the user's local resume, without uploading data to the cloud.
    24
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables an AI agent to work inside a resume workspace where it can search job postings and propose edits grounded in user-recorded facts, while the interface constrains its tools and requires human approval before any change or application is prepared.
    15 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to search and analyze job listings from verified company boards privately, matching resumes to roles with evidence and suggesting resume improvements.
    560 npm
    MIT