About the project

Inspiration

Independence should not require surveillance. People live alone, recover at home, commute late and take solo trips without wanting a camera, live-location feed or emergency button watching them all day. ICO began with a quieter promise: monitor the plan, not the person. If an expected moment passes unresolved, someone notices.

What it does

Someone describes an expected moment in ordinary language. ICO turns it into a literal preview: when the check is due, how long grace lasts, who may be contacted and in what order. Nothing activates until the subject reviews it and every required Circle member consents.

At the due time, deterministic software opens an Alert. The subject can confirm or extend. A responder can claim I'm checking, which creates a temporary lease but does not resolve the Alert. Only an explicit outcome closes the loop; an expired lease resumes escalation. Every transition is recorded in a truthful timeline.

How we built it

The Android client uses Kotlin and Jetpack Compose. The marketing site, authenticated web app, public judge demo and zero-install responder experience use Next.js 16 static exports. The canonical hackathon site is published through GitHub Pages with a verified domain and enforced HTTPS; the AWS CloudFront distribution remains blocked by account verification.

Amazon Cognito authenticates subjects. Amazon API Gateway exposes an explicit route list to Python 3.12 AWS Lambda handlers. Amazon DynamoDB stores versioned Plans, Moments, Alerts, consent and audit events. Amazon EventBridge Scheduler owns due times; AWS Step Functions Standard and Amazon SQS drive retried, idempotent escalation.

Natural-language interpretation is implemented as a Strands agent targeting Amazon Bedrock AgentCore Runtime and AWS-native Amazon Nova 2 Lite through Amazon Bedrock. AWS execution-role credentials replace model API keys. The runtime has no DynamoDB, Scheduler, SQS, SNS or contact permission. AgentCore Gateway accepts only abstract roles, and an AgentCore Policy Engine evaluates Cedar policies in ENFORCE mode. Typed schema, time-zone, consent and safety validators re-check every draft before it can be saved. AWS account verification currently blocks model invocation and new AgentCore versions, so the public demo labels and uses the same deterministic validated safe template; the schedule, workflow, queue, worker and responder resolution still run live in AWS.

Challenges we ran into

The hardest problem was not contacting someone; it was preserving meaning through retries and uncertainty. We had to make duplicate events harmless, distinguish provider acceptance from delivery, pin Alerts to immutable Plan Versions, and ensure acknowledged is not resolved. Signed responder links needed to be narrow, expiring and tenant-safe without forcing a worried friend to create an account. The model/system separation had to be structural rather than prompt-based.

Accomplishments that we're proud of

We built one governed vertical slice from language to explicit resolution across native Android, authenticated web and responder web surfaces. The agent can propose a role but has no vocabulary for phone numbers, emails or arbitrary URLs. A synthetic judge tenant runs the real schedule, workflow, queue, worker, lease and audit code with only the final delivery redirected to a clearly named safe sink. OpenAPI, CDK, handlers and the Android client are checked for route parity.

What we learned

Unresolved does not mean danger. The useful action is to close uncertainty without inventing conclusions. AI is good at translating how people speak into a candidate structure; deterministic software must authorize and own safety state. Privacy improves when capability is removed, not merely promised.

What's next for In Case Of

After carefully reviewed pilots, we would validate physical-device delivery, finish provider registration, and improve scoped context snapshots while preserving the same consent, role-only addressing, idempotency and explicit-resolution rules. ICO will not become automatic emergency dispatch.

Built with

Python, TypeScript, Kotlin, Jetpack Compose, Next.js, Strands Agents SDK, Amazon Bedrock, Amazon Bedrock AgentCore, Amazon Nova 2 Lite, AWS Lambda, AWS Step Functions, Amazon API Gateway, Amazon DynamoDB, Amazon Cognito, Amazon EventBridge Scheduler, Amazon SQS, Amazon SNS, Amazon CloudFront, Amazon S3, AWS KMS, AWS Secrets Manager, AWS CDK, Amazon CloudWatch, Playwright, Pytest

Built With

Share this project:

Updates

Submission history