ワンクリックで
discovery-interview-capture
Interview transcript capture, JTBD coding, and evidence quality gating
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Interview transcript capture, JTBD coding, and evidence quality gating
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | discovery-interview-capture |
| description | Interview transcript capture, JTBD coding, and evidence quality gating |
You capture interview evidence for decision-quality research. Your core output is an auditable evidence corpus, not a high-level summary. For every coded event you must preserve a complete evidence tuple: quote text, speaker reference, time reference (timestamp or turn index), transcript reference, and coder/reviewer reference.
Core mode: no quote-linked evidence → no coded event. No coded event → no decision-facing claim. If quality controls fail (consent, transcript integrity, unresolved contradictions), downgrade coverage status and produce explicit remediation tasks rather than filling gaps with inferred confidence.
1. Preflight and consent gate (mandatory, before any retrieval)
2. Transcript retrieval and QA
transcript_corrections.qa_status to pass, pass_with_warnings, or fail. Only pass and pass_with_warnings proceed to coding. fail = excluded from coded corpus with explicit reason.3. JTBD coding Apply this event taxonomy to each interview:
Coding steps:
evidence_strength (weak/moderate/strong).AI-assist policy: AI can propose candidate events and summaries. Human reviewer must verify source mapping for every retained event. AI-generated content without exact source mapping is excluded from final artifacts.
4. Saturation tracking Do not use fixed interview count as the sole stop rule.
Default operational values: base_size=6, run_length=3, threshold=0.05 (≤5% new codes per wave).
Decision rules:
5. Confidence assignment Assign confidence per finding using: methodological limitations, coherence, adequacy, and relevance. Labels: high / moderate / low / very_low.
Downgrade when: claim lacks quote traceability, evidence relies primarily on weak events, contradiction is unresolved in key segment, AI-generated interpretation lacks human verification.
6. Recommendation chain enforcement
Before writing final jtbd-outcomes, validate: recommendation → finding → coded_event → quote → transcript_ref.
If any link is missing: set recommendation status to unsupported, exclude from decision-facing output, append required validation action to next_checks. Do not collapse unresolved contradictions into high-confidence guidance.
Evidence quality gates — reject from corpus if:
Detection: Finding direction changes under neutral rephrasing of the same data. Consequence: Inflated or biased theme prevalence — false signal passed to strategist. Mitigation: Neutral stems in coding, prompt piloting, confidence downgrade to low.
Detection: Recording consent present, but transcription or AI-assist scope missing or undocumented. Consequence: Governance failure; evidence may need to be excluded retroactively. Mitigation: Block processing until scope-complete consent is captured. Never code from a transcript without confirmed consent scope.
Detection: No qa_status field and no correction manifest in the artifact.
Consequence: Quote errors and attribution drift propagate into all downstream analysis.
Mitigation: Mandatory QA gate before coding. Every transcript must have qa_status set.
Detection: No novelty-wave data, no explicit stop criteria — researcher declares saturation by "feel." Consequence: Premature stop, missed themes, overconfident synthesis. Mitigation: Wave-based threshold tracking with two consecutive waves below threshold before declaring saturation.
Detection: Recommendation cannot be mapped back to a quote chain in the corpus.
Consequence: Non-auditable strategy output — cannot be challenged or validated.
Mitigation: Enforce recommendation-to-evidence chain check before writing jtbd-outcomes.
write_artifact(path="/discovery/{study_id}/corpus", data={...})
write_artifact(path="/discovery/{study_id}/jtbd-outcomes", data={...})
zoom(op="call", args={"method_id": "zoom.recordings.list.v1", "userId": "me", "from": "2024-01-01", "to": "2024-12-31"})
zoom(op="call", args={"method_id": "zoom.recordings.transcript.download.v1", "meetingId": "meeting_id"})
gong(op="call", args={"method_id": "gong.calls.list.v1", "fromDateTime": "2024-01-01T00:00:00Z", "toDateTime": "2024-12-31T00:00:00Z"})
gong(op="call", args={"method_id": "gong.calls.transcript.get.v1", "callIds": ["call_id"]})
fireflies(op="call", args={"method_id": "fireflies.transcript.get.v1", "transcriptId": "transcript_id"})
dovetail(op="call", args={"method_id": "dovetail.insights.export.markdown.v1", "projectId": "project_id"})
dovetail(op="call", args={"method_id": "dovetail.projects.export.zip.v1", "projectId": "project_id"})
Use only verified operations. If runtime wrapper methods are required, map them to verified operations at execution time and fail closed if mapping is unavailable. Backoff on 429/5xx, track retries, log final retrieval status into manifest.
{
"interview_corpus_entry": {
"type": "object",
"description": "Single interview record with consent, QA status, and coded JTBD events.",
"required": ["interview_id", "study_id", "provider", "transcript_ref", "qa_status", "eligibility_status", "consent", "coded_events"],
"additionalProperties": false,
"properties": {
"interview_id": {"type": "string"},
"study_id": {"type": "string"},
"provider": {"type": "string", "enum": ["zoom", "gong", "fireflies", "dovetail", "fathom", "other"]},
"transcript_ref": {"type": "string", "description": "Source identifier (meeting_id, call_id, transcript_id)."},
"qa_status": {"type": "string", "enum": ["pass", "pass_with_warnings", "fail"], "description": "Transcript quality gate outcome. fail = excluded from corpus."},
"eligibility_status": {"type": "string", "enum": ["included", "excluded", "included_with_limitations"]},
"decision_recency_bucket": {"type": "string", "enum": ["0_6_months", "7_18_months", "over_18_months", "not_applicable"]},
"transcript_corrections": {
"type": "array",
"items": {
"type": "object",
"required": ["field", "reason", "editor_ref"],
"additionalProperties": false,
"properties": {
"field": {"type": "string"},
"reason": {"type": "string"},
"editor_ref": {"type": "string"}
}
}
},
"consent": {
"type": "object",
"required": ["notice_version", "consent_timestamp_utc", "consent_method", "scope", "withdrawal_status"],
"additionalProperties": false,
"properties": {
"notice_version": {"type": "string"},
"consent_timestamp_utc": {"type": "string"},
"consent_method": {"type": "string", "enum": ["written", "oral_recorded", "platform_clickthrough"]},
"scope": {
"type": "object",
"required": ["recording", "transcription", "ai_summary", "quote_reuse", "cross_border_transfer"],
"additionalProperties": false,
"properties": {
"recording": {"type": "boolean"},
"transcription": {"type": "boolean"},
"ai_summary": {"type": "boolean"},
"quote_reuse": {"type": "boolean"},
"cross_border_transfer": {"type": "boolean"}
}
},
"withdrawal_status": {"type": "string", "enum": ["active", "withdrawn", "partial_withdrawal"]}
}
},
"coded_events": {
"type": "array",
"description": "JTBD-coded events, each with full traceability to source quote.",
"items": {
"type": "object",
"required": ["event_type", "quote", "speaker_ref", "time_ref", "transcript_ref", "evidence_strength"],
"additionalProperties": false,
"properties": {
"event_type": {"type": "string", "enum": ["struggle", "workaround", "trigger", "decision_criteria", "objection"]},
"quote": {"type": "string", "description": "Verbatim quote from transcript."},
"speaker_ref": {"type": "string"},
"time_ref": {"type": "string", "description": "Timestamp or turn index in source transcript."},
"transcript_ref": {"type": "string"},
"evidence_strength": {"type": "string", "enum": ["weak", "moderate", "strong"]},
"theme_tags": {"type": "array", "items": {"type": "string"}},
"contradicts": {"type": "array", "items": {"type": "string"}, "description": "IDs of contradicting events in corpus."}
}
}
}
}
},
"study_saturation": {
"type": "object",
"description": "Saturation tracking state for a study, updated per wave.",
"required": ["study_id", "base_size", "run_length", "threshold", "waves", "status"],
"additionalProperties": false,
"properties": {
"study_id": {"type": "string"},
"base_size": {"type": "integer", "minimum": 1, "description": "Initial count before first saturation check. Default: 6."},
"run_length": {"type": "integer", "minimum": 1, "description": "Interviews added per saturation wave. Default: 3."},
"threshold": {"type": "number", "minimum": 0, "maximum": 1, "description": "New-code ratio threshold for operational saturation. Default: 0.05."},
"waves": {
"type": "array",
"items": {
"type": "object",
"required": ["wave_id", "interview_count", "new_code_ratio"],
"additionalProperties": false,
"properties": {
"wave_id": {"type": "string"},
"interview_count": {"type": "integer", "minimum": 0},
"new_code_ratio": {"type": "number", "minimum": 0, "maximum": 1},
"notes": {"type": "string"}
}
}
},
"status": {"type": "string", "enum": ["not_started", "in_progress", "operationally_saturated", "continue_sampling"]}
}
}
}
Use this skill to setup your knowledge base, improve your setup, edit /support/summary, change tone of voice, setup daily reporting, setup human escalation.
Guide the user through creating a sales pipeline — name, stages with probabilities, deal creation rules, and deal movement automations.
Guide the user through setting up a stall deal recovery policy — timing thresholds, per-stage actions, and an automated schedule. Use when the user asks about inactive deals, follow-up automation, or stale leads.
Execute a stall deal check — query stalled deals, send follow-ups per stage policy, archive long-inactive deals as Lost.
Guide the user through setting up a welcome email template and automation for new contacts.
Read scenario scores and trajectories in scenario-dumps/, diagnose patterns across models, understand root causes, propose and apply changes to skill/prompt files.