glebis/meeting-processor
This skill should be used when processing meeting transcripts to auto-detect meeting type (leadgen, partnership, coaching, internal) and extract type-specific structured analysis. Triggers on "process meeting", "analyze meeting", "meeting summary", or after syncing new Fathom/Granola transcripts.
npx skills add https://github.com/glebis/claude-skills --skill meeting-processor
Intelligent meeting transcript processor that auto-detects meeting type and applies type-specific extraction with optional interactive clarification.
/fathom --today, /granola export)YYYYMMDD-*.mdcoaching-session-summarizer skill insteadpip install openai pyyaml
Requires CEREBRAS_API_KEY environment variable (uses Cerebras API with llama-3.3-70b).
| Type | Description | Key Extractions |
|------|-------------|-----------------|
| leadgen | Sales/business development calls | Commitments, pain points, budget, timeline, decision makers, deal stage, sentiment |
| partnership | Collaboration/partnership exploration | Opportunity overview, value proposition, strategic alignment, technical needs, fit assessment |
| coaching | Coaching/mentoring sessions | Insights, decisions, action items, themes, emotional arc, techniques, session quality |
| internal | Internal team meetings | Coming soon |
Run the processor, which auto-detects meeting type and asks clarifying questions:
python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --mode interactive
Interactive flow:
__INTERACTIVE_QUESTIONS__ markersprocess_with_answers.pyHandling interactive questions:
When the script exits with code 2, parse the output for questions JSON. Each question has:
question: The question textheader: Short label (used as answer key)options: Array of {label, description} for AskUserQuestionAfter collecting answers, create two temp files:
questions.json — the original questions context (includes partial_data, meeting_type, transcript_file)answers.json — map of {header_lowercase: selected_label}Then run:
python3 ~/.claude/skills/meeting-processor/scripts/process_with_answers.py questions.json answers.json
Extract only high-confidence information without user interaction:
python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --mode batch
Skip auto-detection:
python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --type leadgen
python3 ~/.claude/skills/meeting-processor/scripts/process.py <transcript-file> --type partnership
Analysis is appended to the transcript file as a ## Meeting Analysis section. Frontmatter is updated with meeting_type, processed_date, and processing_mode.
After the meeting analysis is complete (Step 1), automatically link any matching meeting-prep notes to the session note. This replaces the need to manually run /meeting-prep link.
date from frontmatter (YYYYMMDD format)participants from frontmatter (list of names)participants field, extract names from the transcript header or attendee list find <MEETINGS_DIR> -name "YYYYMMDD-prep-*" -type f 2>/dev/null
Where YYYYMMDD is the session date.
date field matches the session dateparticipant field matches one of the session's participants (fuzzy: check both full name and first name, case-insensitive)session_note field is empty ("") — skip already-linked prep notesIn the prep note:
session_note: "[[session-note-filename]]" (without .md extension)status: doneIn the session note:
## See also section exists, add - [[YYYYMMDD-prep-participant-slug]] to it ## Prep Note
- [[YYYYMMDD-prep-participant-slug]]
MEETINGS_DIR from the session note path, not from hardcoded valuesconfig.yaml is available, read prep_notes.prefix (default: prep) and prep_notes.type_tag (default: meeting-prep)Take glebis/meeting-processor from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.