Automated Slack introductions for new team members - Schedule virtual coffee chats and team meetups
Features β’ Quick Start β’ Configuration β’ Contributing
| Feature | Description |
|---|---|
| π€ Automated Introductions | Auto-detect new hires and send welcome messages |
| β Coffee Chat Scheduling | Schedule random 1:1 introductions with team members |
| π Calendar Integration | Check availability before scheduling |
| π― Smart Matching | Match new starters with relevant team members |
| π Analytics | Track engagement and participation |
| β‘ Serverless | AWS Lambda for cost-effective scaling |
| π Reminders | Send follow-up reminders for scheduled meetups |
| Requirement | Version |
|---|---|
| Python | 3.11+ |
| AWS Account | With Lambda access |
| Slack App | With Bot Token |
| Slack Workspace | Admin access for app installation |
git clone https://github.com/CaputoDavide93/new-starters-meetup.git
cd new-starters-meetupcp .env.example .env
# Edit .env with your settingspip install -r requirements.txtcd deploy
./deploy.sh# Package the Lambda function
cd Layer
zip -r lambda_layer.zip python/
# Deploy using AWS CLI
aws lambda publish-layer-version \
--layer-name newstarters-deps \
--zip-file fileb://lambda_layer.zipSchedule the function to run periodically:
{
"schedule": "cron(0 9 ? * MON-FRI *)"
}| Variable | Description | Required |
|---|---|---|
SLACK_BOT_TOKEN |
Slack Bot OAuth token | β |
SLACK_SIGNING_SECRET |
Slack app signing secret | β |
SLACK_CHANNEL_ID |
Channel for introductions | β |
NEW_HIRE_CHANNEL |
New hire tracking channel | β |
MATCHING_ALGORITHM |
Matching strategy | β |
INTRO_DELAY_DAYS |
Days before first intro | β |
Required Bot Token Scopes:
channels:read
chat:write
users:read
users:read.email
im:write
# config.yaml
slack:
bot_token: "${SLACK_BOT_TOKEN}"
channel: "#new-starters"
matching:
algorithm: "random" # or "department", "role"
max_matches: 3
delay_days: 2
messages:
welcome: "π Welcome to the team, {name}!"
intro_request: "β Time for a virtual coffee chat?"python src/main.py --trigger-nowpython src/main.py --dry-runpython src/main.py --list-pendinggraph LR
A[CloudWatch Event] --> B[Lambda Function]
B --> C[Slack API]
C --> D[Send DMs]
B --> E[DynamoDB]
E --> F[Track Matches]
new-starters-meetup/
βββ src/
β βββ main.py # Entry point
β βββ slack_client.py # Slack API wrapper
β βββ matcher.py # Matching algorithm
β βββ scheduler.py # Meetup scheduling
βββ Layer/
β βββ python/ # Lambda dependencies
βββ deploy/
β βββ deploy.sh # Deployment script
βββ scripts/
β βββ local_test.py # Local testing
βββ .env.example # Environment template
β Slack API Error: not_authed
# Verify your bot token
curl -X POST https://slack.com/api/auth.test \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"β Lambda Timeout
Increase Lambda timeout in AWS Console:
- Recommended: 30 seconds
- Max for batch processing: 5 minutes
β No New Starters Found
Check the new hire detection channel and verify:
- Channel ID is correct
- Bot has access to the channel
- New hire messages match expected format
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please see SECURITY.md for reporting vulnerabilities.
This project is licensed under the MIT License - see the LICENSE file for details.