Tutorial

Insurance Claims App

Build a fraud-proof claims app with Immutis. A complete tutorial for insurance companies.

45 min
Intermediate
React Native
1-10 users

Overview

In this tutorial, you'll build a complete insurance claims app that:
• Captures photos with hardware attestation
• Records GPS location automatically
• Verifies evidence authenticity
• Generates forensic certificates

By the end, you'll have a production-ready claims workflow.

Project Setup

Create a new React Native or iOS/Android project:

npx create-expo-app ClaimsApp
cd ClaimsApp
npm install @immutis/react-native

Or use your existing insurance app.

Step 1: Configure Immutis

Wrap your app with ImmutisProvider:

// App.tsx
import { ImmutisProvider } from '@immutis/react-native'

export default function App() {
  return (
    <ImmutisProvider 
      apiKey={process.env.IMUTIS_API_KEY}
      environment="production"
    >
      <NavigationContainer>
        <AppNavigator />
      </NavigationContainer>
    </ImmutisProvider>
  )
}

Step 2: Create Claims Screen

// screens/NewClaim.tsx
import { useImmutis } from '@immutis/react-native'
import { useState } from 'react'

export function NewClaimScreen({ navigation }) {
  const { capture } = useImmutis()
  const [capturing, setCapturing] = useState(false)
  
  const handleCapture = async () => {
    setCapturing(true)
    
    try {
      // Capture evidence with location and timestamp
      const evidence = await capture({
        type: 'photo',
        location: true,
        timestamp: true,
        metadata: {
          claimType: 'property-damage',
          userId: currentUser.id
        }
      })
      
      // Navigate to review
      navigation.navigate('ReviewClaim', { evidence })
    } catch (error) {
      Alert.alert('Error', 'Failed to capture evidence')
    } finally {
      setCapturing(false)
    }
  }
  
  return (
    <View style={styles.container}>
      <Text style={styles.title}>Document Damage</Text>
      <Button onPress={handleCapture} disabled={capturing}>
        {capturing ? 'Capturing...' : 'Take Photo'}
      </Button>
    </View>
  )
}

Step 3: Automatic Location

Location is captured automatically when you pass location: true.

The evidence will include:
• latitude: number
• longitude: number  
• altitude: number (if available)
• accuracy: number (meters)

This proves exactly where the damage was documented.

Step 4: Review & Submit

// screens/ReviewClaim.tsx
export function ReviewClaimScreen({ route, navigation }) {
  const { evidence } = route.params
  
  return (
    <View>
      <Image source={{ uri: evidence.thumbnail }} />
      <Text>Location: {evidence.latitude}, {evidence.longitude}</Text>
      <Text>Timestamp: {new Date(evidence.timestamp).toLocaleString()}</Text>
      
      <Button onPress={() => submitClaim(evidence)}>
        Submit Claim
      </Button>
    </View>
  )
}

Step 5: Backend Verification

When a claim is disputed, verify authenticity:

// server/claims.js
async function verifyClaim(evidenceId) {
  const response = await axios.post(
    `https://api.immutis.com/v1/evidence/${evidenceId}/verify`,
    { standards: ['sha256', 'hardware', 'timestamp'] },
    { headers: { Authorization: `Bearer ${API_KEY}` }}
  )
  
  return response.data
}

// Generate forensic certificate
async function generateCertificate(evidenceId) {
  return axios.post(
    `https://api.immutis.com/v1/evidence/${evidenceId}/certificate`,
    { format: 'forensic' },
    { headers: { Authorization: `Bearer ${API_KEY}` }}
  )
}

Step 6: Generate Certificates

For legal proceedings, generate a certificate:

async function handleDispute(claimId) {
  const claim = await getClaim(claimId)
  
  // Verify first
  const verification = await verifyClaim(claim.evidenceId)
  if (!verification.valid) {
    throw new Error('Evidence not authentic')
  }
  
  // Generate certificate
  const cert = await generateCertificate(claim.evidenceId)
  
  // Send to legal team
  await sendCertificateToLegal(cert.downloadUrl)
}

Complete Flow

1. User captures damage photo → Hardware attestated
2. Location & timestamp added automatically
3. Evidence stored securely
4. Claim submitted for review
5. Adjuster verifies if needed
6. Certificate generated for legal

This creates a complete chain of custody for each claim.