Inspiration
Every parental-control tool we tried answers the same question: how long did my kid watch? None of them answer the one parents actually ask at dinner: what did they watch, and was it okay? The TV knows exactly what played. We wanted the parent to know too, without hovering over the couch.
What it does
GuardianTV is an AI viewing-intelligence layer for Amazon Fire TV with a companion app for parents.
- One-scan pairing: the TV shows a QR code and a 6-character code. The parent scans it with the Guardian mobile app, and the TV signs in with an encrypted JWT device token. No typing passwords on a remote.
- Background monitoring: a native Fire TV service tracks the foreground app (YouTube, Netflix, Prime Video) and the current title, and samples screen context into a RAG pipeline.
- AI content analysis: every session is analyzed for topics, an educational score (0–100), an age signal, a violence signal and a language signal.
- Daily briefing: total screen time, educational vs. cartoon minutes, extracted learning themes, and safety highlights. Example: "Aarav watched 14 min today… 12 min (86%) was educational, exploring space exploration, astronomy & stars, marine biology."
- Ask Guardian AI: parents ask in plain English, e.g. "What did he learn about space?" or "Was anything concerning?", and get answers grounded only in the viewing log, with evidence sources attached.
- Remote controls from the phone: pause monitoring, set a daily screen-time limit, choose content sensitivity (Educational focus only / Balanced / Flag any mild content), and pause the TV remotely.
How we built it
- Fire TV app: React Native for TV (shared UI package across an Expo multi-TV app and an Amazon Vega/Kepler app), with D-pad focus navigation via
react-tv-space-navigation. - Native Android/Fire OS layer (Kotlin): an
AccessibilityServicefor foreground-app detection, aNotificationListenerService+MediaSessiontracker for the playing title, and a floating overlay service that shows the Guardian monitoring HUD and samples context on a timer. - Parent mobile app: Expo / React Native with
expo-camerafor QR scanning, email/phone sign-up with OTP 2FA, dashboard, controls, and the AI chat. - Backend: Node.js + Express + TypeScript, with WebSockets for live TV ↔ phone ↔ dashboard sync, JWT auth and bcrypt.
- AI: Amazon Bedrock (Claude 3 Haiku) for structured content analysis and grounded Q&A, with a deterministic local fallback engine so the demo works offline.
- Data: PostgreSQL on Neon serverless (12-table schema), plus an embedded local DB for failover.
- Ops: multi-stage Dockerfile and docker-compose with health checks. There is also a web dashboard that emulates the Fire TV pairing and ingestion flow.
Challenges we ran into
- Knowing what's playing on a locked-down TV: streaming apps don't share what they're showing. We combined accessibility events, media-session metadata and notification metadata, and filtered out junk titles to get a reliable "now playing".
- Keeping the AI honest: parents need facts, not plausible guesses. The prompt only allows facts present in the session evidence, runs at low temperature, and returns the sessions it used.
- Auth on a 10-foot UI: nobody wants to type a password with a remote, so we built QR + short-code device pairing with expiring sessions and token hand-off over WebSocket.
- One codebase, several TV platforms: sharing UI between Expo TV and Vega/Kepler meant careful platform-specific remote-control managers.
Accomplishments that we're proud of
- An end-to-end loop: pair the TV, watch something, see it analyzed, ask about it from the phone.
- Answers that cite their evidence, so a parent can trust "He learned how the James Webb telescope uses gold-coated infrared mirrors" because the session that taught it is attached.
- It degrades gracefully: no AWS credentials or no cloud DB, and the app still runs.
What we learned
- Grounded RAG matters more than model size. A small, fast model plus strict evidence rules beats a big model left to improvise.
- Fire OS native services (accessibility, notification listener, overlays) are powerful but need care with permissions and battery.
- Designing for the TV and the phone at the same time forces you to keep every interaction to one or two steps.
What's next for GuardianTV
- Real-time alerts: push notifications to the parent's phone the moment 18+ or off-track content (outside the chosen sensitivity, e.g. "Educational focus only") is detected, with one-tap Pause TV.
- Faster sampling: moving from 2-minute sampling toward near-real-time (about every 5 seconds) frame analysis.
- Multi-child profiles with per-child limits, weekly trend reports, and on-device inference for privacy.
Built With
- amazon-bedrock
- amazon-vega
- amazon-web-services
- android
- bcrypt
- claude
- docker
- expo-camera
- expo.io
- express.js
- fire-tv
- javascript
- jwt
- kepler
- kotlin
- neon
- node.js
- postgresql
- qr-code
- rag
- react-native
- react-native-tvos
- typescript
- websockets
Log in or sign up for Devpost to join the conversation.