How zanzers/palawan_invest works
Palawan Home combines a public property catalog and an agent dashboard with an AI listing assistant. Public visitors can search listings without AI; agents submit assistant requests that are authenticated, rate-limited, answered through controlled tools, and persisted with conversation history and tool logs. The README documents planned capabilities such as viewing requests and listing writes, but their implementations are not established by the excerpts. Relationships below use the shown route code, source-index references, or README; unsampled UI and integrations are not inferred beyond those references.
Main entry points: route.ts Assistant API · listings.queries.ts Listing queries · page.tsx Catalog page · registry.ts Tool registry
Components 21
Public Catalog
- Catalog page
src/app/(agent)/dashboard/page.tsx - Search controls
src/components/dashboard/SearchBar.tsx - Featured listings
src/components/ListingCards/FeaturedListings.tsx - Direct search API
src/app/listings/route.ts
Agent Dashboard
- Dashboard shell
src/app/(agent)/dashboard
AI Assistant
- Assistant API
src/app/assistant/route.ts - Prompt and validation
src/api/schema/assistant_schema.ts - Tool registry
src/lib/ai/registry.ts - Search listing tool
src/lib/ai/tools/search-listing.ts - Get listing tool
src/lib/ai/tools/get-listing.ts - LLM fallback client
src/lib/openai/client.ts
Data and Security
- Conversation history
src/services/conversation/conversations.ts - Usage limits
src/services/usage/usage.ts - Session authentication
src/lib/auth/authenticate.ts - Listing queries
src/services/listing/listings.queries.ts - Listing mapping
src/lib/services/listings.service.ts - Supabase client
src/lib/supabase/server.ts
Other components
- Public visitor
- Agent
- LLM providers
- Supabase data platform
Connections 24
- Public visitor → Catalog page: browses
- Catalog page → Search controls: renders
src/app/(agent)/dashboard/page.tsx - Catalog page → Featured listings: renders
src/app/(agent)/dashboard/page.tsx - Featured listings → Listing queries: loads listings
src/components/ListingCards/FeaturedListings.tsx - Search controls → Direct search API: submits search
- Direct search API → Listing queries: queries listings
src/app/listings/route.ts - Listing queries → Listing mapping: maps rows
src/services/listing/listings.queries.ts - Listing queries → Supabase client: queries through
src/services/listing/listings.queries.ts - Supabase client → Supabase data platform: connects to
src/lib/supabase/server.ts - Agent → Dashboard shell: uses
- Agent → Assistant API: sends message
- Assistant API → Prompt and validation: validates request
src/app/assistant/route.ts - Assistant API → Session authentication: verifies session
src/app/assistant/route.ts - Assistant API → Usage limits: consumes limit
src/app/assistant/route.ts - Assistant API → Conversation history: loads and saves
src/app/assistant/route.ts - Assistant API → LLM fallback client: requests completion
src/app/assistant/route.ts - LLM fallback client → LLM providers: tries targets
src/lib/openai/client.ts - Assistant API → Tool registry: dispatches tool calls
src/app/assistant/route.ts - Tool registry → Search listing tool: executes
src/lib/ai/registry.ts - Tool registry → Get listing tool: executes
src/lib/ai/registry.ts - Search listing tool → Listing queries: searches listings
src/lib/ai/tools/search-listing.ts - Session authentication → Supabase data platform: verifies user
src/lib/auth/authenticate.ts - Conversation history → Supabase data platform: persists history
- Usage limits → Supabase data platform: enforces daily limits