Keith Cox, PhDBehavioral Researcher & Conversational AI Designer

Portfolio

Design Prototypes

End-to-end system design case studies, documented through the architecture itself.

Pharmacy Virtual Assistant

2025

Figma + Voiceflow + Airtable

Complete multi-agent architecture with identity-gated data disclosure and deliberate human escalation, documented end to end.Read the full case study

Designed a multi-agent virtual assistant for a fictional pharmacy: wireframed in Figma, built in Voiceflow, and backed with a synthetic retail pharmacy database in Airtable. A routing agent triages every request into FAQ, patient-specific, or clinical questions, and the architecture is built around two strict rules: (1) no protected data is accessed or disclosed until the user's identity has been verified, and (2) all clinical judgement is reserved exclusively for licensed pharmacists. My Voiceflow trial’s credits have since run out, so this entry documents the design through its artifacts rather than a live link.

  • Identity gate: patient-specific requests require name and date of birth to be verified against Airtable records via live API call before any prescription information is disclosed; when a user cannot be verified, the agent first explains that private patient information cannot be disclosed to unverified users, then offers to transfer the interaction to a human.
  • Live lookup: the agent resolves verified users’ queries and requests against records pulled from the Airtable pharmacy database in real time.
  • Status classification: a classification agent sorts each inquiry — ready for pickup, awaiting prescriber approval, expired, insurance delay/prior authorization, or other — and routes to the matching response.
  • Human escalation: clinical or medication questions are deliberately kept out of the bot’s scope and escalated to a pharmacist rather than answered.

Figma wireframe of the full agent flow.

Browse the synthetic pharmacy database

Web Apps / Technical Projects

Real, live software — designed, built, and deployed end to end.

Conference Planner

2026
conference-planner.keithgcox.com

Scoped, designed, and built on the fly to address flaws in the official conference app. Achieved conference-wide adoption in under 24 hours.Read the full case study

Identified core failures in an international research conference’s official app (no talk-level search or scheduling) and built a better alternative in a single afternoon with Claude Code: full-text search, per-talk scheduling, and a live “happening now” view keyed to the event’s 30-minute talk grid.

Built as a personal utility, it spread by word of mouth from a handful of colleagues to the whole conference. Inside a day the organizing committee formally adopted it and promoted it to all attendees as the recommended tool for navigating the schedule.

Search comparison:
My app (left) vs. the official conference app (right).

Some-R-Set Scorepad

2026
somerset-scorepad.keithgcox.com

Live in production: players join by code and spectate games in real time, and every game persists to shared history.

Real-time multiplayer scorekeeping app for a team-based card game, built with Claude Code and shipped as a single dependency-free HTML file — vanilla JavaScript, no framework or build step — that installs as an offline-capable web app. It automates the bid-and-set arithmetic players routinely get wrong: hand-by-hand bid and take entry, automatic set penalties, and dealer rotation.

  • Two-phase entry: one player logs the bid while the whole table spectates the hand live, then any device records the result.
  • Live sync: Firebase keeps every device on the same board — players join a game or tournament with a six-character code; cloud backup adds device linking and privacy-preserving stats sharing.
  • Tournaments & stats: three formats (single elimination, double elimination, round robin), plus a Personal Stats engine computing leaderboards, win streaks, moon shot success rates, and best-partner and nemesis records retroactively from game history.
Scorepad live game board mid-hand, showing team scores, the bid/take rotation, and recent deal history
Scorepad single-elimination tournament bracket with the next matchup and completed round results
Scorepad game history log with expandable hand-by-hand results and a delete-game option
Scorepad player stats view showing win-loss record, championships, streaks, and moon shot success rate

The Cookbook

2026
cookbook-demo.keithgcox.com

Live in production and used daily: any recipe URL becomes a consistently formatted entry, and a week of meals becomes one merged, aisle-sorted shopping list.

Family recipe app designed and built with Claude Code, running on Next.js 16 (App Router, Cache Components), Neon Postgres with Drizzle ORM, and Vercel. A three-tier import pipeline turns any recipe URL into a consistently formatted entry: structured data first, then recipe-plugin markup, then the page text read by Claude, with a review screen before anything is written. A planned week then generates one shopping list, merging quantities across recipes, scaling them to the servings being cooked, and grouping them by aisle in walking order.

  • Unit arithmetic: quantities merge only within a dimension — volume never converts to weight, and imprecise units like bunch or clove each occupy a private dimension, so “2 scallions” and “1 bunch scallions” stay two lines instead of collapsing into a confidently wrong number.
  • Either/or variants: mutually exclusive options — crockpot or stovetop, canned biscuits or scratch dumplings — share a key across both ingredients and steps, so selecting one filters the instructions and the shopping list in a single tap.
  • Aisle learning: any item can be re-filed to the aisle a particular store keeps it in, and the correction is stored against the item rather than the row, so it survives the weekly rebuild of the list.
The Cookbook recipe grid, showing Creamy Ziti and Firecracker Meatballs as cards with cook time and serving count, each photo rendered in the same 3:2 frame regardless of the shape of the source image
A Cookbook recipe detail screen showing time, base servings, meal, cuisine, rating, times cooked, and tags
The Cookbook weekly meal plan with three nights filled in, each entry showing the recipe and the servings it is scaled to
The generated Cookbook shopping list, quantities merged across the planned recipes and grouped by aisle, each line naming which recipes wanted it
2025–Present

Self-Hosted LLM Lab & RAG Research Assistant

I run a local LM Studio environment for systematic prompt-engineering experimentation. I built a retrieval-augmented generation (RAG) personal research assistant over my own academic literature corpus that surfaces relevant studies based on working questions, using few-shot prompting informed by conversation analysis to specify not just desired outputs but the underlying interactional move an agent should recognize or perform.

Conversation Design Philosophy

Grounding conversation design in the empirical study of real talk.

My conversation design philosophy is a reflection of my training as a conversation analyst. Conversation analysis is the discipline of specifying what “good” looks like in an interaction: not just what people are saying, but what they are doing, and exactly how they are doing it. That is precisely the unsolved problem at the center of AI experience work — defining, evaluating, and improving how an agent should behave, turn by turn.

My work brings decades of conversation-analytic research on naturally occurring talk to bear on this problem: I leverage what we know about how humans interact with each other to identify specific failure modes in conversational interfaces, recommend concrete engineering solutions, and build evaluation protocols that are rigorous enough to measure the effects of both.

What makes an AI conversation feel trustworthy?

Trust rests on predictability, reliability, and transparency. Humans trust each other when their conduct is relevant, reasonable, and accountable. Three levers do most of the work: fitted responses (recipient design), graceful repair (especially user-initiated repair), and a calibrated epistemic stance (not only keeping track of who knows what at any given moment but also modifying the content and design of turns accordingly in real time).

How AI conversations tend to break down

Five failure modes recur: “mechanical listening” instead of action-first listening (i.e., focusing on what the user is saying rather than on what the user is doing); treating resistance as confusion; overly rigid sequential expectations; weak repair initiation; and losing context across turns.

Precision prompt engineering

A conversation-analytic vocabulary produces better few-shot examples, because it specifies the interactional move an agent should recognize, not just the surface text.

Publications

Peer-reviewed research on trust, resistance, and breakdown in high-stakes conversations.

  • Cox, K. (2025). When Good News Falls Flat: Complications in the Delivery and Reception of Good News in Pediatric Neurology.Social Psychology Quarterly 88(1): 45–65. DOI: 10.1177/01902725241253258

    How well-intentioned clinical communication fails to land, and the conversational moves that repair it.

  • Timmermans, S., Stivers, T., Cox, K., & McArthur, A. (2024). Patients in Pain: How Treatment Plan Formulations Shape Patient Response.Communication & Medicine 19(2): 137–151. DOI: 10.1558/cam.22881

    How small changes in phrasing produce measurably different responses: the empirical case for prompt-level precision.

  • Cox, K. (2023). Invoking Uncertainty: Parents’ Accounts for Intrusions on Medical Authority in Pediatric Neurology.Journal of Health and Social Behavior 64(4): 537–554. DOI: 10.1177/00221465231194052

    How people resist expert authority in high-stakes settings: patterns any trustworthy AI system must recognize and handle.

  • Tarn, D. M., Barrientos, M., Pletcher, M. J., Cox, K., Turner, J., Fernandez, A., & Schwartz, J. B. (2021). Perceptions of Patients with Primary Nonadherence to Statin Medications.Journal of the American Board of Family Medicine 34(1): 123–131. DOI: 10.3122/jabfm.2021.01.200262

    Why people abandon prescribed plans: the human analog of drop-off and task-completion failure in automated workflows.

In progress

Interactional Risk in First-Time Conversations Between Strangers

UCLA collaboration: 140 speakers across 70 dyads, examining how speakers calibrate interactional risk when making evaluative claims without shared relational history. Directly analogous to agent–patient first contact.