All Projects

Pawsport

AI-powered pet travel assistant

Web ApplicationAIReactTypeScriptPersonal
Pawsport

Overview

Pawsport is an AI-powered assistant that helps pet owners navigate the complex process of international pet relocation. Moving across borders with a pet involves confusing regulations, strict timelines, and overwhelming paperwork. Pawsport turns this stressful experience into a planned, manageable journey — backed by a retrieval-augmented generation (RAG) pipeline that pulls from official government sources so answers are grounded in real regulations, not hallucinated.

Design & Planning

Problem framing

International pet relocation involves fragmented regulations across 190+ countries with strict timelines that change without notice. No centralized tool existed to guide owners step-by-step — most people piece together information from embassy PDFs, Facebook groups, and vet offices, often missing critical deadlines that can strand a pet in quarantine.

The core technical problem is regulatory accuracy: a conversational AI confidently giving wrong information is worse than no AI at all. The design had to solve for both fluency and factual grounding.

Key design decisions

  • RAG over static grounding data — the original design injected static JSON country data as LLM context, which required manual maintenance and still hallucinated. The replacement: a weekly automated pipeline that fetches official government documents (USDA APHIS, Japan MAFF), chunks and tags them with Claude Haiku, embeds them with OpenAI, and stores them in a pgvector database. At query time, the most relevant chunks are retrieved and passed as grounded context to Claude Sonnet for answer generation.
  • Claude Haiku for chunking, Claude Sonnet for generation — Haiku is fast and cheap for the batch tagging pass during ingestion; Sonnet provides higher-quality reasoning at query time when accuracy matters most.
  • Supabase + pgvector — colocates the vector store with the relational database (user auth, community data) in a single managed Postgres instance, avoiding a separate vector DB service.
  • GitHub Actions weekly cron — regulation documents change without announcement; automated re-ingestion every Sunday keeps the vector store current with no manual intervention.
  • Community “Nose Booper” feature — AI cannot provide firsthand accounts of how a specific customs office operates in practice; community members fill that gap with lived experience.

Architecture overview

Ingestion pipeline (weekly): A GitHub Actions workflow fetches official regulation pages (USDA APHIS, Japan MAFF, expandable to new sources), chunks and tags the text with Claude Haiku, embeds chunks with OpenAI text-embedding-3-small, and upserts to Supabase pgvector. Re-runs are fully idempotent.

Query path: React/TypeScript frontend → Vercel serverless functions → similarity search against pgvector → top chunks injected as context → Claude Sonnet generates a grounded, cited answer. The response includes source names and URLs so users can verify against the original government document.

Community layer: The Nose Booper hub is a separate view using the same Vercel serverless layer, backed by Supabase Postgres for user data and posts.

Challenges & what I’d do differently

  • Hallucination on regulatory details was the original critical problem — solved by replacing static JSON grounding with the RAG pipeline against real government documents.
  • Regulation data freshness is now handled automatically by the weekly GitHub Actions cron, but the pipeline still relies on document structure being stable; a scraping breakage would silently produce stale chunks. Would add a staleness check and alerting.
  • Source coverage is currently limited to USDA and Japan MAFF — the pipeline is designed for easy extension (one file per source), but expanding to 190+ countries is significant ongoing work.

Key Features

Interactive AI Travel Assistant

Your 24/7 expert consultant grounded in official government regulations.

  • Personalized Planning — Custom timelines based on your specific route and pet
  • Regulatory Guidance — Vaccination requirements, quarantine rules, and import permits sourced from official documents
  • Cited Answers — Every response surfaces the source document so you can verify
  • 24/7 Availability — Ask questions anytime about your pet’s travel requirements

Example: “I’m moving to Japan in 6 months. What do I do?” The assistant retrieves the relevant Japan MAFF chunks and generates a personalized timeline explaining the critical 180-day wait period, rabies titer test requirements, and microchip standards — with a link to the source document.

Nose Booper – Community Hub

Connect with other pet travelers for support and advice.

  • Route Buddies — Find others flying the same route on similar dates
  • Local Experts — Get advice from people who’ve navigated your specific customs office
  • Emotional Support — Share stories and “boops” with a community that understands

Smart Planning Tools

  • Dynamic Checklists — Auto-generated based on your route and pet type
  • Document Explainers — Plain-English explanations for complex veterinary forms
  • Visual Timelines — See exactly when to visit the vet to avoid travel delays
  • Progress Tracking — Monitor your completion status for all requirements

Technology Stack

Web Application

  • Frontend: React 17, TypeScript, Tailwind CSS
  • Backend: Node.js + Express (Vercel Serverless Functions)
  • Database & Auth: Supabase (PostgreSQL)
  • Deployment: Vercel (CI/CD)

RAG Pipeline

  • Chunking & Tagging: Claude Haiku (claude-haiku-4-5-20251001)
  • Answer Generation: Claude Sonnet (claude-sonnet-4-6)
  • Embeddings: OpenAI text-embedding-3-small (1536 dims)
  • Vector Store: Supabase Postgres + pgvector
  • Automation: GitHub Actions (weekly cron, Sunday 02:00 UTC)
  • Sources: USDA APHIS, Japan MAFF (extensible)