Inspiration

When someone temporarily hands over care responsibility, critical knowledge about the person or pet is often scattered across messages, documents, and memory. This creates stressful handovers where caregivers repeatedly ask the same questions and risk missing important instructions.

What it does

Carrie Notes lets a pet owner build one structured care profile, either by filling out a form or by just describing it in plain sentences or a voice note, which gets turned into the structured fields automatically. Owners can also attach real documents.

We now have a profile becomes one shareable link without a need for account or app install. A caregiver opens it and gets a read-only view of everything they need. And when a question comes up like "what do I do if he won't eat", they can directly ask. Carrie answerss using only what the owner actually wrote and cites which part of the profile the answer came from. The owner can look back at what caregivers asked in a chat log.

How we built it

Next.js 14 (App Router, TypeScript, Tailwind) on top of Supabase for Postgres, Auth, Storage, and pgvector, with OpenAI doing the language-heavy work: Structured Outputs to turn a free-text or voice note into profile fields, gpt-4o-mini-transcribe for voice, text-embedding-3-small for retrieval, and gpt-4.1-mini for the grounded chat answers.

The access model was the part we spent the most care on. A caregiver is anonymous by design without sign up. Rather than writing broad public read policies (which would let anyone enumerate every pet in the database), every caregiver-facing touchpoint goes through a narrowly scoped SECURITY DEFINER Postgres function keyed on an unguessable share_token: one to fetch a profile, one to run the vector similarity search, one to log a chat message. Each function resolves the token to exactly one pet server-side and returns nothing else.

We also leaned on a mix of AI tools rather than one: early planning and the initial project scaffold were done with ChatGPT and Codex, and the majority of feature work was later built with coding agents, verifying almost everything against the real running app and database.

Challenges we ran into

Most of the hard bugs were in connecting the systems:

  • The AI chat itself was not always reliable: it would occasionally claim information wasn't in a caregiver's profile even when it clearly was, if the fact was buried inside a longer field rather than its own dedicated chunk. Fixing it took tightening the grounding instructions, lowering temperature, and switching from a fixed similarity cutoff to a relative one, since a fixed threshold didn't generalize across question types.
  • Getting a demo account working without a real inbox to check ran straight into a genuine architecture mismatch: Supabase's admin-generated login links return session tokens in a URL fragment, while our callback route only understands the ?code= form a real user-initiated sign-in produces. We needed a small client-side bridge page that reads the fragment directly.

Accomplishments that we're proud of

Getting the full loop to actually work. We verified retrieval quality empirically rather than assuming it — testing questions that deliberately used different words than the stored text ("shot" instead of "vaccine") to confirmthe model was generalizing correctly, not just pattern-matching. I have started using it.

What we learned

Modern embedding models generalize everyday language surprisingly well even over a small, personal dataset. I tested if hand-tagging profile sections with synonyms would meaningfully improve retrieval and found it mostly wouldn't, at least at this scale.

What's next for Carrie Notes

  • Named, multiple caregivers per pet instead of one shared link, with their own rotating access.
  • Surfacing unanswered caregiver questions back to the owner as prompts to fill a real gap in the profile, not just a chat log to scroll through.
  • Real photo uploads instead of placeholder avatars.
  • Proactive vaccination-expiry reminders.

Built With

Share this project:

Updates