The weekly roster is determined currently by a google app script that also reaches out to bamboohr and keeps a history of folks who have talked. We could convert this to a plugin for the bot and then possibly add functionality where folks could respond to the bot to remove themselves for that week.
Implementation Plan
Overview
The Owners' Call Plugin will automate the management of our weekly Owners' Call roster within Slack. This plugin will simplify the current manual process which involves Google Sheets, Google Docs, and manual Slack posts.
Current Process Analysis
The current process involves:
- Managing speaker lists and history in Google Sheets
- Manual checking for people who need to skip or alter their position
- Publishing to a Google Doc
- Copying and pasting into Slack
- Managing roster changes before/during/after the call
- Recording and sharing call recordings
Simplified Implementation Approach
Rather than replicating the entire Google Sheets functionality, we can create a more streamlined solution:
Core Functionality (MVP)
-
Command-Based Roster Management
- Generate and display the current roster on demand
- Allow users to request to skip or change position via Slack commands
- Update and store roster history
-
Automated Notifications
- Morning announcement for skip/position change requests
- Pre-call roster posting in the appropriate channel
- Post-call recording link sharing
-
Basic Data Storage
- Store roster data in a simple JSON format
- Track speaker history and last-spoke dates
- Maintain "skip" status
Implementation Plan
Phase 1: Core Plugin Setup
-
Create basic plugin structure:
plugins/
owners-call/
index.ts
types.ts
commands.ts
storage.ts
scheduler.ts
-
Implement data models:
Speaker: name, status, order
Roster: date, speakers, alternates
SkipRequest: user, date, reason
-
Create command patterns and basic handlers:
/oc-roster - Display current roster
/oc-skip - Request to skip
/oc-position - Request position change
/oc-info - Show dial-in information
Phase 2: Storage Implementation
-
Use simple JSON file storage to maintain:
- Speaker list and order
- Speaking history
- Skip requests
-
Implement roster generation logic:
- Draft roster from history list
- Handle skipped speakers
- Track speaking history
-
Create roster update functionality:
- Process skip requests
- Update speaker order
Phase 3: Scheduler and Notifications
-
Implement scheduled messages:
- 8:00 AM CT - Request for changes post
- 9:00 AM CT - Generate and post roster
- Post-call recording notification
-
Create message templates:
- Roster announcement with formatting
- Skip request prompts
- Recording availability notice
Phase 4: Optional Enhancements
If time permits, implement:
- Integration with Google Sheets (for transition period)
- Holiday detection and handling
- Recording management automation
- Analytics for speaking frequency
Development Timeline
- Week 1: Phase 1 - Core Plugin Setup
- Week 2: Phase 2 - Storage Implementation
- Week 3: Phase 3 - Scheduler and Notifications
- Week 4: Testing and Refinement
- Week 5: Optional Enhancements (if needed)
Migration Strategy
- Run both systems in parallel for 2-4 weeks
- Validate data consistency and feature parity
- Train admins on new commands and workflow
- Switch to fully Slack-based solution
Success Metrics
- Reduction in manual steps for admins
- Accurately maintained speaker history
- Properly handled skip requests
- Timely notifications and announcements
- User satisfaction with the new workflow
The weekly roster is determined currently by a google app script that also reaches out to bamboohr and keeps a history of folks who have talked. We could convert this to a plugin for the bot and then possibly add functionality where folks could respond to the bot to remove themselves for that week.
Implementation Plan
Overview
The Owners' Call Plugin will automate the management of our weekly Owners' Call roster within Slack. This plugin will simplify the current manual process which involves Google Sheets, Google Docs, and manual Slack posts.
Current Process Analysis
The current process involves:
Simplified Implementation Approach
Rather than replicating the entire Google Sheets functionality, we can create a more streamlined solution:
Core Functionality (MVP)
Command-Based Roster Management
Automated Notifications
Basic Data Storage
Implementation Plan
Phase 1: Core Plugin Setup
Create basic plugin structure:
Implement data models:
Speaker: name, status, orderRoster: date, speakers, alternatesSkipRequest: user, date, reasonCreate command patterns and basic handlers:
/oc-roster- Display current roster/oc-skip- Request to skip/oc-position- Request position change/oc-info- Show dial-in informationPhase 2: Storage Implementation
Use simple JSON file storage to maintain:
Implement roster generation logic:
Create roster update functionality:
Phase 3: Scheduler and Notifications
Implement scheduled messages:
Create message templates:
Phase 4: Optional Enhancements
If time permits, implement:
Development Timeline
Migration Strategy
Success Metrics