ooligo
claude-skill

AI スクリーナーのスコア分散を測定し、根拠のあるカットオフを設定する

Difficulty
上級
Setup time
2-4 hours
For
talent-acquisition · recruiter · recruiting-ops
Recruiting & TA

Stack

固定した候補者サンプルを AI スクリーナーに N 回かけ直し、スコアの変動を評価基準ごとに分解して、推奨カットオフと手動レビュー帯を返す Claude Skill です。中心となる指標は 1 回引きの反転率、つまり同一の応募がカットオフの反対側に落ちる実行の割合です。スクリーナーの挙動が実際に左右されるのはこの数字ですが、これを把握しているチームはほとんどありません。

この監査が必要になる理由

2026年6月、Dan Kinsky 氏は HackerRank がオープンソース化したばかりの採用エージェントに、まったく変更していない履歴書 PDF を100回通しました。デフォルト設定は gemma3:4b、temperature は 0.1 です。ほぼ同一の出力を期待して当然の低さです。返ってきたスコアは100点満点で66から99でした。85点のカットオフに対し、同じ候補者が同じ履歴書で、実行の約65%で不合格になっています。

同じ検証の2つ目の構成のほうが示唆に富みます。Gemini-3.1-flash-lite で50回実行したところ、スコアは45から65に集まり、60点のカットオフに対する不合格率は28%まで下がりました。不安定さの性質は同じですが、結果への影響はまるで違います。カットオフがスコア密度の別の位置にあったからです。

ベンダーが提示する信頼性の数値があなたの問いに答えられないのは、これが理由です。候補者の合否がコイン投げになっているかどうかを決める数字は、ベンダーのモデルと、あなたのカットオフと、あなたの応募者プールの三者が組み合わさった性質です。API のあなた側で測るしかありません。

temperature を 0 にしても解決しない理由

明白に見える対策を、2つの事実が潰します。

第一に、現行のフロンティア Claude モデル — Claude Opus 5、Opus 4.8、Opus 4.7、Sonnet 5、Fable 5 — では temperaturetop_ptop_k が Messages API から削除されており、これらを含むリクエストは 400 を返します。スクリーナーがこれらの上で動いているなら、そもそもつまみが存在しません。temperature をゼロに固定したと言うベンダーは、実際に提供しているものとは別のモデルの話をしています。

第二に、temperature 0 が使える環境でも、それは再現性を買いません。Thinking Machines Lab は Qwen3-235B-A22B-Instruct-2507 から temperature 0 の貪欲デコードで1,000件の生成をサンプリングし、80件の異なる出力を得ました。最初の分岐はトークン103です。原因は浮動小数点の運ではありません。推論カーネルがバッチ不変ではないため、リクエストが通る簡約木が、同じバッチを共有した他のリクエスト数に依存するのです。同社のバッチ不変カーネルは実際に1,000件すべて同一の出力を出しますが、実行時間は約1.6倍になり、ホスト型のスクリーニング製品でこれを積んでいるものはありません。

つまりスコアは動きます。監査の仕事は、どれだけ、どこで動くのか、そしてそれが誰かの合否を変えるのかを突き止めることです。

この skill の動作

バンドル内の SKILL.md から駆動される6ステップです。

まず references/1-harness-freeze-sheet.md を使ってハーネスを凍結します。正確なモデル ID、プロンプトのバージョン、評価基準のバージョン、パーサーのバージョンです。実行の途中で新しいスナップショットに解決される可変エイリアスは、エラーを一切出さないままサンプルを2つの母集団に割ってしまいます。

次に references/2-sample-frame.md に従って層化サンプルを組みます。デフォルトは40人で、カットオフ帯の内側に24人、両側に十分離れたアンカーを8人ずつです。アンカーはチームが省略しがちなステップですが、省略は精度を下げるのではなく算術そのものを壊します。信頼性とは候補者間分散を全分散で割ったものです。カットオフ付近だけからサンプリングすれば分子を構造的に切り詰めたことになり、比は潰れてスクリーナーは実態より悪く見えます。この skill は片側のアンカーが6人未満の場合、信頼性の比を出すことを拒否します。

候補者あたり15回の反復がデフォルトです。これは快適さではなく、宣言できる区間を基準に選んでいます。15回から推定した標準偏差の95%信頼区間は、推定値の約0.73倍から1.58倍に広がります。30回にすると約0.80倍から1.34倍まで狭まります。社内のカットオフ判断には15回、チーム外の誰かがその数字を引用してくる場面では30回を使ってください。

続いて基準ごとに分解します。本当の発見が出てくるのはここです。HackerRank の検証は、1つの評価基準セットの中に2種類の異なる病理を露出させました。technical skills は100回中98回で 8/10 を返しました。安定していて弁別力もあります。projects は最も詳細な基準文と例示を備えていながら、セット中で最も騒がしい項目でした。そして experience は全実行で 25/25 を返しました。一見すると盤石ですが、実際には死重です。職位に関係なく満点を与えるため候補者を一度も分離せず、そのうえ定数として全体スコアの見かけ上の信頼性を水増しします。この skill はこうしたケースを NOISYDEAD として明示的にラベル付けします。そうしなければ、同じ数字が並んだ列は精度として読まれてしまうからです。

最後に、生の1回引きから反転率を計算し、カットオフと手動レビュー帯を出力します。帯はカットオフ ± プールした候補者内標準偏差の2倍で、スコア分布が評価基準の整数値に固まる場合は経験的な率まで広げます。実際、固まるのが通例です。出力形式は references/3-variance-report-template.md に骨組みがあります。

使ってはいけない場面

バイアス監査の代わりにはなりません。 NYC Local Law 144 は独立した監査人を要求し、性別・人種・民族のカテゴリ間で選抜率を測るものです。あちらは差別的インパクト、こちらは一貫性です。2つの監査は統計を1つも共有しておらず、スクリーナーは一方を落として他方を通ることが、どちらの向きにも起こり得ます。こちらを実行しても、あちらの義務は何も果たされません。

スクリーナーが機能している証明にはなりません。 信頼性は妥当性ではありません。experience の事例が警告のすべてです。完璧に安定していて、何も測っていません。これはスコアがノイズであることは示せますが、安定したスコアがシグナルであることは示せません。

候補者レコードへの書き込みなしに再実行できないスクリーナーには使わないでください。 下の失敗モードを参照してください。

決定的なスクリーナーには使わないでください。 キーワードフィルタやルールエンジンは構造上つねに同じ出力を返します。健全性確認として3回呼んで、そこで止めてください。

訴訟や請求書面が届いた後には使わないでください。 その時点でスコア履歴は証拠開示の対象であり、主導するのは法務です。同じ判断を対象にした社内の並行分散調査は、作らずに済んだ文書です。

失敗モードとそのガード

平均値の標準誤差を報告してしまう。 これは N の平方根で縮み、安心できる数字を生み、そして本番のスクリーナーが実行していない手続きを説明しています。本番は1回引いて決めます。ガード: レポートのテンプレートにその欄はなく、ステップ5は生の1回引きだけから反転率を計算します。

結果キャッシュが分散ゼロを報告する。 スクリーナーが候補者 ID をキーにしたキャッシュの背後にあると、各反復は保存済みの回答を返し、監査はスクリーナーが完璧に安定していると結論します。これは無言で起こり、この監査が自信を持って誤った答えを出す最も可能性の高い経路です。ガード: 凍結シートは、統計を計算する前に、実行ごとに異なるリクエスト ID と、異なる生ペイロードの件数を記録することを要求します。異なるペイロードが1件なら、測ったのはキャッシュです。プレフィックスのキャッシュは問題なく、残す価値があります。キャッシュされた入力の読み取りは入力単価の約10分の1で課金され、プレフィックスの再利用はサンプリング分散を除去しないからです。

本番環境で実在の候補者を再実行する。 実在の応募者に対する15回の反復は、そのレコードに15件のスコアイベントを書き込み、ATS へ15回 webhook を発火させ、最悪の場合は自動不採用メールを15回送ります。ガード: 凍結シートの副作用クリアランスはブロッキングです。サンドボックスの求人か、副作用がないと確認済みの呼び出し経路か、どちらかがなければ監査は始まりません。

1つの求人を監査して一般化する。 ばらつきは、評価基準とモデルと応募者プールの組み合わせの性質です。ガード: レポートのスコープ行が数字を1つの求人、1つの基準バージョン、1つのモデルスナップショットに縛り、有効期限ブロックが何によって無効化されるかを名指しします。

コストとスループット

デフォルトの実行は40人 × 15反復 = 600評価です。コストの体系は2つあり、桁が違います。

自社の API キーで回す場合、入力約6,000トークン・出力800トークン程度のスクリーニングプロンプトは、Claude Haiku 4.5 で1評価あたり約 $0.01 です。入力/出力が100万トークンあたり $1.00 / $5.00 なので、600回の実行全体で約 $6 になります。Claude Opus 5 では100万トークンあたり $5.00 / $25.00 で、同じプロンプトが約 $0.05、全体で約 $30 です。並列度8、1呼び出し約8秒なら、実時間は約10分です。

スクリーニング単位で課金するベンダー SKU が1評価 $2 なら、600評価は $1,200 です。K を400ではなく40にしている理由がこれで、凍結シートには216回に減らした構成 (帯の候補者24人、両側にアンカー6人ずつ、各6回) も用意してあり、区間が広くなることをレポートに明記します。

代替案との比較

現状維持 — 1回採点してその数字を信じる。 どこでもこれがデフォルトであり、HackerRank のデータがその代償を示しています。同一の履歴書に対する65%の不合格率が、誰も2回走らせないために見えないままです。

エクスポートしたスコアのスプレッドシート。 安価ですが、肝心な2点を外します。平均とその標準誤差を計算しますが、それは本番が決して使わない統計です。さらに合計値の上で作業するため、騒がしい基準と死んだ基準を分離できません。基準の一行を書き直すのか削除するのかを決めるのは、まさにその区別です。

ベンダーの信頼性係数。 ベンダーのデータ、ベンダーの評価基準、ベンダーのスコア分布の上で計算されたものです。同じ検証の2構成における65%と28%の差が、それが移転しないことの証明です。判断に効く数字は、あなたのカットオフがあなたの密度のどこに落ちるかに依存します。

正直なスコープを述べます。これは測定器であって、お墨付きではありません。スクリーニングスコアのうちどれだけが候補者で、どれだけが引きなのかを教え、その差が誰の面接機会を決めることのないようにする帯を渡します。義務の側面は ai-interview-compliance-audit-skill と組み合わせ、この監査が意図的に計算しない統計については ai-screening-bias を読んでください。

Files in this artifact

Download all (.zip)