Untapped Resume

io.github.CTF-Max由 GitHub 帳號 CTF-Max 發布v0.3.1更新於 Oct 24, 2026

Tailor a resume and portfolio to one job, with evidence

概覽

AI 產生的概覽

一個本機 MCP 伺服器,只依據你提供的檔案證據,為某個職缺量身打造履歷、作品集與 LinkedIn 素材。

可以做什麼
掃描證據資料夾(Markdown、文字、README、DOCX、盡力解析的 PDF、git 中繼資料、含 CSV 的 LinkedIn 匯出 ZIP),產生附來源引用的摘錄、明確日期與閱讀備註。從貼上的文字或網址讀取職缺,擷取必備條件、加分項與雇主條款。將履歷輸出為 DOCX、PDF 或 TXT 並產生私有來源對照,將作品集輸出為自包含的 HTML 頁面,專案依評分排序。對 PDF 履歷做 ATS 式檢查,對照職缺與來源標出涵蓋情況、出處與版面問題。隨附技能引導助理在本機撰寫 LinkedIn 素材、求職信、匹配表與 1–4 週落差計畫。
適用情境
適用於針對某個特定職缺投遞,希望履歷與作品集只根據既有證據,並把缺少的資格明確列為落差而非編造。適合已保存專案筆記、README 或 LinkedIn 匯出資料,並願意自行審閱與上傳輸出的人。
執行需求
以 Python 3.10 以上版本在本機透過 stdio 執行,僅使用標準函式庫,Python 需在宿主 PATH 中。可從 Codex 或 Claude Code 的 Untapped Plugins 市集安裝,或在本機 MCP 設定中指向 server/resume_server.py。不需帳號、金鑰、配額或付費,也不需要環境變數或憑證。只有抓取職缺時會使用網路。
安裝前請注意
輸出檔案使用固定檔名並會覆蓋所選目錄中的同名檔案,建議每個職缺使用獨立的輸出資料夾。作品集 HTML 與來源對照含本機路徑與證據,來源對照應保持私密,只上傳審閱過的 index.html。引用不等於證明,仍需自行核對歸屬、日期、指標與所有權。PDF 輸出僅支援 Windows-1252 文字,PDF 讀取為盡力而為且不支援 OCR。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Untapped Resume,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Untapped Resume

Build a resume, portfolio and LinkedIn kit for one job using evidence you already have. Tailored, never invented: missing qualifications stay no evidence yet and go into a practical gap plan.

Free, local, Python 3.10 or newer, standard library only. No account, licence key, monthly quota or payment. The plugin cannot post to LinkedIn; paste + upload takes about 2 minutes. It does not guarantee interviews.

No promotion in your documents

Everything it writes for you (resume, portfolio page, LinkedIn kit, cover letter, gap plan) contains only your own evidence and the job's wording. It adds no ads, no affiliate links, no links to us and no "made by" or credit line, for Find Untapped Growth or anyone else. Find Untapped Growth is named only in this README and the plugin listing, as the maker.

Install and use

Install untapped-resume from the Untapped Plugins marketplace in Codex or Claude Code. Both host manifests and the shared tailor-resume skill are included. Python must be on the host's PATH. The MCPB contains the five tools; plugin installation also includes the guided skill.

For a standalone local MCP configuration, run python with the absolute path to server/resume_server.py as its argument. No environment variables or credentials are required. The server speaks JSON-RPC on stdio; do not launch it as a web server. You can try: “Tailor my resume to this job using this project folder.”

Give the agent one job posting, a folder of selected evidence, and an output folder for this job. Supported evidence includes Markdown, text, README files, DOCX, best-effort PDF text, git metadata and LinkedIn export ZIPs containing Positions, Education, Skills, Certifications or Projects CSV files. No repository code is executed. Commit metadata does not prove the applicant's contribution or proficiency.

ToolResult
scan_evidence(folder, max_files=500)Source-linked excerpts, explicit dates and reader notes
read_job(text=...) or read_job(url=...)Stated title/company, must-haves, nice-to-haves and employer terms
render_resume(resume_json, out_dir, formats=["docx","pdf","txt"])Resume files and private sources.json
render_portfolio(portfolio_json, out_dir)Self-contained index.html and private source map
ats_check(pdf_path, job_json, sources_path)Extracted text, coverage and provenance/layout flags

Only read_job can access the network, to fetch the HTTPS posting you supply (20-second request timeout). The other tools operate on local files. The skill guides the agent to write the LinkedIn kit, cover letter, match table and a 1–4 week gap plan locally. See the workflow and JSON contracts. Directory workflows set directory_build=true, which disables the optional internship suggestion.

Source-backed output

Every factual input line has this shape:

json
{  "text": "Built a Python inventory tool.",  "source": {    "source_path": "/absolute/path/project/README.md",    "quote": "Built a Python inventory tool."  }}

resume_json contains a sourced name, optional sourced contact array and a sections object. Section keys are Summary, Experience, Projects, Education, Skills and Certifications; each holds an array of sourced lines. Experience and Projects default to bullets; set bullet:false for a role/date label. The renderer refuses missing sources on any factual line, not just bullets. The source map records wrapped lines and output hashes. The checker reads sources again and flags missing quotes and unsupported words. A citation is not proof: the agent must still check attribution, meaning, dates, metrics and ownership.

portfolio_json has sourced name, optional sourced intro, and projects. Each project has a sourced title, sourced bullets, a numeric fit_score from 0–100, and optional sourced fit_reason. The three highest scores lead, with fewer if there are fewer evidenced projects. The score is supplied by the agent for ordering. The HTML has no scripts, linked resources or branding footer. Upload only the reviewed index.html to GitHub Pages or Cloudflare Pages; keep source maps and local paths private.

Limits that stay visible

  • Resume files use a single column, standard Courier fonts and real text. More than one page triggers a warning; content is not silently removed. DOCX pagination can vary with the viewer's font metrics.
  • Built-in PDF output supports Windows-1252 text, including common Western accents. For other scripts it refuses PDF output without replacing characters; use DOCX/TXT and export from Word or LibreOffice.
  • General PDF reading is best effort: no OCR, encrypted text or custom font-map support. Hidden text, images and tagged tables are flagged when detected; arbitrary graphics and untagged tables require review.
  • Coverage uses literal terms found in both the resume and quoted local evidence, not a hiring prediction. Paraphrases may need manual review. Missing input, unknown ownership or an unreadable source is not proof.
  • Input reads are bounded. Large documents/archives and unsupported files may be skipped with notes. Keep job evidence in a small dedicated folder. The scanner never substitutes file times for stated dates.
  • Output files have fixed names and are replaced in the chosen directory. Use a separate directory per job.

Development checks

From the repository root:

text
python -m unittest discover -s plugins/untapped-resume/testspython plugins/tools/sync_shared.py --checkpython plugins/tools/manifests.py --checkclaude plugin validate --strict plugins/untapped-resumepython plugins/tools/build_mcpb.py untapped-resume

Tests use local fixtures and an injected job-page transport; they make no network requests. The vendored MCP transport comes from plugins/shared/mcp_stdio.py via plugins/tools/sync_shared.py.

By Find Untapped Growth · Homepage · MIT licence · Privacy

來源:untapped-resume/README.md,提交 9f1aabb

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

2
  1. v0.3.1最新Oct 24, 2026
  2. v0.3.0Oct 22, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分