justin‑kang.vercel.app
[001]·jul_2026v0.2

BuzzBuddy

  • Agentic AI
  • iOS · SwiftUI
  • FastAPI
  • Personal baseline

Hackathon prototype that detects performance deviation from a personal baseline. It does not determine sobriety or fitness to drive.

Role
Backend + agentic loop; wired the AI-driven flow into the shared iOS app

iOS app that estimates impairment by measuring deviation from your own sober baseline — reaction time, balance, memory — using an agentic AI examiner, not a BAC guess.

buzzbuddy — examiner_session4 screens
BuzzBuddy check-in screen with a large "Start Test" button
start_test
BuzzBuddy reaction-time mini-game showing a green "TAP!" prompt
reaction_test
BuzzBuddy AI examiner reasoning reveal, showing its evolving confidence in monospaced text
ai_reasoning
BuzzBuddy verdict screen reading "Severely Impaired" with 81% confidence, a plain-language summary, and a disclaimer that it does not estimate BAC or legal driving status
verdict
Award3rd · MLH × DigitalOcean AI Hackathon ’26
BaselineReaction / balance / memory, personal — not BAC
Toolsretrieve_baseline / request_test / analyze_deviation / update_confidence
ModelClaude 4.6 Sonnet · tool-calling loop
OutputDeviation confidence, never "safe to drive"

What I Contributed

  • Built the FastAPI backend and the agentic tool-calling loop (retrieve_baseline → analyze_deviation → update_confidence → request_test) against DigitalOcean Serverless Inference.
  • Designed the SQLAlchemy schema and Alembic migrations.
  • Wired the AI-driven check-in flow into the iOS app's shared state, replacing a local placeholder test shuffle.
  • Built, then removed before submission: a Twilio SMS designated-driver alert and a secondary agent for read-only driver Q&A.
  • Tuned the examiner's system prompt (tone, benefit-of-the-doubt calibration on ambiguous evidence).
  • UI passes on the check-in and verdict screens.

How It Works

4 stages
S.01baseline

Sober Baseline

User completes reaction, balance, and memory tests while sober to set a personal reference — not a population BAC average.

S.02test

Adaptive Testing

On check-in, the AI examiner requests specific tests one at a time based on what it still needs to know.

S.03analyze

Deviation Analysis

Each result is compared against the personal baseline, and a tool-calling loop updates a running confidence score with reasoning attached.

S.04verdict

Final Summary

The examiner concludes the session with a plain-language summary — it never tells the user it’s "safe to drive."

Evaluation & Evidence

  • No automated test suite exists for this prototype (verified: zero test files in the backend).
  • Verified in code: each verdict is grounded in a specific per-test percent-deviation from the stored baseline value, not a single opaque score.
  • Verification during the hackathon was manual/demo-driven — no measured pass rates, scripted-scenario counts, or response-time benchmarks are available to report.

Constraints & Limitations

  • Not medically validated and not more reliable than BAC testing — it measures deviation from a personal baseline only.
  • No automated tests or regression suite.
  • A Twilio SMS alert to a designated driver, and a secondary driver-Q&A agent, were built and worked during the hackathon but were removed before final submission — the current backend always ends a session with a plain-language summary rather than escalating to a contact.
  • Several iOS tabs (Home/Events/Settings) are placeholder stubs not wired to real state beyond the check-in flow itself.

What I'd Improve Next

  • Add an automated/scripted-scenario test suite.
  • Decide whether to re-add and harden the designated-driver notification path, or remove its remaining UI references.
  • Wire the remaining placeholder tabs to real state.

Demo, Code & Artifacts

buzzbuddy / case_studyagentic impairment detection · 2026