Skip to content

🀝 Slack bot for automated 1:1 intro meetings. AWS Lambda + Google Calendar + Azure AD integration for team onboarding.

License

Notifications You must be signed in to change notification settings

CaputoDavide93/New-Starters-Meetup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘‹ New Starters MeetUp

Automated Slack introductions for new team members - Schedule virtual coffee chats and team meetups

Python AWS Lambda Slack License: MIT

Features β€’ Quick Start β€’ Configuration β€’ Contributing


✨ Features

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

πŸ“‹ Prerequisites

Requirement Version
Python 3.11+
AWS Account With Lambda access
Slack App With Bot Token
Slack Workspace Admin access for app installation

πŸš€ Quick Start

1. Clone the Repository

git clone https://github.com/CaputoDavide93/new-starters-meetup.git
cd new-starters-meetup

2. Configure Environment

cp .env.example .env
# Edit .env with your settings

3. Install Dependencies

pip install -r requirements.txt

4. Deploy to AWS

cd deploy
./deploy.sh

☁️ AWS Deployment

Lambda Function Setup

# 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.zip

CloudWatch Event Rule

Schedule the function to run periodically:

{
  "schedule": "cron(0 9 ? * MON-FRI *)"
}

βš™οΈ Configuration

Environment Variables

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 ❌

Slack App Permissions

Required Bot Token Scopes:

channels:read
chat:write
users:read
users:read.email
im:write

Configuration File

# 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?"

πŸ“– Usage

Manual Trigger

python src/main.py --trigger-now

Test Mode

python src/main.py --dry-run

View Pending Introductions

python src/main.py --list-pending

πŸ”§ Architecture

graph LR
    A[CloudWatch Event] --> B[Lambda Function]
    B --> C[Slack API]
    C --> D[Send DMs]
    B --> E[DynamoDB]
    E --> F[Track Matches]
Loading

Project Structure

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

πŸ› Troubleshooting

Common Issues

❌ 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

🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ”’ Security

Please see SECURITY.md for reporting vulnerabilities.


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘€ Author

Davide Caputo

GitHub Email


⭐ If this tool helped you, please give it a star! ⭐

About

🀝 Slack bot for automated 1:1 intro meetings. AWS Lambda + Google Calendar + Azure AD integration for team onboarding.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages