Project Info
This project did not submit a demo video on Devpost.
Inspiration
We've all been there - opening our laptop with the best intentions to study or work, only to find ourselves two hours deep into YouTube, Reddit, or endlessly scrolling social media. Traditional productivity apps rely on self-reporting or simple website blockers that are easy to bypass. We wanted to create something different: a system that truly knows when you're slacking off and holds you accountable in ways you can't ignore. The idea came from a simple truth: we're accountable to others in ways we aren't to ourselves. If someone else knows you're wasting time, you're far more likely to get back on track. BigBro brings that external accountability into the digital workspace, using cutting-edge AI and computer vision to monitor both what you're doing and whether you're actually paying attention.
What it does
BigBro is a comprehensive productivity monitoring system that watches you work in two powerful ways: Task Monitoring: BigBro continuously captures screenshots of your current browser tab and sends it to Claude AI along with the URL and your stated task. Claude analyzes whether you're actually working toward your goal or if you've drifted off-task. If you're caught slacking for more than a few seconds, you accumulate strikes. Attention Monitoring: Using your webcam, BigBro tracks your face in real-time using MediaPipe and OpenCV. It detects three critical states: Sleeping: If your eyes close for more than a few seconds, an aggressive AI-generated wake-up message plays through Fish Audio's text-to-speech Looking Away: If you turn your head away from the screen for more than a few seconds, you get a strike Not Present: If you leave your desk for more than a few seconds, BigBro calls your phone via Vapi to bring you back The Strike System: Accumulate 2 strikes, and BigBro escalates. It automatically calls your accountability partner (yes, your mom) via Vapi's phone API to report that you're off-task. This creates real consequences that can't be dismissed with a click. Analytics Dashboard: A web interface shows your productivity stats, strike history, and session summaries, helping you understand your focus patterns over time.
How we built it
BigBro combines multiple cutting-edge technologies into a cohesive monitoring pipeline: Chrome Extension (Frontend) Built with Manifest V3 to access browser tabs and capture screenshots Background service orchestrates tab monitoring and coordinates with the vision server Popup interface for task setting and real-time status viewing Vision Analysis System (Python/Flask) Flask server running on port 8080 handles all computer vision processing MediaPipe Face Mesh detects 468 3D facial landmarks in real-time OpenCV solves the Perspective-n-Point problem to calculate precise head orientation Takes 6 key landmarks from MediaPipe (nose, chin, eyes, mouth) Maps 2D pixel coordinates to a 3D face model Computes yaw and pitch angles using Rodrigues transformation Takes 6 key landmarks from MediaPipe (nose, chin, eyes, mouth) Maps 2D pixel coordinates to a 3D face model Computes yaw and pitch angles using Rodrigues transformation Eye Aspect Ratio (EAR) calculated from MediaPipe landmarks to detect eye closure State machine with four states: focused, sleeping, looking_away, not_present AI Integration Claude (Anthropic): Primary AI for sophisticated task analysis, handles nuanced "on-task" vs "off-task" decisions Alert Systems Fish Audio: Text-to-speech for immediate local wake-up calls Vapi: Phone call automation that contacts accountability partners with actual phone calls Data Layer Supabase (PostgreSQL): Real-time database storing user settings, strikes, sessions, and events REST API for seamless integration across extension, vision server, and dashboard Row-level security for data protection
Challenges we ran into
3D Head Pose Estimation: Getting accurate head orientation from webcam footage was far more complex than expected. We needed to understand the mathematical relationship between MediaPipe's 2D landmark coordinates and 3D head rotation. After researching computer vision literature, we implemented OpenCV's solvePnP (Perspective-n-Point) algorithm, which solves for camera pose given corresponding 3D-2D point pairs. The Rodrigues transformation then converts the rotation vector into interpretable yaw/pitch angles. State Machine Priority Logic: Users can be in multiple "bad" states simultaneously (e.g., sleeping with head tilted down looks like both sleeping AND looking away). We had to implement a priority system where sleeping takes precedence over looking away, and each state transition properly resets timers for other states to prevent duplicate alerts. Real-time Performance: Using MediaPipe face detection and OpenCV's 3D geometry calculations, we optimized to ~2 FPS processing rate and ensured the entire pipeline from camera capture to state determination completes in under 500ms. MediaPipe's CPU-only operation was crucial for accessibility. AI Prompt Engineering: Getting Claude to reliably classify "on-task" vs "off-task" behavior required extensive prompt refinement. We needed it to understand nuanced scenarios - is reading documentation on-task for a programming project? Is watching a tutorial video productive or procrastination? The context of URL + screenshot + stated task was critical. Chrome Extension Manifest V3 Migration: Google's transition to Manifest V3 required reworking background processes as service workers, which have different lifecycle management than persistent background pages. Coordinating screenshot capture, API calls, and strike tracking within these constraints required careful architectural planning.
Accomplishments we're proud of
The MediaPipe + OpenCV Integration: We successfully combined two powerful computer vision libraries in a way that leverages each one's strengths. MediaPipe provides fast, accurate landmark detection, while OpenCV handles the complex 3D geometry mathematics. The result is precise head pose estimation that runs in real-time on standard hardware. Multi-Tier Accountability System: We built escalating consequences that actually work. Starting with gentle notifications, progressing to database-logged strikes, and culminating in real phone calls creates genuine accountability. The sleep detection system bypasses everything for immediate intervention - we're particularly proud of how aggressive and effective those AI-generated wake-up messages are. Seamless Cross-Component Integration: Getting the Chrome extension, Python vision server, and web dashboard to work together through Supabase was a major achievement. All three components stay synchronized, with features like "dashboard starts monitoring → extension shows active status → vision server begins analysis" working flawlessly. Real-World Impact: Early testing showed this actually works. The combination of AI task analysis and attention monitoring catches procrastination that traditional tools miss. You can't fool BigBro - it knows when you're actually working.
What we learned
Computer Vision is Powerful: We gained deep understanding of facial landmark detection, 3D geometry transformations, and real-time video processing. The math behind head pose estimation (solvePnP, Rodrigues transformations, Euler angles) was fascinating and gave us new appreciation for the complexity behind "simple" face tracking. State Machines for Complex Logic: Implementing the priority-based state machine taught us how to handle overlapping conditions elegantly. The clear priority hierarchy (sleeping > looking_away > focused > not_present) prevents edge cases and ensures consistent behavior. Accountability Works: The most important lesson was behavioral: external accountability is incredibly powerful. When consequences involve other people (phone calls to mom), users actually modify their behavior. Technology motivates if designed correctly. API Integration Complexity: Coordinating multiple external services (Claude, Fish Audio, Vapi, Supabase) taught us about error handling, fallback strategies, and managing API rate limits. Each service has different authentication, request formats, and response structures.
What's next
Adaptive Threshold Tuning: Use Letta AI's context memory to learn individual user patterns and automatically adjust thresholds. Some users naturally look away more while thinking; others have different baseline eye closure patterns. Personalized thresholds would reduce false positives. Mobile Companion App: Extend monitoring to mobile devices. When BigBro detects you're away from your desk, track what you're doing on your phone. Are you answering work emails or doom-scrolling Instagram? Team Accountability Features: Allow groups to monitor each other. Study groups could see collective productivity stats, and the system could call the most productive member when someone slacks off - peer pressure at scale. Sentiment Analysis: Integrate facial expression analysis to detect frustration, confusion, or boredom. When users appear stuck, BigBro could proactively suggest breaks or offer help. BigBro represents a new paradigm in productivity tools: not just tracking what you do, but truly understanding whether you're focused and holding you accountable in ways that actually change behavior.
BigBro

A Chrome extension, web app, and Python vision server that work together to monitor your focus. It analyzes your on-screen activity with AI and your attention via webcam + computer vision, escalating consequences (strikes, calls) when you drift off-task.
Getting Started
Prerequisites
- Google Chrome
- Python 3.10+
- A Supabase project (URL + anon key)
- Relevant API keys (Claude required; optional services enable extras)
1) Configure keys and environment
- Copy templates and fill values:
cp config_template.js config.jscp webapp/config_template.js webapp/config.js
- Copy the environment example, then edit your values:
cp .env.example .env
- See SECURITY.md for sensitive file handling.
2) Start the vision server (Python)
cd vision
python -m venv venv
# macOS/Linux
source venv/bin/activate
# Windows PowerShell
venv\Scripts\Activate.ps1
pip install -r requirements.txt
python vision_server.py
- Verify: open http://localhost:8080/status
- Server entry: vision/vision_server.py
3) Run the web app (static)
cd webapp
python -m http.server 8000
# open:
# http://localhost:8000
- Main entry: webapp/index.html
4) Load the Chrome extension
- Chrome → chrome://extensions → enable Developer mode → Load unpacked → select the project folder.
- Ensure config.js exists (from step 1).
Typical flow
- Start the vision server.
- Open the web app at http://localhost:8000, sign up/in, save phone numbers (Settings), click “Start Session”.
- Open the extension popup, set your task, and start monitoring.
Troubleshooting
- Vision server: check http://localhost:8080/status and the terminal running vision/vision_server.py
- Camera permissions: grant OS/browser access
- Calls not triggering: verify keys in config.js and .env; ensure phone numbers are saved in the web app
- Security tips and env keys: see SECURITY.md
About the Project
Inspiration
We’ve all been there—opening a laptop to work, only to end up on YouTube, Reddit, or social media. Traditional blockers are easy to bypass. BigBro brings external accountability into your workflow with AI and computer vision—so you stay focused.
What it does
- Task Monitoring
- The extension captures a tab screenshot plus URL and stated task, then asks Claude if you’re on-task. Strikes accumulate while off-task.
- Attention Monitoring
- The Python server tracks facial landmarks (MediaPipe) and head pose (OpenCV solvePnP) to detect:
- Sleeping: sustained eye closure triggers an AI-generated TTS wake-up (Fish Audio)
- Looking Away: sustained yaw/pitch deviation → strike
- Not Present: extended absence triggers a phone call via Vapi
- The Python server tracks facial landmarks (MediaPipe) and head pose (OpenCV solvePnP) to detect:
- Strike System
- Two strikes escalate to calling your accountability partner via Vapi.
- Analytics Dashboard
- The web app shows productivity stats and session history (Supabase-backed).
How we built it
- Chrome Extension (Frontend)
- Manifest V3 service worker orchestrates monitoring and communicates with the vision server; popup for task and controls.
- Vision Analysis System (Python/Flask)
- Server at port 8080: vision/vision_server.py
- MediaPipe Face Mesh (468 landmarks) + OpenCV solvePnP/Rodrigues for yaw/pitch; EAR for eye closure
- Four-state machine: focused, sleeping, looking_away, not_present
- AI Integration
- Claude (Anthropic) for on-task classification and feedback
- Alert Systems
- Fish Audio for local TTS; Vapi for real phone calls
- Data Layer
- Supabase (PostgreSQL) for auth, settings, strikes, sessions, and events
Challenges we ran into
- 3D head pose estimation: mapping 2D landmarks to stable 3D pose with solvePnP/Rodrigues
- Priority logic for overlapping states (sleeping > looking_away) and timer resets
- Real-time performance: CPU-only pipeline with sub-500ms end-to-end latency
- Prompt engineering for nuanced “on-task/off-task” calls
- MV3 service worker lifecycle constraints
Accomplishments
- Reliable MediaPipe + OpenCV integration for real-time head pose
- Multi-tier accountability: notifications → strikes → phone calls
- Seamless cross-component integration via Supabase and a clean server API
- Real-world effectiveness in preventing procrastination
What we learned
- Facial landmarks, solvePnP, Rodrigues, Euler angles, EAR
- Practical state machines for overlapping detection
- Accountability design changes behavior
- Multi-API integration with error handling and rate limits
What’s next
- Adaptive thresholds per user (context memory) to reduce false positives
- Mobile companion app for away-from-desk tracking
- Team accountability and shared stats
- Sentiment/expression analysis for proactive assistance
Analysis
View
Metric
- 44
- 8
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- FlaskIn code
- HTMLIn code
- Hugging FaceIn code
- JavaScriptIn code
- OpenAIIn code
- PythonIn code
- PyTorchIn code
- SQLIn code
- StreamlitIn code
- SupabaseIn code
- TensorFlowIn code
14 of 14 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
263 KB
Source files
32
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
smritirangarajan/bigbro
48 files · 1.2 MB · @ 2781b90
Structure
Interface
6 files · 13%Screens, components and styles rendered to the user.
Application logic
25 files · 52%Domain rules, services and shared utilities.
Data & schema
1 file · 2%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript59%
- Python19%
- CSS7%
- Markdown7%
- HTML7%
- Shell0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 315- absl-py
- aiohappyeyeballs
- aiohttp
- aiosignal
- altair
- altex
- annotated-types
- ansicolors
- anthropic
- anyio
- asn1crypto
- astrapy
- astunparse
- attrs
- backoff
- bcrypt
- beautifulsoup4
- bidict
- +297 more
vision/requirements.txt
pypi · 8- fish-audio-sdk
- flask
- flask-cors
- mediapipe
- numpy
- opencv-python
- python-dotenv
- requests
package.json
npm · 2- @letta-ai/letta-client
- @supabase/supabase-js
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.