interns_manager / README.md
banao-tech's picture
Update README.md
94f1944 verified
---
title: ai_vidya Pipeline Agent
emoji: πŸ€–
colorFrom: purple
colorTo: blue
sdk: docker
app_file: app.py
pinned: false
---
# ai_vidya_bot
Slack agent for the AI Department intern pipeline.
Manages Week 0 through Probation (W1 + W2) in #ai_vidya.
## File structure
```
ai_vidya_bot/
β”œβ”€β”€ main.py # Flask app + Slack event endpoint
β”œβ”€β”€ router.py # Event classifier and dispatcher
β”œβ”€β”€ handlers.py # Four event handlers
β”œβ”€β”€ scheduler.py # APScheduler cron jobs
β”œβ”€β”€ sheets.py # Google Sheets read/write layer
β”œβ”€β”€ parser.py # Report format parser and quality scorer
β”œβ”€β”€ prompts.py # Claude evaluation prompts (Week 0, W1, W2)
β”œβ”€β”€ requirements.txt
└── .env.example
```
## Setup
### 1. Google Sheets
Create a Google Sheet with these 7 tabs (exact names):
- `candidates`
- `reports_log`
- `signals_log`
- `warnings_log`
- `commitments`
- `evaluations`
- `decisions_log`
Add headers to each tab matching the column names in `sheets.py`.
Create a Google Service Account, download the JSON key,
and share the sheet with the service account email.
### 2. Slack app
Create a Slack app at https://api.slack.com/apps
Required OAuth scopes:
- `chat:write`
- `channels:history`
- `im:write`
- `im:read`
- `users:read`
Enable Event Subscriptions. Set the request URL to:
`https://your-space.hf.space/slack/events`
Subscribe to bot events:
- `message.channels`
Install the app to your workspace and invite it to #ai_vidya.
### 3. HuggingFace Spaces
Create a new Space (SDK: Docker or Gradio).
Add all variables from `.env.example` as Secrets in the Space settings.
Upload the `service_account.json` file and set `GOOGLE_SERVICE_ACCOUNT_PATH`
to its path in the Space filesystem.
### 4. Deploy
```bash
pip install -r requirements.txt
gunicorn main:app --bind 0.0.0.0:7860
```
## Adding a candidate
POST to `/admin/add_candidate`:
```json
{
"slack_user_id": "U12345",
"name": "Arjun Mehta",
"cohort_id": "COHORT_001",
"ft_slack_id": "U67890",
"hr_slack_id": "U11111",
"week0_start_date": "2025-05-12"
}
```
## Logging a Week 2 commitment
POST to `/admin/log_commitment` after the Day 6 FT conversation:
```json
{
"candidate_id": "CAND_001",
"description": "Streaming component working and tested",
"due_date": "2025-05-21",
"due_time": "EOD"
}
```
## Report format (candidates post this in #ai_vidya)
```
Name: [full name]
Date & Time: [now]
What I worked on: [description]
What I got stuck on: [specific blocker or 'nothing today']
What I tried to resolve it: [what you attempted]
Current status: [where things stand]
```
## Cron schedule (IST)
| Time | Job |
|------|-----|
| 9:00 AM | Morning FT brief |
| 12:30 PM | Missed report check (noon window) |
| 5:30 PM | Missed report check (5pm window) |
| 6:00 PM | EOD signal questions to FT |
| 6:30 PM (Wed) | Deadline check β€” Wednesday deliverable |
| 12:00 PM (Fri) | Deadline check β€” Friday deliverable |
| 8:00 PM | End-of-stage evaluation (Day 5 + Day 10) |
| 10:30 PM | Missed report check (10pm window) |