PCare: Parental Care Assistant
An Android system that helps parents see risks in their child's phone use. A hidden service on the child's device watches the screen, keyboard and browsing, uses AI to pick out what is harmful, and reports only that to a parent dashboard.
My role: I took an active role in the AI/ML integration and the backend. That covered connecting the YOLO detection model and the sentiment analysis API to the app's data flow, and building the Firebase and Firestore layer that carries flagged content to the parent dashboard.
Winner of the METU CENG Senior Design Project Competition, Demo Day.
The problem
Children spend hours a day online and run into harmful content that parental controls often miss. Most tools either block whole apps or flood parents with raw logs. We wanted a system that looks at what is actually on the screen and in the messages, and only tells the parent when something matters.
The system
- Child app: after the parent grants permissions and taps Hide, it runs as a background service with no icon or notification and restarts on boot. Each feature has its own on/off switch.
- Parent app: sign-in protected dashboard bound to the child's device.
- Cloud: Firebase Auth and Cloud Firestore for data, a cloud-hosted YOLO model for images, and a text analysis API for messages.
What parents see
- Screen Tracker: only the screenshots where YOLO found a harmful object, by day and week
- Keyboard Tracking: messages with negative sentiment, each with a date and a toxicity score bar
- Web Tracking: every visited page with its full URL, including incognito browsing
- Usage Tracker: daily screen time per app, focused on social media
Screen tracking pipeline
- Screenshot captured at a set intervalBackground service, resized and enhanced before upload
- Sent to the cloud-hosted YOLO modelTrained on our own labeled cigarette and firearm datasets
- Harmful object detected?No: the screenshot is deleted right away
- Flagged image saved to FirestoreShown in the parent's Screen Tracker
Keyboard tracking pipeline
- Typed text collected in a bufferA timer marks end of input, since soft keyboards send no line end
- Buffer sent to sentiment analysisMicrosoft Azure AI Language in the final version
- Toxicity score from 0 to 100Below the threshold: the text is discarded
- Toxic sentence and score savedListed with date and score bar in Keyboard Tracking
Engineering decisions
| Decision | What happened | What we did |
|---|---|---|
| Database | Firebase Realtime Database hit query limits once the dashboard needed daily and weekly views. | Moved to Cloud Firestore so the parent app could query by date range. |
| Text analysis | OpenAI text-davinci-003 was deprecated mid-project, and its toxicity scores were not always reliable. | Moved to GPT-3.5 Turbo, then to Microsoft Azure AI Language for sentiment scoring. |
| Where YOLO runs | Running the model on the phone in a loop risked CPU load and battery drain. | Hosted the model in the cloud (tried Render, then Firebase) so the child device only captures and uploads. |
| Privacy | Storing every screenshot would be heavy and invasive. | Keep only flagged content. Everything else is deleted on the device or after analysis. |
| Image quality | Screenshots vary in size, contrast and sharpness. | Added resizing, bilateral filtering, edge detection and gamma correction before detection. |
| Parent alerts | A one-off email report would be hard to extend. | Built a dedicated parent app instead, which made room for the dashboard and later features. |
Data and model
- Crawled images from the web and labeled them with third-party tools for two classes: cigarettes and firearms
- Trained YOLO models for each class on limited compute and tuned them until firearm detection reached an acceptable rate
- Alcohol detection was planned and later dropped so we could finish the core features
Testing
- Unit: image recognition, keyboard tracker, web history tracker
- Integration: YOLO results and sentiment scores flowing into the dashboard as live alerts
- System: hidden mode across devices and Android versions, report accuracy against logged activity
- Performance: CPU and memory while running in the background, and dashboard responsiveness under many alerts