export type QuestionInputType = | "long_text" | "ranked_list" | "multi_select_with_text"; export interface QuestionCategory { id: string; name: string; start: number; end: number; description: string; } export interface ProfileQuestion { id: `q${number}`; number: number; categoryId: string; prompt: string; inputType: QuestionInputType; weight: number; tags: string[]; options?: string[]; followUps: string[]; } export interface QuestionsDocument { version: string; categories: QuestionCategory[]; questions: ProfileQuestion[]; } export interface ProfileAnswer { questionId: string; answer: string | string[]; followup?: string; dealbreakerSeverity?: "low" | "medium" | "high"; updatedAt: string; } export interface CompatibilityProfile { id: string; userId: string; displayName: string; age: number; location?: string; gender?: string; interestedIn?: string[]; answers: Record; narrativeSummary?: string; disgustTriggers: string[]; captivatingTraits: string[]; profileComplete: boolean; paidEntry: boolean; createdAt: string; updatedAt: string; } export interface MatchCard { matchId: string; profileId: string; displayName: string; age: number; location?: string; compatibilityScore: number; sharedTraits: string[]; cautionNotes: string[]; status: "suggested" | "accepted" | "active" | "ended"; } export interface OpenClawMessage { role: "user" | "assistant" | "system"; content: string; createdAt: string; }