ZZ HunterAgent Member Starter
Run a fast general-industry candidate-entry workflow for a novice member. The member supplies one source; use that source completely and do not turn the task into cross-platform hunting.
This Skill deliberately excludes AMiner, 3API, OpenReview/GitHub/Scholar checklists, academic deep research, technical-research funnels, and Zhang Zhen's four-company taxonomy. It still performs 3-5 bounded public-web queries for current candidate information and professional classification terminology.
Read Once
- Read this file completely.
- Read
references/entry-rules.mdcompletely before the first candidate in the task. - Read
references/classification-rules.mdonly when a classification field exists or changes. - Read
references/tooling-operations.mdonly for true first use or a real tool/auth/browser/file failure. - Read
references/write-safety.mdbefore the first Sheet mutation.
Reuse already loaded rules, Feishu identity, header mapping, CDP session, and successful capability results for later candidates in the same unchanged task. Do not reread or reinitialize them per person.
True First Use Versus Continuation
Treat the machine as already initialized when either of these is true:
- the same conversation shows a successful Feishu read or CDP source read; or
- the fast local command
node scripts/bootstrap.js --marker-statusreturnsready: true.
Do not trust file existence alone: an older or broken marker returns stale-marker and requires one bootstrap refresh.
On a genuinely fresh machine, run exactly one lightweight bootstrap before the first real operation:
node scripts/bootstrap.js --check
Follow only its single next_action. Automate every technical step. A missing lark-cli, npm/Node, Python, or browser means install or repair it through the current agent host; never ask the member to copy Sheet content, paste commands, open Terminal, choose a path, or substitute screenshots/browser scraping for Feishu API access. Ask the member only to approve the host action, click one Feishu authorization link, or log into the exact supplied recruiting website. When bootstrap returns ready it records the local tool/auth marker; immediately continue the requested task.
After initialization, start with the real workbook/row read or supplied source. Do not rerun bootstrap, auth, setup, permission probes, or browser acquisition unless that exact capability actually fails. The ready marker covers local tools and Feishu authorization; every newly supplied recruiting platform still uses one real CDP acquire/read, which must detect login walls before reading candidate facts.
Fast One-Candidate Workflow
- Resolve the exact workbook and sheet. Read the real header row and the complete target row before research or writing.
- Identify the single supplied source:
- Maimai -> open/read Maimai only;
- Liepin -> open/read Liepin only;
- LinkedIn -> open/read LinkedIn only;
- resume/attachment/local file -> parse that material only.
Acquire only that platform's CDP tab. If Maimai, Liepin, or LinkedIn shows a login wall, login page, CAPTCHA, or security verification, keep the same persistent browser open, bring it forward, ask the member to complete that one website action, then rerun the same acquire/read. Never treat a login wall as missing candidate data and never switch recruiting platforms. - Run the source reading and 3-5 ordinary public-web queries concurrently when possible. Public search checks recent company, role, direction, location, valuable public updates, and attributable contact information; it does not authorize another recruiting-platform search.
- Reconcile the source, existing row, and opened final public pages. Use the newest reliable candidate-specific information when it clearly corrects stale data; preserve an unresolved conflict and ask only when the ambiguity changes the row materially.
- Map facts by the real headers. If the real headers match Zhang Zhen's standard headers, apply the standard field spelling rules in
entry-rules.md. Otherwise understand each actual header semantically and preserve the member's established format. - Classify at one to three supported levels. Start from the common templates, research current terminology inside the same 3-5-query budget when the member's industry is not covered, and never force a candidate into a template.
- Prepare one sparse change map. Commit only with
scripts/safe_sheet_write.py; it locks the target row, checks live headers and original values, writes exact cells with yellow highlighting, and performs one targeted readback. - Finish the current row before starting another person. Report useful results only; do not create evidence bundles, gate journals, timing proof, or proof-only replay.
Source Boundary
Candidate entry uses exactly the source supplied by the member or already stored in the target row. Do not search another recruiting platform merely because it exists.
- A supplied Maimai profile does not trigger Liepin or LinkedIn search.
- A supplied Liepin profile does not trigger Maimai or LinkedIn search.
- A supplied resume does not trigger a recruiting-platform search.
- LinkedIn is not opened by default. Open it only when the member supplied a LinkedIn URL or explicitly requested LinkedIn.
- Ordinary public-web search is always allowed within the bounded rules and is separate from recruiting-platform search.
Entry alone never authorizes adding a friend, messaging, emailing, inviting, or changing outreach status.
No Research Gates
Do the real work but do not maintain per-candidate gate JSON, evidence checklists, query journals, concurrency proof, or completion bundles. Do not repeat a finished search to prove it happened.
The only hard gate is Sheet mutation safety:
python scripts/safe_sheet_write.py commit \
--url '<sheet-url>' \
--sheet '<exact-sheet-id>' \
--target-row '<row>' \
--changes-json '<cell-change-map>'
If research produces no genuine field change and no valuable final source for a matching field/notes field, do not write merely to create activity.
Canonical Files
| Need | File |
|---|---|
| one-source reading, 3-5 public searches, fields, preservation | references/entry-rules.md |
| common classification templates and researched analogy | references/classification-rules.md |
| first-use setup, Feishu, CDP, files, recovery | references/tooling-operations.md |
| only Sheet-mutation restrictions | references/write-safety.md + scripts/safe_sheet_write.py |
Completion
Complete only after the supplied source is fully handled, 3-5 bounded searches have settled, useful final pages have been opened, conflicts are reconciled, the classification depth is supported, and the safe writer confirms exact values plus yellow style in its one readback. Keep the final report short: what useful information was added or corrected, or that no genuine change was found.