Alice is built for working families who earn too much for most aid and still struggle with health costs, starting in Bridgeport, Connecticut. It turns a medical bill, an insurance denial or a prior approval into plain-language next steps and a drafted letter. A Claude agent does the reading and the drafting, and code lets it cite only the rules and offices stored in Alice's own database.
Where it started
Alice began as Owed, a team build at Hack for Humanity: Bridgeport in the Where Help Doesn't Reach challenge. The team aimed it at ALICE households. ALICE is the United Way's name for families who are Asset Limited, Income Constrained, Employed. They work, earn above the poverty line and still can't cover the basic cost of living. United For ALICE counts two in three Bridgeport households as ALICE or in poverty. By the time the team pitched, the app carried the ALICE name.
At the event, Tony built the agent and the backend behind it, and brought the team's prototype into the app as the Alice interface. Evan Wies built a medical price finder that maps and ranks Connecticut prices from HealthscoreCT data.
What it does
A person can type, talk, or upload a bill or denial letter, even a phone photo. Alice reads the document and explains it in plain language.

Then it lays out what to do: the rule that applies with its source, the office to contact, the deadline, and the sentence to say. It drafts the paperwork too: appeal letters, financial-assistance requests and handoffs to Connecticut's Office of the Healthcare Advocate. No draft goes out until the person taps confirm, and then only to approved addresses.

Inside the signed-in app, each case has its own page. The screens below come from a case started with the app's sample denial letter, so the patient, the plan and the denial are all made up.




How it works
Convex runs the backend: the database, functions, file storage, sign-in, and hosting for the React app. The case agent, Claude Sonnet by default, answers in strict JSON. Code checks every rule and office key it returns against the database, drops the unknown ones and builds citations from the rows. An answer with no rule left becomes a referral to 211.
out.ruleKeys = Array.from(new Set(out.ruleKeys)).filter((k) => {
if (ruleByKey.has(k)) return true;
dropped.push(`rule:${k}`);
return false;
});
out.doorKeys = Array.from(new Set(out.doorKeys)).filter((k) => {
if (doorByKey.has(k)) return true;
dropped.push(`door:${k}`);
return false;
});
if (out.kind === "answer" && out.ruleKeys.length === 0) {
out.kind = "no_match";
out.reason = out.reason || "The agent could not point at a rule in our data.";
}A second agent, Claude Opus by default, runs the research desk. It works from a library of 79 sources on prior approvals and denials and uses Firecrawl to search the web and read pages. Each page is saved before the model reads it, and a finding stays only when its quote matches the saved page word for word. Code refuses any search or page address that carries a name, member ID or other identifier it finds in the case.
For voice, the browser turns speech into text, and OpenAI's gpt-4o-mini-tts speaks Alice's lines, each cached after its first use.
Where it stands
Tony kept building after the hackathon, with Claude Code. A redesign added two voice modes, Talk to Alice and an in-app Call Alice. Then came the getalice.co landing page with its scripted example, and a sign-in for the app.
Alice is in private beta. Its site, getalice.co, takes beta requests, and the app sits behind a password sign-in with no sign-up. Beta logins are made by hand, and the app runs on demo data only, with a ribbon on every screen asking for made-up information.
