jeremylongshore

granola-observability

@jeremylongshore/granola-observability
jeremylongshore
1,004
123 forks
Updated 1/18/2026
View on GitHub

Monitor Granola usage, analytics, and meeting insights. Use when tracking meeting patterns, analyzing team productivity, or building meeting analytics dashboards. Trigger with phrases like "granola analytics", "granola metrics", "granola monitoring", "meeting insights", "granola observability".

Installation

$skills install @jeremylongshore/granola-observability
Claude Code
Cursor
Copilot
Codex
Antigravity

Details

Pathplugins/saas-packs/granola-pack/skills/granola-observability/SKILL.md
Branchmain
Scoped Name@jeremylongshore/granola-observability

Usage

After installing, this skill will be available to your AI coding assistant.

Verify installation:

skills list

Skill Instructions


name: granola-observability description: | Monitor Granola usage, analytics, and meeting insights. Use when tracking meeting patterns, analyzing team productivity, or building meeting analytics dashboards. Trigger with phrases like "granola analytics", "granola metrics", "granola monitoring", "meeting insights", "granola observability". allowed-tools: Read, Write, Edit version: 1.0.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io

Granola Observability

Overview

Monitor Granola usage, track meeting metrics, and gain insights into team productivity.

Prerequisites

  • Granola Business or Enterprise plan
  • Admin access for organization metrics
  • Analytics destination (optional: BI tool)

Built-in Analytics

Dashboard Metrics

## Granola Admin Dashboard

Accessible at: Settings > Analytics

Metrics Available:
- Total meetings captured
- Meeting hours per week
- Active users
- Notes shared
- Action items created
- Integration usage

Individual Metrics

## Personal Analytics

View at: Profile > Activity

Metrics:
- Meetings this month
- Time in meetings
- Notes created
- Action items assigned
- Sharing activity

Key Metrics to Track

Usage Metrics

MetricDescriptionTarget
Adoption RateActive users / Total users> 80%
Capture RateRecorded / Eligible meetings> 70%
Edit RateNotes edited / Notes created> 50%
Share RateNotes shared / Notes created> 60%

Quality Metrics

MetricDescriptionTarget
Action Item DetectionAI-detected / Actual> 90%
Transcription AccuracyCorrect words / Total> 95%
User SatisfactionSurvey score> 4.0/5.0

Efficiency Metrics

MetricDescriptionCalculation
Time SavedMinutes saved per meeting~20 min
Follow-up SpeedTime to share notes< 10 min
Action CompletionActions done / Actions created> 80%

Custom Analytics Pipeline

Export to Data Warehouse

# Zapier → BigQuery Pipeline

Trigger: New Granola Note

Transform:
  meeting_id: {{note_id}}
  meeting_date: {{date}}
  duration_minutes: {{duration}}
  attendee_count: {{attendees.count}}
  action_item_count: {{action_items.count}}
  word_count: {{transcript.word_count}}

Load:
  Destination: BigQuery
  Dataset: meetings
  Table: granola_notes

Schema Design

-- BigQuery Table Schema
CREATE TABLE meetings.granola_notes (
  meeting_id STRING NOT NULL,
  meeting_title STRING,
  meeting_date DATE,
  start_time TIMESTAMP,
  end_time TIMESTAMP,
  duration_minutes INT64,
  attendee_count INT64,
  attendees ARRAY<STRING>,
  action_item_count INT64,
  word_count INT64,
  workspace STRING,
  shared BOOLEAN,
  created_at TIMESTAMP
);

-- Aggregation View
CREATE VIEW meetings.daily_summary AS
SELECT
  meeting_date,
  COUNT(*) as total_meetings,
  SUM(duration_minutes) as total_minutes,
  AVG(attendee_count) as avg_attendees,
  SUM(action_item_count) as total_actions
FROM meetings.granola_notes
GROUP BY meeting_date;

Analytics Queries

-- Meeting frequency by user
SELECT
  user_email,
  COUNT(*) as meeting_count,
  SUM(duration_minutes) / 60 as hours_in_meetings
FROM meetings.granola_notes
WHERE meeting_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY user_email
ORDER BY meeting_count DESC;

-- Action item trends
SELECT
  DATE_TRUNC(meeting_date, WEEK) as week,
  SUM(action_item_count) as actions_created,
  COUNT(*) as meetings
FROM meetings.granola_notes
GROUP BY week
ORDER BY week;

-- Peak meeting times
SELECT
  EXTRACT(HOUR FROM start_time) as hour,
  COUNT(*) as meeting_count
FROM meetings.granola_notes
GROUP BY hour
ORDER BY hour;

Dashboards

Metabase/Looker Dashboard

Dashboard: Granola Analytics

Cards:
  1. Meeting Volume:
     Type: Time series
     Metric: Daily meeting count
     Timeframe: Last 30 days

  2. Active Users:
     Type: Number
     Metric: Unique users (7 days)

  3. Time in Meetings:
     Type: Bar chart
     Metric: Hours per team
     Breakdown: By workspace

  4. Action Items:
     Type: Line chart
     Metric: Actions created vs completed
     Timeframe: Last 90 days

  5. Top Meeting Types:
     Type: Pie chart
     Metric: Meeting count
     Breakdown: By template

  6. Adoption Trend:
     Type: Area chart
     Metric: Active users over time
     Timeframe: Last 6 months

Slack Reporting

# Weekly Digest Automation

Schedule: Every Monday 9 AM

Slack Message:
  Channel: #leadership
  Blocks:
    - header: "Weekly Meeting Analytics"
    - section:
        text: |
          *Last Week Summary*
          - Meetings: {{total_meetings}}
          - Hours: {{total_hours}}
          - Action Items: {{total_actions}}
          - Completion Rate: {{completion_rate}}%

          *Top Insights*
          - Busiest day: {{busiest_day}}
          - Most meetings: {{top_user}}
          - Largest meeting: {{largest_meeting}}

Health Monitoring

System Health Checks

## Daily Health Check

Automated Monitoring:
- [ ] Granola status page: status.granola.ai
- [ ] Integration connectivity
- [ ] Processing latency
- [ ] Error rate

Manual Weekly Check:
- [ ] User adoption trending up
- [ ] Transcription quality stable
- [ ] Action items being captured
- [ ] Integrations firing correctly

Alerting Rules

# PagerDuty/Slack Alerts

Alerts:
  - name: Processing Failure Spike
    condition: error_rate > 5%
    window: 15 minutes
    severity: warning
    notify: #ops-alerts

  - name: Integration Down
    condition: integration_health != "healthy"
    window: 5 minutes
    severity: critical
    notify: pagerduty

  - name: Low Adoption
    condition: weekly_active_users < 50%
    window: 7 days
    severity: info
    notify: #product-team

Meeting Intelligence

Pattern Analysis

## Meeting Patterns Report

Weekly Analysis:
1. Meeting distribution by day
2. Peak hours analysis
3. Average meeting duration trends
4. One-on-one vs group ratio
5. External vs internal meeting ratio

Monthly Analysis:
1. Meeting time per person
2. Action item completion rates
3. Cross-functional meeting frequency
4. Recurring meeting effectiveness

Insights Queries

-- Meeting efficiency score
WITH meeting_scores AS (
  SELECT
    meeting_id,
    CASE
      WHEN action_item_count > 0 THEN 1 ELSE 0
    END as had_actions,
    CASE
      WHEN duration_minutes <= 30 THEN 1 ELSE 0
    END as efficient_length,
    CASE
      WHEN attendee_count <= 5 THEN 1 ELSE 0
    END as right_sized
  FROM meetings.granola_notes
)
SELECT
  AVG(had_actions + efficient_length + right_sized) / 3 as efficiency_score
FROM meeting_scores;

Export & Reporting

Scheduled Reports

# Monthly Executive Report

Schedule: 1st of month

Content:
  - Total meetings YTD
  - Meeting time per employee
  - Action item velocity
  - Top meeting participants
  - Cost savings estimate

Format: PDF
Recipients: leadership@company.com

API Export

# If custom API access available (Enterprise)
curl -X GET "https://api.granola.ai/v1/analytics" \
  -H "Authorization: Bearer $GRANOLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2025-01-01",
    "end_date": "2025-01-31",
    "metrics": ["meeting_count", "duration", "action_items"]
  }'

Resources

Next Steps

Proceed to granola-incident-runbook for incident response procedures.

More by jeremylongshore

View all
rabbitmq-queue-setup
1,004

Rabbitmq Queue Setup - Auto-activating skill for Backend Development. Triggers on: rabbitmq queue setup, rabbitmq queue setup Part of the Backend Development skill category.

model-evaluation-suite
1,004

evaluating-machine-learning-models: This skill allows Claude to evaluate machine learning models using a comprehensive suite of metrics. It should be used when the user requests model performance analysis, validation, or testing. Claude can use this skill to assess model accuracy, precision, recall, F1-score, and other relevant metrics. Trigger this skill when the user mentions "evaluate model", "model performance", "testing metrics", "validation results", or requests a comprehensive "model evaluation".

neural-network-builder
1,004

building-neural-networks: This skill allows Claude to construct and configure neural network architectures using the neural-network-builder plugin. It should be used when the user requests the creation of a new neural network, modification of an existing one, or assistance with defining the layers, parameters, and training process. The skill is triggered by requests involving terms like "build a neural network," "define network architecture," "configure layers," or specific mentions of neural network types (e.g., "CNN," "RNN," "transformer").

oauth-callback-handler
1,004

Oauth Callback Handler - Auto-activating skill for API Integration. Triggers on: oauth callback handler, oauth callback handler Part of the API Integration skill category.