init
This commit is contained in:
commit
d295c7f139
1527 files changed
+270726
No files matched your search
@@ -0,0 +1,146 @@
|
||||
# モード: oubo -- 応募ライブアシスタント
|
||||
|
||||
> Free-text answers と cover-letter fields には `voice-dna.md`(存在する場合)を適用する。Full guardrail、conversational voice included(Tier 1 + Tier 2)。`_shared.md` → Voice DNA を参照。
|
||||
|
||||
候補者が Chrome で応募フォームを入力しているときの interactive mode。画面上の内容を読み、事前評価済みの求人 context を読み込み、フォームの各質問に personalized responses を生成する。
|
||||
|
||||
## Requirements
|
||||
|
||||
- **Best with Playwright in visible mode:** visible mode では、候補者が browser を見られ、Claude が page と interact できる。
|
||||
- **Without Playwright:** 候補者が screenshot を共有するか、質問を手動で貼り付ける。
|
||||
|
||||
## Workflow
|
||||
|
||||
```text
|
||||
1. DETECT → Read active Chrome tab (screenshot/URL/title)
|
||||
2. IDENTIFY → Extract company + role from the page
|
||||
3. SEARCH → Match against existing reports in reports/
|
||||
4. LOAD → Read full report + Section G (if it exists)
|
||||
5. PREFLIGHT → Confirm posting liveness + company/role match before drafting
|
||||
6. ANALYZE → Identify ALL visible form questions
|
||||
7. GENERATE → For each question, generate a personalized response
|
||||
8. PRESENT → Show formatted responses for copy-paste
|
||||
```
|
||||
|
||||
## Step 5 -- Preflight gate
|
||||
|
||||
Application answers を生成する前に、form が意図した active job を指していることを確認する。この gate は page detection、company/role identification、matching report load の後に実行する。
|
||||
|
||||
1. Visible URL、page title、company、role、closed/expired signals を読む。
|
||||
2. URL がある場合、Playwright で liveness を確認する:
|
||||
- active posting evidence: title/role + job description または form fields + submit/apply path
|
||||
- closed posting evidence: expired/closed/no longer accepting applications、JD がなく nav/footer だけ、generic careers/search への hard redirect、404/410
|
||||
3. Visible company and role を matched report と比較する。
|
||||
4. Company または title が materially changed している場合、drafting 前に stop して聞く:
|
||||
"The form appears to be for [visible company] -- [visible role], but the matched report is [report company] -- [report role]. Do you want me to re-evaluate, adapt with this mismatch, or stop?"
|
||||
5. Posting が closed に見える場合、candidate が known reason で明示的に override しない限り、final copy の生成を拒否する。
|
||||
6. Candidate が questions だけ、または screenshot だけを貼ったため liveness を確認できない場合、その limitation を明示し、drafting 前に company、role、active posting の確認を求める。
|
||||
|
||||
この preflight が解決するまで Step 6 に進まない。
|
||||
|
||||
**Applying to several roles in one sitting?** この preflight は目の前の単一 form を確認する。Multi-role session の前、特に scanner entries が `**Verification:** unconfirmed (batch mode)` と marked されている場合は、`pipeline` mode の **Liveness sweep** を先に実行する(`node check-liveness.mjs --file <urls>`)。これにより `data/pipeline.md` から dead postings がまとめて落ち、expired role の tab を開かずに済む。
|
||||
|
||||
## Step 1 -- Detect the job
|
||||
|
||||
**With Playwright:** active page の snapshot を取得する。Title、URL、visible content を読む。
|
||||
|
||||
**Without Playwright:** 候補者に以下を依頼する:
|
||||
- Form の screenshot を共有(Read tool で画像を読める)
|
||||
- または form questions を text として貼り付け
|
||||
- または company + role を伝えてもらい、こちらで検索する
|
||||
|
||||
## Step 2 -- Identify and search for context
|
||||
|
||||
1. Page から company name と role title を抽出
|
||||
2. `reports/` を company name で検索(case-insensitive grep)
|
||||
3. Match があれば full report を load
|
||||
4. Section G があれば previous draft answers を base として load
|
||||
5. Match がなければ notify し、quick auto-pipeline の実行を提案
|
||||
|
||||
## Step 3 -- Detect changes in the role
|
||||
|
||||
画面上の role が evaluation 済みの role と異なる場合:
|
||||
- **Notify the candidate:** "The role has changed from [X] to [Y]. Do you want me to re-evaluate or adapt the responses to the new title?"
|
||||
- **If adapt:** Candidate が mismatch を明示的に accept した後に限り、re-evaluate せず新しい role に responses を adjust
|
||||
- **If re-evaluate:** Full A-F evaluation を実行し、report を update し、Section G を regenerate
|
||||
- **Update tracker:** 必要に応じて `applications.md` の role title を変更
|
||||
|
||||
## Step 6 -- Analyze form questions
|
||||
|
||||
Visible questions をすべて特定する:
|
||||
- Free text fields(cover letter、why this role など)
|
||||
- Dropdowns(how did you hear、work authorization など)
|
||||
- Yes/No(relocation、visa など)
|
||||
- Salary fields(range、expectation)
|
||||
- Upload fields(resume、cover letter PDF)
|
||||
|
||||
各 question を分類する:
|
||||
- **Already answered in Section G** → 既存 response を adapt
|
||||
- **New question** → report + `cv.md` から response を generate
|
||||
|
||||
各 field について、application form contract を preserve する:
|
||||
- `field_type`: `text`, `textarea`, `select`, `radio`, `checkbox`, `number`, `file`, or `unknown`
|
||||
- `required`: `yes`, `no`, or `unknown`
|
||||
- `limit`: exact character/word limit if visible; otherwise `unknown`
|
||||
- `options`: visible options for select/radio/checkbox fields
|
||||
- `needs_candidate_confirmation`: `yes` for legal, demographic, work authorization, visa, relocation, salary, disability, veteran, sponsorship, background-check, or self-identification questions unless the answer is explicitly present in `config/profile.yml`
|
||||
|
||||
Legal、demographic、work-authorization、visa/sponsorship、salary、disability、veteran、background-check、relocation、self-identification fields の回答を捏造してはならない。回答が `config/profile.yml` または visible context に明示されていない場合は、`needs_candidate_confirmation` として mark し、候補者に確認するための最も安全な質問を出す。
|
||||
|
||||
## Step 7 -- Generate responses
|
||||
|
||||
各 question について、以下に従って response を生成する:
|
||||
|
||||
1. **Report context:** Block B の proof points、Block F の STAR stories を使う
|
||||
2. **Previous Section G:** Draft response があれば base として使い refine
|
||||
3. **"I'm choosing you" tone:** Same auto-pipeline framework
|
||||
4. **Specificity:** 画面上に見える JD の specific detail を reference
|
||||
5. **career-ops proof point:** "Additional info" field があれば含める
|
||||
6. **Recruiter-side risk map:** `modes/heuristics/recruiter-side.md` を使い、question が解消しようとしている doubt(motivation、stack fit、logistics、comp、work-auth、availability、seniority)を特定し、そこに直接答える
|
||||
7. **Disclosure discipline:** Logistics questions には truthfully に答えるが、unrelated motivation/fit answers で sensitive or HR-only details を自発的に出さない
|
||||
|
||||
**日本市場で頻出するフォーム特有の質問:**
|
||||
- **希望年収(月額/年額、税込み)** → `profile.yml` のレンジを日本円で示し、「パッケージ全体に応じて応相談」と注記
|
||||
- **雇用形態の希望(正社員/業務委託)** → `profile.yml` に従って回答。該当する場合は「どちらも対応可能」
|
||||
- **稼働開始可能日** → 現在の退職予告期間を考慮した現実的な日付(正社員なら通常 1-2 ヶ月)
|
||||
- **就労資格** → 明確に回答。未記載なら candidate confirmation が必要
|
||||
- **語学力** → 言語ごとに level を記載(native、business、conversational、basic)
|
||||
- **転居の可否** → `profile.yml` の location settings に従う
|
||||
|
||||
**Output format:**
|
||||
|
||||
```text
|
||||
## Responses for [Company] -- [Role]
|
||||
|
||||
Based on: Report #NNN | Score: X.X/5 | Archetype: [type]
|
||||
|
||||
---
|
||||
|
||||
### 1. [Exact form question]
|
||||
> [Response ready for copy-paste, or "Ask candidate: ..." if the field needs confirmation]
|
||||
|
||||
### 2. [Next question]
|
||||
> [Response]
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
Notes:
|
||||
- [Any observations about the role, changes, etc.]
|
||||
- [Personalization suggestions the candidate should review]
|
||||
```
|
||||
|
||||
## Step 8 -- Post-apply (optional)
|
||||
|
||||
候補者が application を submitted したと確認した場合:
|
||||
1. `applications.md` の status を "Evaluated" から "Applied" に update
|
||||
2. Report の Section G を final responses で update
|
||||
3. Next step として LinkedIn outreach 用の `/career-ops contacto` を提案
|
||||
|
||||
## Scroll handling
|
||||
|
||||
Form questions が visible area を超える場合:
|
||||
- 候補者に scroll して別 screenshot を共有してもらう
|
||||
- または remaining questions を paste してもらう
|
||||
- Form 全体を cover するまで iteration で処理
|
||||
Reference in new issue
Block a user