Skip to content

[New Skill]: office/application_auditor — job listing vs CV fit audit with market and community context #76

@rosspeili

Description

@rosspeili

Skill Name

office/application_auditor

What should this skill do?

Add a skill that helps agents produce a structured hiring fit audit: how a CV matches public job listing(s), what is missing, optional market comparison, optional community tips, and actionable amendments (CV + cover letter points).

Proposed identity

Field Value
Category office (preferred) or auditing — confirm with maintainers before opening PR
Skill ID office/application_auditor (or auditing/application_auditor if category approved)
Class ApplicationAuditorSkill

User inputs (conceptual)

  • Public URL(s) of job listings (HTML the user can access).
  • CV as public URL, local file path, or pasted text (PDF/DOCX in v1 if feasible).
  • Optional: run market research, run Reddit insights, region/seniority hints.

Skill outputs (conceptual)

  • Job profile — role, seniority, must-have/nice-to-have, stack, location, compensation hints, evidence quotes.
  • CV profile — experience, skills, achievements, evidence quotes.
  • Fit analysis — fit band/score, matches, gaps, what the CV lacks to strengthen the application.
  • Market context (v2, optional) — similar roles, salary/difficulty signals via a search API (no login-wall scraping).
  • Community tips (v2, optional) — themes from Reddit API threads (sourced IDs; tips only).
  • Recommendations — prioritized CV amendments and cover letter bullet points (structured JSON; host agent writes final prose).

Recommended architecture (Skillware)

Use a staged pipeline in one skill with a mode parameter, plus instructions.md playbook for the host agent:

Mode (v1) Role
parse_job Fetch URL → structured job_profile
parse_cv File/path/text → structured cv_profile
analyze_fit Compare profiles → gaps, fit, amendments, cover letter points
Mode (v2) Role
market_signals Web search API → comparable roles / comp context
community_insights Reddit API → hiring tips themes
full_audit Run full pipeline → single audit_report object
  • Python: ingest only — httpx, HTML extraction (trafilatura / beautifulsoup4), CV PDF via pymupdf, optional python-docx; SSRF limits, size caps, no credential scraping.
  • LLM inside skill: fixed prompts, JSON-schema outputs for extract/compare only (like synthetic_generator / MiCA evaluator pattern); model_provider + env keys.
  • Host agent (any model): formats the user-facing report and polishes cover letter from skill JSON — skill does not own final presentation.

Do not build LangGraph/CrewAI designs; keep a portable Skillware bundle per CONTRIBUTING and templates/python_skill/.

Safety

  • CV = PII: no persistent storage, no logging bodies, temp files only. (You can use Skillware for that)
  • Public URLs user provides; respect ToS; no LinkedIn/login scraping in v1. (You can use Skillware for that)
  • Reddit: official API only (praw + OAuth), rate limited.
  • Disclaimer: not career, legal, or hiring advice; no outcome guarantees.

Phasing

  • v1: parse_job, parse_cv, analyze_fit.
  • v2: market + Reddit + optional full_audit.

Environment

Variable When
GOOGLE_API_KEY / ANTHROPIC_API_KEY LLM extract/compare
TAVILY_API_KEY or BRAVE_SEARCH_API_KEY v2 market (implement one)
REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET v2 Reddit

Could be using Google Search Engine API or simple requests/beautifulsoup with extra layers?

Fetch/extract-only paths must run in tests without API keys (mocked HTTP/LLM).

Done when

  • Bundle under skills/office/application_auditor/ (or skills/auditing/... if category approved).
  • docs/skills/application_auditor.md + Usage Examples (five providers).
  • Row in docs/skills/README.md.
  • test_skill.py, issuer validation, SkillLoader.load_skill(...) works.

Ideal Inputs & Outputs

Inputs (execute)

Parameter Type Required Purpose
mode string Yes parse_job | parse_cv | analyze_fit (v2: market_signals, community_insights, full_audit)
job_url string For parse_job Public job listing URL
cv_source string For parse_cv url or file_path
cv_text string Optional Pasted CV text instead of file/URL
job_profile object For analyze_fit From parse_job
cv_profile object For analyze_fit From parse_cv
model_provider string Optional gemini | anthropic | ollama for internal LLM steps
run_market_research boolean Optional v2
run_reddit_insights boolean Optional v2
region string Optional e.g. EU, US for market queries

Outputs (by mode)

parse_jobjob_profile

  • title, company, seniority, must_have[], nice_to_have[], responsibilities[], location, compensation_signals[], source_url, evidence_spans[] (field, quote).

parse_cvcv_profile

  • skills[], roles[] (title, dates, highlights), education[], evidence_spans[].

analyze_fit

  • fit_band (strong | moderate | weak), fit_score (0–1),
  • matched_requirements[], gaps[] (requirement, severity, suggestion),
  • cv_amendments[] (section, action, content_hint),
  • cover_letter_points[],
  • evidence[] (claim, job_quote, cv_quote).

v2: market_summary, reddit_tips (with thread_ids), merged audit_report for the host agent to render.

Targeted Models (if applicable)

Model Agnostic (All)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestskill requestRequest for a new capability to be added.
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions