Inspiration

When someone travelling becomes difficult to reach, the people who care about them face an information gap: what was last recorded, when did it happen, and has anyone actually heard from them? In Nigeria, unreliable connectivity can make that uncertainty especially difficult. A delayed upload should not look like fresh contact, and silence should never be presented as proof of danger or safety.

Alabarin helps Travellers and the trusted people they choose preserve and understand Journey information across that gap.

What it does

The Android Traveller records observations locally during a Journey, preserving their original event times, sequence numbers and location accuracy. Authenticated synchronization reconciles those records with the backend when connectivity returns. An independent cloud watchdog checks for lost contact even when the phone cannot communicate.

An authorized Trusted Contact explicitly selects a Journey in the web Viewer. Historical evidence requires a separate disclosure action and retains its original timestamps and verification-opening context. Device observations, backend receipt times, human information and the time of the current check remain distinct.

Our Alexa+ web simulation lets that contact ask about an authorized Journey through direct Anthropic Claude and genuine MCP calls. Application code controls identity, Journey selection, fresh authorization and evidence consent. The model cannot grant itself access or turn its own text into authoritative Journey evidence.

Demonstrated functionality includes Android observation collection and persistence, authorized historical-evidence viewing, genuine hosted Claude/MCP questions and retrieval, and initial attributed report-draft preparation. Declining a draft has separate local browser and remote preparation/decline evidence; a successful hosted report save is not part of the accepted demonstration.

How we built it

Kotlin, Jetpack Compose and Room provide the Traveller interface and durable local records. Supabase Auth, PostgreSQL contracts and Edge Functions hold authoritative state, grants and immutable verification snapshots. React provides the Viewer and conversational interface.

The official MCP TypeScript SDK implements protocol 2025-11-25 over Streamable HTTP. Our confidential first-party bridge and MCP service run on ECS/Fargate. Direct Anthropic Claude provides inference; this is a simulated Alexa+ experience, with no native Alexa/Echo integration or Amazon account linking.

AWS keeps monitoring independent of the phone: EventBridge Scheduler invokes a Lambda watchdog once a minute, which calls deterministic backend routines. EFS preserves paid-inference accounting across container replacement. ECR, HTTPS infrastructure and server-side secret references make the hosted bridge deployable without distributing provider credentials. AWS End User Messaging SMS handles consented cloud alerts within its sandbox, separately from the implemented encrypted phone-to-cloud fallback.

Challenges and what we learned

Resilience requires preserving the meaning of evidence as well as its bytes. One October 21 recovery matched all 895 local observations against backend sequences and original event times, with zero duplicates. Recovery followed unlock and foreground entry, so this result does not establish general unattended reliability.

We also learned to treat missing acknowledgement as uncertainty: automatic retries can duplicate a message or paid action. Durable reservations, checkpoints and explicit human actions became important design tools.

A genuine hosted correction attempt omitted a mandatory fresh tool call. The application rejected the turn; we excluded correction and hosted report saving from the demonstration. Bedrock attempts encountered account-verification and daily-token-limit errors, so no working Bedrock inference is claimed.

Work during the hackathon and next steps

The accessible engineering history begins September 15, within the August 31–October 23 submission period. Work progressed through Android persistence and synchronization, independent monitoring, trusted-contact authorization, encrypted SMS components, lifecycle and destination contracts, then the React Viewer and genuine Claude/MCP conversation. October 22–23 work added hosted-inference recovery, pending-invitation recovery and a consistent branded Viewer origin. The October 21 repository root commit records source publication, not the start of development.

Next steps are a rehearsed fresh-device judge route, reliable unattended synchronization, accepted correction/report-saving flows, complete carrier-to-backend SMS acceptance and broader device validation. Destination setup currently uses Nigeria's State/FCT and LGA/Area Council catalogue; international deployment has not been verified. Alabarin offers trustworthy information for human verification, not a guarantee of safety.

Friction log

1. Bedrock model readiness | Severity: BLOCKING

Task: Run bounded Nova Lite tool-use inference through Bedrock Converse.

Steps: Implemented the AWS SDK adapter, configured model-scoped access, and made explicitly approved attempts.

Expected: A model response or a clear readiness indication before attempting inference.

Actual: Account-verification and daily-token throttling errors; no successful response.

Workaround: Stopped that path. The demonstrated assistant uses separately configured direct Anthropic Claude through our AWS-hosted bridge. No automatic retry or claim of Bedrock quality.

Suggestion: Provide one preflight view/API showing account verification, regional model eligibility and effective token quota.

Evidence: ARCHITECTURE.md, AWS responsibilities; mcp-server/CONVERSATION.md.

2. Required tool omitted during correction | Severity: MAJOR

Task: Correct an initial report draft while revalidating authorized Journeys.

Steps: Prepared a genuine hosted initial draft, requested a correction, and required a fresh Journey-list call before accepting output.

Expected: The mandatory call followed by an eligible corrected draft.

Actual: Claude returned final text first; the adapter rejected it with required_tool_missing. A distinct local correction test returns invalid-backend.

Workaround: Excluded correction from the demonstrated path; retained initial attributed review/decline, with no hosted save claimed.

Suggestion: Improve required-tool sequencing controls and diagnostics that identify the omitted call. This is model/orchestration friction in an MCP-based web simulation, not a demonstrated native Alexa defect.

Evidence: EVIDENCE_SUMMARY.md, Known limitations; VALIDATION.md.

3. Credit visibility and initialization recovery | Severity: MAJOR

Task: Keep the hosted Claude/MCP service usable within manually prepaid limits.

Steps: Configured provider credentials, a persistent EFS journal and startup validation; resumed after funding became available.

Expected: Verifiable remaining credit/limits and a later explicit request able to recover from unpaid startup.

Actual: The workspace API key could not verify balance/organization limits programmatically; a rejected initialization promise required a recovery repair.

Workaround: Owner-controlled manual-prepaid policy, durable reservations, no automatic reload/retry, and initialization recovery only on a later human request.

Suggestion: Offer documented read-only balance/limit visibility for appropriately scoped application keys and clear recoverable startup errors.

Evidence: mcp-server/HOSTED_INFERENCE.md, Operational configuration and published repairs.

Built With

Share this project:

Updates

Submission history