FRUSTRATION DETECTOR
Notices when someone is stuck on the web — and emails the person who can help, with a screenshot.
A Chrome extension and AWS backend that detects when someone is struggling while browsing — repeated reloads, error pages, frantic back-navigation, stuck forms, scam sites — and sends a plain-English alert with a screenshot to someone who can help. Built for the scenario where a grandparent is stuck on a government website alone, and their grandchild gets an email: "They visited the login page 4 times, hit an error, and gave up on a form — view screenshot."
The Challenge
Less tech-savvy users — often older relatives — get stuck on the web constantly: a confusing government portal, a login that keeps erroring, a form that won't submit, or a scam page designed to mislead them. They rarely ask for help in the moment, and by the time family hears about it, the context is gone. The challenge was to notice struggle as it happens and route it to someone who can step in.
The Solution
A Chrome extension watches for struggle signals locally and, once they cross a threshold, captures a screenshot and ships the event to an event-driven AWS backend. Lambda scores and stores events, a scheduled re-scan summarizes what happened in plain English, and when the total crosses a second threshold it emails a designated helper a clear summary plus a link to the screenshot.
On-Device Struggle Detection
A content script watches DOM signals — clicks, scroll, form abandonment, idle time, cursor thrash, scam phrases — while a background script tracks navigation signals like repeated reloads, back-navigation, HTTP errors, and known scam domains. When the local score crosses a threshold, it captures a tab screenshot and posts the event.
Event-Driven AWS Backend
API Gateway routes events to a Lambda that validates and writes them to DynamoDB (30-day TTL) and uploads screenshots to S3 — both a raw image and a self-contained HTML viewer. A second Lambda runs every 15 minutes via EventBridge to re-score events per URL and build a plain-English summary.
Caregiver Alerts
When the aggregated score crosses the alert threshold, the backend generates a 7-day presigned URL to the screenshot viewer and publishes to an SNS topic — emailing a helper which site the person was on, what happened, and a click-to-open full-size screenshot.
Extension
Chrome MV3 · JavaScript · content.js + background.js
Compute
Python Lambda · API Gateway (HTTP API) · EventBridge
Storage & Alerts
DynamoDB · S3 · SNS
Infrastructure
AWS CDK · Presigned URLs · TTL-based retention
Two-Stage Scoring
Scoring locally for an instant signal, then re-scoring server-side to aggregate across a session, balanced responsiveness against false alarms — a single threshold in either place alone was too noisy.
Event-Driven by Default
Letting API Gateway, EventBridge, and SNS glue stateless Lambdas together kept the system simple and cheap — no servers to run, and each piece scales and fails independently.
Privacy-Aware Engineering
UUIDs instead of names, field masking, presigned URLs, and short TTLs meant sensitive browsing context was handled carefully end to end — essential when monitoring someone's screen for their benefit.
Infrastructure as Code
Defining the whole backend in AWS CDK made the multi-service stack reproducible and deployable in one command — critical for iterating fast during a hackathon.