Poster (homeowner) rapid photo capture and batch job creation. Poster palette: deepBlue — AI-powered job type detection via Gemini 3 Flash.
useMassCapture: hasPermission === false
CameraView component — full screen camera overlay
onCapture, onNewJob, onDone callbacks
Alert.alert when totalPhotos > 0 and close pressed
PhotoGrid + split/delete per photo
splitGroupAtPhoto, removePhoto callbacks
Empty component: !state.session
useJobTypeDetection — Gemini 3 Flash via Convex
detectForGroups with onProgress/onResult/onError
AddressAutocomplete + property chips from Convex
handleSelectProperty, handleAddressSelect
AddressAutocomplete with StructuredAddress
isNewAddress state, handleAddressSelect
JobTypeSelector modal with FlatList
alternatives[] from AI detection, allJobTypes from hook
Filters by name, category, and keywords
searchQuery state filters allJobTypes
createJobBatch Convex mutation
isSubmitting: true, buttons disabled
Partial success: successCount < totalCount
showToast type: "warning", errorCount tracked
validateCards checks title, description, jobTypeId
showToast type: "error" per missing field