リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Intent-based travel personalization, built as a layer inside an OTA. Product decisions and architecture: BUILD_SPEC.md.
npm install
npm run dev # http://localhost:3000, uses an embedded Postgres in ./.pglite
npm test # engine tests (polarity flip, filters, budgets, variants)
Add XAI_API_KEY to .env.local to turn on Grok for chat slot-filling and the "why this fits you" summary. Without it, rule-based fallbacks run.
supabase/schema.sql in the SQL editor; the app also creates the schema and seeds itself on first request. You can also run DATABASE_URL=... npm run db:setup.DATABASE_URL: the pooler stringXAI_API_KEY: your xAI keyXAI_MODEL (optional): defaults to grok-4-fast-non-reasoningDATABASE_URL the app falls back to in-memory Postgres per instance, which works for a quick look but does not persist. Use Supabase.npm run extract re-mines all reviews with Grok (the offline batch job) and recomputes aspect scores.| Path | What |
|---|---|
lib/engine/plan.ts | Filters, scoring, plan assembly, readiness, diversity |
lib/engine/weights.ts | Intent weight matrix (need × party × profile) |
lib/data/reviews.ts | Synthetic reviews, extraction, intent-conditioned aggregation |
lib/engine/profile.ts | Onboarding pairs, persona, contrastive learning, reason chips |
lib/engine/triggers.ts | Long weekends, bridge days, nudge cadence |
lib/llm.ts | Grok client and slot filling (+ rules fallback) |
app/api/* | Route handlers |
app/* | Screens |
public/items/, lib/item-photos.json | Photos for destinations, stays and activities, from Wikimedia Commons under free licences. Each slide credits its photo; the full list is in public/items/CREDITS.md. Stays are fictional, so their photos show the real setting (ghat, lake, village), not a specific property. |
public/covers/, lib/cover-photos.json | Four separate photos per destination for plan cards and plan headers, never the carousel's. The trip type picks which one, so the same place looks different across For You rows. Credits in public/covers/CREDITS.md. |