Gemini-powered AI chat for both Posters and Contractors — advice, proposal writing, smart suggestions, and home analysis.
ContractorAIAssistantScreen — terracotta chat bubbles, sparkle avatar
sendChatMessage(sessionId, message, "contractor")
AIAssistantScreen — deepBlue bubbles, checklist format, in-app links
sendChatMessage(sessionId, message, "poster")
EmptyState — hero IconCircle, capability grid, QUICK_PROMPTS array
createChatSession(role) → loadChatHistory(sessionId, role)
ProposalWriterView — tone selector, editable preview, terracotta accent
generateProposal(jobDetails, tone) → useMutation(api.jobs.bids.update)
SmartSuggestionsView — AI dashboard cards with apply/dismiss actions
useQuery(api.ai.getSmartSuggestions, { contractorId })
HomeAdvisorView — photo upload, AI analysis, deepBlue accent
analyzePhoto(imageUri) → Gemini 3 Flash vision endpoint
ChatHistoryView — searchable list, resume conversation, clear option
getChatSessions(role) → ChatSessionSummary[]
AIPreferencesView — personality selector, toggles, model info, usage KPIs
useQuery(api.users.preferences.getAI) → useMutation(api.users.preferences.updateAI)