從職缺連結建立與評分履歷
一個職缺連結就是完整的指令。 直接執行整個 pipeline,無需提問。停在「已建立 + 已評分 + 已記錄」——應徵是使用者自己的動作。
步驟
- 去重。 執行
python -m resume_pipeline.tracker report data/applications,檢查該公司/團隊是否已在記錄中。先告知使用者,但仍繼續進行。 - 擷取 JD — 停在第一個能回傳完整內文的方法:
- ATS 的公開 JSON 端點(Greenhouse / Ashby / Lever 徵才頁面通常會暴露此端點),
- 結構化網頁抓取(「列出每個職責與要求,一行一項」),
- 瀏覽器,針對 JS 渲染的徵才網站。 若全部失敗,要求使用者貼上 JD 文字。絕不虛構 JD 內容。
- 撰寫記錄
data/applications/<slug>.md,以examples/applications/_TEMPLATE.md為範本。 新記錄只包含一個found事件(不是applied;由使用者應徵)。一個檔案對應一個職缺。 - 撰寫目標
data/targets/<slug>.yaml:- 從
data/modules.yaml中選擇模組 ID,依照此 JD 排序;目標中不含履歷文字 - 設定
output:(缺少output:會默默建出resume.docx) - JD 的關鍵字若沒有實際子彈對應,就是一個缺口:寫在檔頭註解中,絕不作為技能行的關鍵字。每個缺口標註為 inherent(無相關經驗 → 面試時用故事補)或 fixable(有實際經驗,但措辭不當)。
- 填滿一頁;若溢出到第二頁,先減少
project_bullets。不要編輯config/layout.yaml——它對所有履歷共用。
- 從
- 建立+驗證成一頁
python -m resume_pipeline.build_resume data/targets/<slug>.yaml --modules data/modules.yaml --out /tmp/resume_<slug>.docx soffice --headless --convert-to pdf --outdir /tmp /tmp/resume_<slug>.docx # 然後計算頁數 - 評分,使用
scoring-resumes技能。直到評分表寫入記錄前,履歷都不算完成。 - 驗證記錄:
python -m resume_pipeline.tracker validate data/applications。 - 回報:結論 + 三關評分 -> 哪些 JD 要求被涵蓋 -> 缺口(inherent/fixable) -> 定位 -> 非履歷閘門(地點、簽證、每週進辦公室天數、安全查核——這些由申請表另外詢問,不屬履歷編輯範圍) -> 一行建議。
規則
- 絕不捏造經歷、日期或 JD。僅增加使用者確認過的實際經歷子彈。
- 低分是資訊,不是否決:是否應徵由使用者決定。
- 當頁面已滿時,「為補救標記的缺口新增一個子彈」必須進行 A/B 評分——補救後的子彈常使分數更差。
- 若一次收到多個連結:先擷取所有 JD,然後逐一執行步驟 3-8;若一份履歷可涵蓋兩個幾乎相同的職位,則不必建立重複履歷。