Skip to content

AI Meeting Recording Integration Frontend#243

Open
jhodapp wants to merge 17 commits intomainfrom
feature/146-ai-meeting-integration-testing
Open

AI Meeting Recording Integration Frontend#243
jhodapp wants to merge 17 commits intomainfrom
feature/146-ai-meeting-integration-testing

Conversation

@jhodapp
Copy link
Member

@jhodapp jhodapp commented Dec 24, 2025

Summary

Frontend components for the AI-powered meeting recording integration, enabling coaches and coachees to manage recordings, view transcripts, and review AI-extracted action items.

Key Features

  • Settings Page: Integration configuration with Recall.ai API key management
  • Privacy Controls: Dual AI privacy level settings for coach and coachee
  • Session Transcript Tab: View transcribed meeting content with speaker diarization
  • AI Suggestions Panel: Review and accept/dismiss AI-extracted action items
  • Session Summary: AI-generated meeting summary display
  • Manual Extraction: Trigger LeMUR extraction from the UI

UI/UX Improvements

  • Session selector moved to site header for better navigation
  • Green status indicator on Transcript tab when transcript is available
  • Tab order optimized: Notes → Agreements → Actions → Summary → Transcript
  • Null-safe handling for optional due_by dates in actions list

Test Plan

  • Verify settings page displays and saves integration configuration
  • Test privacy level controls for both coach and coachee roles
  • Confirm transcript tab shows content with speaker labels
  • Test AI suggestions accept/dismiss workflow
  • Verify session summary displays correctly
  • Test manual extraction button triggers backend API

…on (Phase 2)

Add settings infrastructure for coach integration configuration and
per-relationship AI privacy settings:

Settings Page:
- Add /settings route with layout matching existing app structure
- SettingsContainer with Integrations and Relationships tabs
- Coach-only access (coachees see informational message)

Integration Settings (coach-only):
- Google Account connection status and OAuth flow trigger
- Recall.ai API key input with save and verify functionality
- AssemblyAI API key input with save and verify functionality
- Status badges showing connection/verification state

Relationship Settings (coach-only):
- Per-coachee Google Meet URL configuration
- Per-relationship AI privacy level selection:
  - Full: All AI features (recording, transcript, suggestions)
  - Transcribe Only: Text transcription without video/audio storage
  - None: No AI features for privacy-conscious clients
- Visual privacy level selector with icons and descriptions

Type Definitions:
- Add AiPrivacyLevel enum to coaching-relationship types
- Add meeting_url and ai_privacy_level to CoachingRelationship
- Add UserIntegration types for API credentials status
- Add MeetingRecording, Transcription, TranscriptSegment types
- Add AiSuggestedItem types for AI-suggested actions/agreements

API Updates:
- Add user-integrations API module with hooks
- Implement coaching relationship update for meeting_url and ai_privacy_level
- Link Settings in user-nav dropdown

Relates to: #146
Add frontend components for the AI meeting recording and transcription feature:

API Modules:
- meeting-recordings.ts: Recording start/stop, transcript fetching with polling
- ai-suggestions.ts: Accept/dismiss AI-detected actions and agreements

Components:
- meeting-controls.tsx: Join Meet button + Start/Stop recording controls
- session-transcript.tsx: Displays transcript with segments and AI suggestions
- transcript-segment.tsx: Single utterance with speaker label and sentiment
- session-summary.tsx: AI-generated session summary with empty state
- ai-suggestions-panel.tsx: Groups AI-detected actions/agreements
- ai-suggestion-card.tsx: Accept/dismiss card for individual suggestions

Integrations:
- Added Summary tab to coaching-tabs-container (4th tab after Actions)
- Added Transcript tab to overarching-goal-container with green dot indicator
- Added MeetingControls to coaching session page header

Relates to #146
- Add polling to transcript hooks for automatic updates (5s interval)
- Fix empty POST body type (null → {} for TypeScript compatibility)
- Unify user integrations API to single endpoint
- Simplify meeting controls header layout
- Create HeaderSessionSelector component that only renders on coaching session pages
- Add session selector to site header (left of theme toggle and user nav)
- Remove duplicate session selector from coaching session page
- Add polling (5s interval) to useAiSuggestions hook for automatic updates
- Increase width to w-64/md:w-72/lg:w-80 for better content display
- Remove restrictive pr-2 padding that clipped dropdown arrow
- Increase chevron icon size from h-4 to h-5 for better visibility
- Add shrink-0 to prevent icon compression
- Add Extract Actions/Agreements menu items to meeting controls
- Add coachee relationship settings for privacy level consent
- Add auto-approve AI suggestions toggle to integration settings
- Display AI extraction results (actions/agreements) in session summary
- Update coaching relationship types for dual privacy levels
- Add API functions for manual LeMUR extraction endpoints
- Remove transcript tab from overarching goals container
- Add transcript tab with green status indicator to coaching tabs
- Reorder tabs: Notes, Agreements, Actions, Summary, Transcript
- Green dot shows when transcript is available (completed status)
- Replace relationship list with dropdown to select one at a time
- Coach view: Select coachee dropdown for meeting URL and AI privacy config
- Coachee view: Select coach dropdown for privacy consent settings
- Cleaner UI that scales better with many relationships
- Add 'Create Meet' button when no meeting URL is set
- Call backend API to create Google Meet via user's connected account
- Pass user_id parameter to OAuth authorize endpoint
- Add createGoogleMeet API method
- Read google=connected query parameter after OAuth redirect
- Show success toast notification when Google account is connected
- Auto-switch to integrations tab and refresh data
- Clean up URL by removing query parameter
…ation

- Display indicator showing which option the other party has selected
- Add explanatory text that most restrictive choice will be respected
- Both coach and coachee can select any level freely
- Add assigned_to_name and due_by fields to ExtractedAction
- Update ExtractActionsResponse for async processing (status/message)
@jhodapp jhodapp changed the title Feat: AI Meeting Recording Integration Frontend AI Meeting Recording Integration Frontend Jan 4, 2026
Add standalone Vite + React prototype for previewing the AI transcription
insights feature. Run with `cd prototype && npm install && npm run dev`.
@jhodapp jhodapp self-assigned this Feb 3, 2026
@jhodapp jhodapp added the prototype Prototyping a major new feature. label Feb 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prototype Prototyping a major new feature.

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant