jd-sweep-valig

star 0

正式共用 JD sweep 入口。用 run-valig-title-sweep.mjs 以 preset 抓取 LinkedIn 職缺產生 receipt,依 lane 走 lane-shortlist-ranking-framework 判斷,只把討論後確認要投的 winners 用 import-slate 寫進 DB(不 bulk 倒未判斷 raw)。當用戶說「跑一輪 valig」「掃 SDR/BDR」「掃 GTM/RevOps/Marketing Ops/CS/Implementation」「廣挖全美 JD」「抓新中文職缺」「中文加分」「掃一輪 LinkedIn」「掃 supply chain intern」「用 AI-wave 方向抓供應鏈」「高層行政助理」「Executive Assistant」「Administrative Partner」時使用。

ringda By ringda schedule Updated 6/2/2026

name: jd-sweep-valig description: 正式共用 JD sweep 入口。用 run-valig-title-sweep.mjs 以 preset 抓取 LinkedIn 職缺產生 receipt,依 .specify/conventions/jd-shortlist-ranking.md + lane delta 判斷,只把討論後確認要投的 winners 用 import-slate 寫進 DB(不 bulk 倒未判斷 raw)。當用戶說「跑一輪 valig」「掃 SDR/BDR」「掃 GTM/RevOps/Marketing Ops/CS/Implementation」「廣挖全美 JD」「抓新中文職缺」「中文加分」「掃一輪 LinkedIn」「掃 intern」「掃 B-tier intern」「高層行政助理」「Executive Assistant」「Administrative Partner」時使用;若用戶明確重啟「掃 supply chain intern」或「用 AI-wave 方向抓供應鏈」,只按 historical / explicit-only guidance 執行。

jd-sweep-valig

意圖與邊界

這是唯一正式 sweep 入口。它只負責:

  • 用同一套抓取器跑 preset 或客製 query
  • 產生一致 receipt(options / searches / jobs)
  • 判斷後只把確認要投的 winners 寫進 DB(不 bulk 倒未判斷的 raw)

這個入口涵蓋兩條結構性互補的抓取管道,不是只有 Apify:

  • Apify valig(title × location):廣度基線,可重跑、可寫回 DB、job_id 去重。但結構性漏掉開頭非標準的 title(enablement / intern / 長標題 / 詞序不同),即使 contractType=I 也抓不到——它只命中 preset 列的精確 title。
  • LinkedIn 語意搜尋(authenticated read):召回 Apify title-search 漏掉的非標準黃金(實證:Smartly "Sales Enablement & Competitive Intelligence Intern"、Skydio "GTM Enablement Associate"、TikTok Strategy Intern 都這樣來)。代價是噪音高、~1000 筆上限、目前需人工翻頁(非自動 receipt)。

兩條並存:Apify 做標準廣度,語意搜尋補非標準長尾。MCP 不改變這點(interface layer,同 Actor 同輸出,換呼叫方式不換抓取結果)。語意補網的適用 lane 見「1b) LinkedIn 語意補網」——主要對 B,不是 BCD 平均做。

共用 vs 獨立(防 drift 邊界)

所有 preset(主攻與支線、含中文)共用同一棵樹,差異只在三樣。改東西前先看這張表,免得同一件事在兩處各維護一份而 drift:

共用? 真本
抓取器程式 / receipt / job_id 去重 ✅ 共用一份 run-valig-title-sweep.mjs
地理池 config ✅ 共用一檔(各 preset 取不同 profile) config/job-search-location-pools.json
判斷主框架(兩閘一尺) ✅ 共用 .specify/conventions/jd-shortlist-ranking.md
輸出格式 ✅ 共用 .specify/formats/jd-shortlist-slate.md
公司品質判斷 必須共用一份 shared/references/market/ai-wave-domain-thesis.md
Sponsor / work-auth triage 必須共用一套節奏 .specify/conventions/jd-shortlist-ranking.mdSponsor Compound
寫 DB 入口 ✅ 共用 import-slate
title 搜尋列 ❌ 各自獨立(問「角色」維度) 各 preset 的 titles
location profile ❌ 各自獨立(問「地理偏好」維度) 各 preset 的 locationProfile

一句話:title / location 各自獨立是對的(問的維度不同——title 問角色、location 問地理);公司品質判斷一律收斂到 AI-wave thesis 一份,誰要判「這是不是好公司」都讀它、不另立第二份標準,否則 drift。

它不做最終 ranking。判斷層一律走 .specify/conventions/jd-shortlist-ranking.md,輸出一律走 .specify/formats/jd-shortlist-slate.md,依 lane 注入很薄的 Lane Decision Delta:

  • SDR / BDR:交給 .specify/prompts/jd-lane-delta-sdr-bdr.md
  • GTM-adjacent(Sales Ops / RevOps / Marketing Ops / CS / Implementation):交給 .specify/prompts/jd-lane-delta-gtm-ops.md
  • marketing-analysis(行銷/市場/消費者分析,B 分析 tier 入口):交給 .specify/prompts/jd-lane-delta-marketing-analysis.md(預設 cluster:B,少數 campaign/ops 味判 C)
  • Mandarin(中文當門票):中文是擠進好公司的篩選器、不是獨立 lane。判斷層套 .specify/conventions/jd-shortlist-ranking.md + gtm-ops Lane Decision Delta(不是 location profile——抓取仍走 mandarin_bilingual location profile,見「Location rotation」),但判斷順序是「先判公司、後判角色」:先讀 shared/references/market/ai-wave-domain-thesis.md 判公司是不是 AI-wave 好公司 → 好公司就放行、進去再圖轉 B → 角色本身對到 B = 黃金。完整 gate 見「Lane 精簡 gate」的 mandarin
  • 其他 lane:用對應正式流程判斷

主要流程

  1. 抓取
# 主攻池 + GTM 入口都吃 broad_recall(national + 35 個全美 metro 全放 core、每輪都打、不輪替;coverage-first)
node scripts/run-valig-title-sweep.mjs --preset marketing-analysis  # 近期主攻召回
node scripts/run-valig-title-sweep.mjs --preset gtm-ops             # B 中心 + C/D 橋接(已抽掉 SDR/BDR)
# A lane 已降為機會型支線:sdr-bdr 不進 daily 主攻,只在想看 AI-wave SDR 機會時手動跑
node scripts/run-valig-title-sweep.mjs --preset sdr-bdr             # 機會型支線(非 daily 主攻)
# B-tier intern 用薄殼 /intern-sweep 拉出跨 lane receipt;LinkedIn keyword 搜尋忽略 "Intern" 字尾,
# 實習靠 contractType=I + 短 stem title 撈,且要 --intern-only 後處理 + 7 天窗(見下方 contractType 寬鬆 filter 註)
node scripts/run-valig-title-sweep.mjs \
  --title "Marketing Analyst" --title "Market Research" \
  --title "Business Analyst" --title "Revenue Operations" \
  --title "Sales Operations" --title "Operations Analyst" \
  --title "Customer Success" --title "Implementation" \
  --location-profile broad_recall --date-posted r604800 \
  --remote 1,3 --contract-type I --intern-only --out-prefix intern-sweep
# 支線 lane 仍用各自地理輪替 profile
node scripts/run-valig-title-sweep.mjs --preset mandarin --rotation-batch auto
node scripts/run-valig-title-sweep.mjs --preset supply-chain-intern --market-mode ai_wave --rotation-batch auto  # historical / explicit-only:只有使用者明確重啟供應鏈搜尋才跑
node scripts/run-valig-title-sweep.mjs --preset executive-admin --rotation-batch auto

gtm-ops / marketing-analysis(以及機會型支線 sdr-bdr)用 broad_recall profile:每輪打滿 United States + 35 個全美目標 metro(primary tech hubs + secondary tech markets + 非科技 national metros,含候選人 base Portland)、不輪替。設計是 coverage-first:LinkedIn 的 United States 只是地理偏斜切片、不是全國超集(US@200 仍漏掉某 metro 94% 的缺),要全美覆蓋就得逐 metro 打;每輪 query 數 = preset title 數 × metro 數(title 數以 run-valig-title-sweep.mjsPRESETS 為準,會隨校準增減),只是 valig 抓取時間/額度,不是瓶頸(瓶頸是判斷/投遞頻寬)。刻意不用 rotation:把 metro 輪到 1/N 輪會讓那城的短命缺漏掉,正好破壞全美覆蓋。靠窄 date 窗 + 定期重跑保持新鮮(valig ~40% 洗牌),job_id 去重讓重疊很便宜。broad_recall 不吃 --rotation-batch(rotation 為空);抓取量若是硬限制,調 cadence/拉長間隔,而不是砍 coverage。

--date-posted 對齊重跑頻率:預設 r604800(近 7 天)。窗 ≈ 重跑間隔 + 1 天 buffer,否則兩次的日期窗重疊段會把同一批仍在線的舊缺重抓一次。valig actor 只接受四個合法值:""(不限)、r86400(24h)、r604800(7 天)、r2592000(30 天)——傳其他值(如 r259200)actor 會回 HTTP 400、整輪抓 0 筆。 所以每日掃用 r86400、每 2–3 天掃用 r604800(沒有合法的 3 天值,往上取 7 天)、跨週/跨月校準用 r604800r2592000。但不必追求零重疊:valig 寫入(import-slate / import-valig-fetch)靠 job_id(valig id=PRIMARY KEY)去重、且只寫確認要投的 winners,所以重複抓只花 valig 抓取額度、DB 端重疊本來就小、不污染 pool;且因 ~40% 洗牌 + United States 是地理切片,帶重疊的定期重跑本身就是廣召回的手段,單輪新缺通常遠多於重疊舊缺。(注意:dedup_hash 是 company-board / ATS fetcher 那條路在用、hash 的是 apply_link;valig row 為 NULL、且 LinkedIn 換 id 重貼時 URL 會變,所以它不在 valig 去重這條路上。)所以「平常隔幾天掃新缺來投」才縮窗;「跨週重新校準整體供給」要用寬窗看滿整週。

--contract-type 是寬鬆 filter,不是嚴格篩(2026-06-21 actor 探測實證):valig 的 contractType(合法值 F/P/C/T/I/V)只把對應類型排前/加權,不嚴格排除其他——送 ['I'] 會回 Internship 為主、仍混 Full-time(單 title 乾淨探測:15 intern / 10 full-time),且窄窗(r86400)下 intern 供給稀疏時會被 full-time 大量稀釋(3 intern / 73 full-time)。所以各 preset 設的 ['F','C','T','I'] 是「讓這些類型都進召回池」,不是嚴格只要這幾類唯一需要嚴格只留某類型時(intern-sweep 只要 intern),用 --intern-only:它用 actor 回傳的精確 contractType 標記(output 標記是準的,即使 input filter 寬鬆)做確定性後處理,只留 Internship(實證 68/68 純淨)。注意第二層雜訊:LinkedIn 的 "Internship" 標記本身偶有 senior/manager 缺被錯標,--intern-only 擋不掉,要靠 ranking win 閘讀完整 JD 判 level。

1b) LinkedIn 語意補網(撈 Apify 漏的非標準黃金)

Apify 標準 sweep 跑完後,對「title 開頭非標準」的黃金做語意補網。可重跑 runner 已就位run-linkedin-semantic-sweep.mjs,用使用者自己的 authenticated persistent session 就地抓取(點 card → 從 currentJobId 取 id + anchor-slice 取乾淨 JD),產 receipt 到 data/sweeps/linkedin-semantic-*.json/.md,欄位對齊 valig receipt。它只產 receipt——不 ranking、不寫 DB;判斷與寫 DB 仍走下面的「流程」與既有 import-slate

# query 模式(自動翻頁到 limit、跨頁去重)
node scripts/run-linkedin-semantic-sweep.mjs --query "GTM Enablement" --limit 75
# seed URL 模式(吃你貼的 LinkedIn search-results URL)
node scripts/run-linkedin-semantic-sweep.mjs --url "<LinkedIn search-results URL>"
# 只讀貼的那一頁(驗證用)
node scripts/run-linkedin-semantic-sweep.mjs --url "<URL>" --keep-start

--query vs --url(別混用)--query 是裸 semantic 關鍵字,只送 keywords、不帶任何 filter。要沿用你在 LinkedIn 上存好的 alert / saved-search 條件(geoId / savedSearchId / f_* / salary / distance),必須整段貼成 --url——--query 不會幫你還原那些。--url 也會 pre-capture URL 上預選的 currentJobId(見下)。

抓取細節封裝在 lib/linkedin-job-search-reader.mjs(beta /jobs/search-results/ 與 classic /jobs/search/ 兩面都實測通過);它是語意補網的正式入口。舊的 linkedin-job-search-authed.mjslinkedin-scraper.mjs 只算 legacy / fallback,不要當語意補網入口跑。receipt 已做 job-id 去重 + 同 company/title 去重(砍 beta 語意翻頁常見的同職缺 repost / 多地點分身)。

已知限制與現況(看 receipt 前先讀)

  • beta 翻頁重疊高:每頁約一半 card 與前頁重複(receipt 的 duplicateIds 如實記錄),開大 limit 可能抓不滿。這是 beta 排序本質、非 reader bug;要更高召回就多跑幾組 seed,別把單一 limit 開很大。
  • 每頁讀前 25 張 card + seed pre-capture:beta DOM 一次露出約 48–50 張,但 reader 每頁只點前 25(之後靠 start+=25 翻頁)。所以單頁不保證讀完所有可見 card——相關度高的排前面、會被讀到;尾部冷門 card 可能要靠翻頁或換 seed 才撈到。但你 --url 指定的那筆 currentJobId 一定先被 pre-capture(即使它不在可點 card list 裡),不會漏。
  • cards seen ≠ collected:summary 的 collected 是「去重後值得人讀的不同職缺」,遠少於 cards seen,不代表 LinkedIn 只有這麼少
  • auth 失敗 / 被擋標 blocked、選不到 card 標 partial,不靜默回 0。

適用 lane:主要對 B,以及 B-adjacent 的 people-ops,不是 BCD 平均做。 語意補網存在的唯一理由是「Apify title-search 結構性漏黃金」,所以只對會被漏的 lane 做(people-ops 的 seed/gate 見下方獨立小節):

  • B(RevOps/Strategy/Analytics)= 主場:唯一被實證 Apify 結構性漏黃金的 lane,因為 B 黃金特別愛用 enablement / strategy / intern 這種非標準開頭 title。B 也是 entry 供給最稀薄、最該複利的 lane(見 career-positioning.md),值得多花這道工。
  • A(SDR/BDR):title 高度標準化(SDR/BDR/ADR),Apify 抓得好、供給最多,補網 ROI 低,預設不做。
  • D(CS/Impl):變體可窮舉,用「receipt 差集 → 加 preset title」補(2026-06-02 已補 Customer Success Specialist 等 6 個),比手動語意翻頁省力。預設走加 title,不走語意補網。
  • C(MarTech):問題是泛 marketing 噪音、不是漏;語意搜尋只會撈回更多 marketing 噪音、幫倒忙。不做。

C/D 只有在實際發現「某類黃金確實被 title 法系統性漏掉、且加 preset title 補不了」時,才臨時補網——不預設常態做。

B 的 seed query 配方GTM strategy analystGTM EnablementStrategy & OperationsGTM intern(藏過 Smartly);enablement / 競品情報入口(2026-06-15 lane 驗證升級,experimental-jd-sweep-lane-validation plan):Sales Enablement CoordinatorSales Enablement AssociateRevenue Enablement CoordinatorRevenue Enablement AssociateCompetitive Intelligence AnalystMarket Intelligence AnalystMarket Intelligence AssociateMarket Intelligence Intern。這組是 L1 實證 GOLD 率最高(19%)、但 Apify title-search 對 enablement / market-intelligence 長標題結構性 0 命中的那類,只能語意補網、不入 Apify preset。

帶偏詞黑名單(實證會把語意搜尋帶歪、單用會撈錯池)

  • revenue → 帶偏 finance / billing / 會計
  • sales(單用)→ 帶偏 quota sales 池
  • Analyst → 帶偏 senior(3–6+ yrs)
  • business operations(單用)→ 帶偏 Management Trainee / 泛 ops 噪音
  • Competitive Intelligence / Market Intelligence → 帶偏 senior CI owner(要 PhD / quant,2026-06-15 L1 sweep 實證:Meta CI 要 6yr+PhD、Rippling Senior CI Manager)。seed 一律綁 entry/coordinator/associate/intern/analyst-tier 限定詞,不放裸詞。

流程:每組 seed 用 runner 跑一輪(--query "<seed>" --limit 30~50;LinkedIn relevance 把相關排前,limit 控制翻幾頁、後面多是噪音)→ 讀 receipt 的 title/公司/JD 全文 → 對撈到的非標準黃金驗 level + sponsorship(B intern 多可 CPT 繞 sponsorship;entry full-time 留意 "no sponsorship" 硬條款)→ 確認黃金才用 import-slate 進 DB。receipt 已含乾淨 JD,不必再逐筆 live 讀。

B-adjacent people-ops 語意補網(2026-06-15 L2 lane 驗證新增)

People / Talent Ops 的真黃金與 B 同病——L2 GOLD 全是 Apify title-search 結構性漏抓的非標準長標題(WEX Talent Acquisition Operations Specialist、TikTok Mobility Operation Specialist (AI & Automation)、Tarte Coordinator, CX Reporting & Fraud Operations、Grocery Outlet Recruiting Operations Coordinator 接 Salesforce/reporting),所以它走語意補網、不入 Apify preset(泛 People/Recruiting coordinator title 只會撈回純面試排程 + 政府臨床 admin 噪音)。它正中候選人的 applicant-workflow / records-migration 證據(Changing The Present 的 PostgreSQL/Retool applicant 記錄遷移)。

  • seedTalent Acquisition OperationsHR Operations AnalystRecruiting OperationsPeople SystemsHRIS analyst
  • gate(硬性,只收):JD 內文要有 ATS / HRIS / applicant tracking / HR data quality / recruiting-ops reporting / workflow documentation / process-system optimization 其中之一。
  • 黑名單(明確擋,即使 title 像也排除):純 People Operations Coordinator / Recruiting Coordinator / interview-scheduling coordinator / 一般 HR admin / 政府·臨床 coordinator(involuntary commitment、ER unit coordinator)/ FAANG admin business partner 無 sponsor。
  • 進 DB 時 cluster tag 用 cluster:B(people-ops 黃金接 records→reporting→handoff,歸 B 中心的 work object,不另立新 cluster)。

不入 Apify preset 的已驗證泛 title(2026-06-15 lane 驗證,加了會污染 pool,不再重議)Research Operations CoordinatorTraining Operations CoordinatorLearning Operations Coordinator(L3/L4 噪音 70–90% 醫療/學術/LMS admin)、People Operations CoordinatorRecruiting Coordinator 泛版(純排程)、Supply Chain Coordinator / Procurement Coordinator 泛版(warehouse/staffing/senior 噪音;供應鏈已退 active search,只有使用者明確重啟時才回看 historical supply-chain-intern --market-mode ai_wave)。

進 DB 格式(比照 networking 手動單筆):用 db.insertJobRuntime 建 row,discovery_source='networking'status_code='visa_uncertain'(intern/CPT)或依實際 visa 判斷,tag = ['cluster:<X>', 'slate:manual', 'manual-cluster', '<label>', '<status_code>']slate:manual + manual-cluster 標示這是人工判 cluster、與 valig ranking 統計隔離,不污染「哪個 cluster 轉面試」的 feedback loop。

  1. 判斷(套共用 ranking,不在 skill 另立判斷哲學)

抓取只產 receipt;最終推薦判斷一律走 .specify/conventions/jd-shortlist-ranking.md,輸出一律走 .specify/formats/jd-shortlist-slate.md。本 skill 只補 sweep 實作差異:

  • 進場去重:在 convention 階段 1 之前,先做 job_id 去重,再做「同公司 + 同 title」跨 metro 去重;這是 sweep receipt 特有前處理,不改 ranking 階段定義。
  • 便宜讀全文:階段 2 讀 receipt 內的 description,不 live 抓;因此數量收斂只發生在完整 JD 判斷之後,不用 title / LinkedIn level / 人為 Top-N 提前砍。
  • 昂貴 live 只給 keeper:LinkedIn live open/closed、live applicants、sponsor 精查只對快動手那批做;提早囤 live 驗證常因 JD 過期失效。
  • sponsor 與 DB tag:照 jd-shortlist-ranking.mdSponsor Compounddb-status-conventions.mdvisa:* tag,不在 skill 另寫 sponsor 規則。

依 lane 注入 profile:

  • SDR / BDR 批次:.specify/conventions/jd-shortlist-ranking.md + .specify/prompts/jd-lane-delta-sdr-bdr.md
  • GTM-adjacent 批次(Sales Ops / RevOps / Marketing Ops / CS / Implementation):.specify/prompts/jd-lane-delta-gtm-ops.md
  • marketing-analysis 批次(行銷/市場/消費者分析):.specify/prompts/jd-lane-delta-marketing-analysis.md(B 分析 tier 入口,預設 cluster:B)
  • Mandarin 批次(中文當門票):.specify/conventions/jd-shortlist-ranking.md + gtm-ops Lane Decision Delta(不另寫 mandarin delta;location profile 仍是 mandarin_bilingual、不動)。判斷順序先公司後角色:先讀 shared/references/market/ai-wave-domain-thesis.md 判公司是不是 AI-wave 好公司,好公司才放行、進去再圖轉 B;角色對到 B = 黃金,角色能累積 product/business/data/market judgment 的優先,純低訊號客服/行政/翻譯只當低優先。中文剛需不是放行理由——非 AI-wave/說不清產品 buyer/純剝削零成長即使中文剛需也 OUT。
  • supply-chain 批次:historical / explicit-only。供應鏈已退出 active search;只有使用者明確重啟時,才回看本 skill 的「AI-wave supply-chain recall」與「Lane 精簡 gate」。.specify/prompts/supply-chain-shortlist-ranking-prompt.md 沒有 live 版本,舊版只在 shared/archive/supply-chain-transition/references/ 供回顧。若 supply-chain ranking 要重新進主流程,先整理正式 Lane Decision Delta,再接回 .specify/conventions/jd-shortlist-ranking.md
  • 非上述 lane:走各自正式判斷流程

gtm-ops preset 的 title cluster 含 Tier A(乾淨 entry 門:Marketing Analyst、Demand Generation Coordinator、Marketing Operations Coordinator、Marketing Operations Specialist、Marketing Automation Specialist、Sales Operations Coordinator、CRM Coordinator、Implementation Coordinator、Customer Success Associate)與 Tier B(工作 fit 但偏 senior/噪音、靠 ranking gate 濾:Revenue Operations Analyst、Sales Operations Analyst、Business Analyst、Business Operations Analyst、Business Process Analyst、Growth Analyst、Operations Analyst)。SDR/BDR 已自 gtm-ops 抽出(A lane 降權,2026-06-14)、改只走機會型支線 sdr-bdr preset。Tier B 靠 GTM lane gate 濾掉 senior 與 off-pool;其中 Operations Analyst 噪音高但能撈非標題 RevOps(如 Deal / Commercial Operations Analyst),交給 gate 篩。完整清單以 scripts/run-valig-title-sweep.mjsPRESETS 為準。刻意排除(2026-06-01 讀完整 JD 後):Data Analyst(飽和)、Business Systems Analyst(IT+無 sponsorship)、Process Improvement Analyst(工廠 CI/與 Business Process Analyst 冗餘)、Marketing Analytics(偏 senior/與 Marketing Analyst 冗餘)、Inside Sales Representative(科技 SDR 已被 sdr-bdr 抓、其餘非科技高量)。

  1. 寫決定(只寫確認要投的 winners)

討論後,只把確認要投的 winners 用 import-slate 寫成 recommended;其餘留在 receipt,不進 DB。進 DB = 確定要投。

不再對 sweep 結果跑 bulk import-valig-fetch(會把未判斷 raw 全倒成 pending_analysis)。該腳本已無其他流程引用,僅保留為 legacy;company-board → /run-intake 自走 scan-company-*.mjs,不受影響。

Location rotation

run-valig-title-sweep.mjs 用共用 locationProfile 產生 locations。United States 會保留作為全國召回,再加上該 lane 的 core hubs 與一組 rotation bucket;--rotation-batch auto 會讀同 profile 最近一次 receipt,下一輪自動換桶。若要固定某組,用 --rotation-batch 2;若要全部探索桶,用 --rotation-batch all;若只要全國 + core,用 --rotation-batch none

Preset 預設 profile:

  • gtm-ops -> broad_recall(不輪替)
  • sdr-bdr -> broad_recall(不輪替;機會型支線、非 daily 主攻;舊 sdr_bdr 保留為 fallback)
  • mandarin -> mandarin_bilingual(location profile;判斷層套 gtm-ops ranking profile,兩者不同)
  • supply-chain-intern --market-mode ai_wave -> supply_chain_ai_wave(historical / explicit-only;不進日常主攻)
  • executive-admin -> executive_admin

broad_recall 是 coverage-first profile(United States + 35 個全美目標 metro 全放 core、每輪都打、rotation 空),用於「不在意地點、要廣挖全美好 JD」的主攻與 GTM 入口。地理輪替只適用仍用 rotation profile 的 active 支線 lane(mandarin / executive-admin);supply-chain profile 只在使用者明確重啟供應鏈搜尋時作 historical / explicit-only 參考。

客製 title sweep 若要吃同一套 pool,明確加 --location-profile <name>;若已提供 --location,腳本會以 explicit locations 優先,不使用 profile。

Historical AI-wave supply-chain recall

供應鏈 / procurement / logistics 已退出 active search。只有使用者明確重啟 supply-chain intern / entry / contract 搜尋時,才回看這段 historical guidance;若重啟,仍用這個 skill,不新增新入口。做法是在 supply-chain-intern preset 上加 --market-mode ai_wave,目標只限能累積 systems / process / data / supply-chain judgment、且公司 domain 值得投入的職缺;rotation 預設 auto,會依最近一次 AI-wave supply-chain receipt 自動 1 → 2 → 3 → 1。

node scripts/run-valig-title-sweep.mjs --preset supply-chain-intern --market-mode ai_wave --dry-run
node scripts/run-valig-title-sweep.mjs --preset supply-chain-intern --market-mode ai_wave

腳本層的 market_mode=general 仍是 CLI 相容預設;skill 層只有在使用者明確重啟 supply-chain sweep 時才呼叫這組 guidance,且預設用 market_mode=ai_wave。只有當用戶明確說「不要 AI-wave」「一般供應鏈」「baseline / general sweep」時,才改用不帶 --market-mode ai_wave 的 general preset。

market_mode=ai_wave 會讀 00-job-bot.project/config/ai-wave-supply-chain-keywords.json,用 AI-wave domain + supply-chain role 產生 strict / entry 雙池 query;locations 則走共用 supply_chain_ai_wave profile。若用戶要固定某組,明確加 --rotation-batch 2;若要全部探索桶,明確加 --rotation-batch all;若只要全國 + core,明確加 --rotation-batch none

AI-wave sweep 抓完後,固定先用報告校準 recall,不直接改 ranking 結果:

node scripts/analyze-ai-wave-recall.mjs --file "data/sweeps/<本輪 receipt>.json"
node scripts/suggest-ai-wave-feedback.mjs --ranking "data/sweeps/<ranking>.json" --sweep "data/sweeps/<本輪 receipt>.json"

有 ranking artifact 時再跑 feedback report;回補 keyword config 前要先看 feedback report,高可投率 keyword / bucket 可升權,高 needs_experience 或低貢獻項目才降權。不要自動覆寫 config。

Lane 精簡 gate

  • sdr-bdr:只推 AI-wave / 技術型公司、能累積 buyer language、account research、qualification、CRM / pipeline discipline、AE-ready handoff 與 GTM motion 的 entry SDR / BDR;純 call volume、closing、territory ownership、commission-only、outsourced SDR program、remote-only 且無 coaching 降級。
  • gtm-ops:只推能累積 customer/revenue signal、CRM/pipeline hygiene、follow-up、handoff、reporting 的 entry/coordinator/associate 角色;senior/manager/3+yr、HubSpot/Salesforce admin owner、AI/cloud solution architect、commission-only、remote-only 降級。Tier B 的 Analyst 字尾缺要特別看內文 seniority。
  • marketing-analysis:只推接 funnel/conversion/campaign/consumer signal → analysis → reporting → recommendation 的 B 分析 tier entry 角色(含 customer/CX signal 黃金);純 social/brand/content、paid media owner、generic data analyst、senior analytics、market research 純問卷執行、quota sales、remote-only 降級。Analyst 字尾常偏 senior,必讀內文判 level。Preset 含 I 以免漏;跨 lane intern 另走 /intern-sweep 拉出來看,重複職缺在 judgment 層收掉。
  • mandarin:中文是擠進好公司的門票、不是 lane。先判公司(讀 shared/references/market/ai-wave-domain-thesis.md:賣什麼、buyer 痛點是否真實有預算、domain 未來 1–2 年會不會更值錢、進去能否接觸 customer signal/buyer pain/workflow knowledge)→ AI-wave 好公司就放行、進去再圖轉 B。判斷套框架 + gtm-ops ranking profile。三層:好公司+角色對到 B=黃金;好公司+角色能累積 product/business/data/market judgment=投;好公司但純低訊號客服/行政/翻譯=低優先。下限(即使中文剛需也 OUT):非 AI-wave、說不清產品 buyer pain、純剝削零成長。中文剛需從來不是放行理由,好公司才是。
  • executive-admin:只推黃金公司 + 高層 operating cadence + Xin 有機會接住;成熟 career EA 或純庶務降級。
  • supply-chain-intern:historical / explicit-only;只有使用者明確重啟時才推能累積 systems/process/data/supply-chain judgment 的 intern;純 warehouse labor / 現場低訊號不升級。

Preset

主攻:

  • marketing-analysis(broad_recall;近期主攻召回;含 I,跨 lane intern 另用 /intern-sweep 單獨看)
  • gtm-ops(broad_recall;B 中心 + C/D 橋接,已抽掉 SDR/BDR)

支線:

  • sdr-bdr(broad_recall;機會型支線,A lane 已降權、不進 daily 主攻,只在想看 AI-wave SDR 機會時手動跑)
  • mandarin(中文當門票,先判 AI-wave 好公司)
  • supply-chain-intern(historical / explicit-only;供應鏈已退出日常主攻,只有使用者明確重啟時才跑)
  • executive-admin

客製查詢

以下供應鏈 query 只作 historical / explicit-only 範例;不要在日常 Marketing / GTM 主攻 sweep 中主動建議。

node scripts/run-valig-title-sweep.mjs \
  --title "Supply Chain Intern" \
  --title "Procurement Intern" \
  --location-profile supply_chain_ai_wave \
  --rotation-batch auto \
  --date-posted r604800 \
  --remote 1,3 \
  --contract-type I \
  --experience-level 1 \
  --limit 30 \
  --out-prefix supply-chain-custom

注意事項

  • run-valig-entry-ai-sweep.mjs 是 AI-signal scoring utility,不是正式 sweep 主入口。
  • linkedin-scraper.mjs 是 legacy / fallback,不作主流程。
  • DB 寫入只走 import-slate(寫確認要投的 winners = recommended),不建立 applications。import-valig-fetch(bulk → pending_analysis)已退出 sweep 流程、無其他引用,僅 legacy 保留。
Install via CLI
npx skills add https://github.com/ringda/xin-job-hunting --skill jd-sweep-valig
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator