Field investigation & insurance claim documentation platform · Two Android apps + one web admin panel
Sangam Detective Agency (Bilaspur, Chhattisgarh) currently runs two distinct lines of business — confidential private investigation (surveillance, matrimonial, background, corporate, cyber) and insurance claim investigation (motor, health, fire, and related). Today both run on WhatsApp threads, loose photo folders, and manually assembled Word documents. Evidence is scattered across personal phones, there is no chain of custody, and every insurance company requires its own report format — which is retyped by hand for each claim.
Sangam Investigation replaces that with a single system in three parts. A Customer Android app lets a claimant or client self-submit their case and documents in minutes and then watch its progress. A Staff (Field Investigator) Android app lets an assigned investigator capture geo-tagged, time-stamped photos, video, and location trails directly into the correct case folder — whether they are shadowing a subject for a matrimonial case or documenting a vehicle at an accident site. A Super Admin web panel is the control room: it receives everything in real time, lets the office review and approve, assigns staff to cases, and exports a finished report in the exact format the destination insurance company requires.
| Role | Surface | What they do |
|---|---|---|
| Claimant / Client Ramesh, 41 — car owner in Bilaspur | Customer Android app | Had an accident, needs to file a claim. Wants to submit his DL, Aadhaar, PAN, RC and vehicle photos without visiting the office, then know where his case stands. |
| Private Client Confidential — matrimonial / corporate | Customer Android app | Engages Sangam for a discreet investigation. Submits case brief and subject details, receives the final evidence report through the app. |
| Field Investigator (Staff) Suresh — 6 yrs field experience | Staff Android app | Assigned cases by the office. On a detective case: creates a client folder and drops in photos, videos, and location pins from the field. On an insurance case: reaches the site, records damage video, photographs documents, submits for approval. |
| Super Admin / Office Agency owner + operations staff | Laravel web panel | Reviews every submission, approves or sends back, assigns staff, monitors live investigator location, and generates the final insurer-format report for download and dispatch. |
Role hierarchy is flat and deliberate: there is exactly one Super Admin tier with full access, staff see only cases assigned to them, and customers see only their own cases. No investigator can view another investigator's evidence.
The customer journey is deliberately short — most users are filing under stress, often at an accident site or in a difficult personal situation.
Sessions persist via a long-lived token; re-authentication is only required after 90 days or an explicit logout. There is no password anywhere in the system for customers or staff.
Tapping Submit Documentation opens a guided, resumable wizard. Each step is a single screen with one clear task, so a user standing at a roadside can complete it on a poor connection.
| Step | Captured | Validation |
|---|---|---|
| 1. Claim type | Motor / Health / Fire / Marine / Property / Workmen's Compensation | Required — determines the rest of the wizard |
| 2. Driving Licence | Front + back photo, DL number, expiry | Required for motor. Blur detection on capture. |
| 3. Aadhaar Card | Front + back photo, masked Aadhaar number | Required. Only last 4 digits stored in plain text. |
| 4. PAN Card | Photo, PAN number | Required. Format-validated (AAAAA0000A). |
| 5. RC Certificate | Front + back photo, registration number | Required for motor. Reg-number format check. |
| 6. Vehicle / Subject media | Up to 10 photos + 1 video (max 60s). Auto geo-tag + timestamp burned into EXIF. | At least 3 photos required |
| 7. Policy details | Insurer name, policy number, claim number (if issued) | Insurer required — drives report format |
| 8. Review & submit | Full summary with thumbnail strip, edit any step | Explicit consent checkbox before submit |
Uploads are chunked and resumable — if the connection drops mid-video the app resumes from the last chunk rather than restarting. Files are compressed client-side (photos to ~1.5MB, video to 720p) before upload to keep field data usage reasonable. Everything queues offline and flushes when connectivity returns.
On successful submit the case appears instantly in the Super Admin panel with status Submitted, and the customer receives a WhatsApp confirmation carrying the case reference number.
Every case the customer has filed appears in a My Cases list with a live status. Opening a case shows a vertical timeline stepper so the customer always knows exactly where things stand — the single biggest driver of reduced "what's happening with my case?" phone calls to the office.
A case can also enter Action Required at any point — for example if a submitted document is illegible. The customer receives a push and WhatsApp message naming exactly which document to re-upload, and can do so directly from the case screen without restarting the wizard.
Staff authenticate with the same phone + OTP flow; the backend recognises the number as a staff account and serves the investigator interface instead. There is no separate app to install and no password to lose.
The investigator sees only cases assigned to them by the office. For a private/detective case, the working unit is a Client Folder — a secure container the investigator creates or opens for the subject under investigation:
Everything the investigator adds appears in the Super Admin panel within seconds of upload, organised chronologically under that client's folder.
When the assigned case is an insurance claim, the investigator gets a structured capture flow instead of a free-form folder — because insurers require specific evidence in a specific order.
The flow is fully offline-capable. An investigator at a remote accident site with no signal completes the entire capture, and the app syncs automatically the moment it reconnects — with an explicit "3 items pending upload" indicator so nothing is silently lost.
Six claim categories ship in v1, chosen to cover Sangam's existing insurance-fraud practice as described on their services page:
| Type | Key evidence captured | Special handling |
|---|---|---|
| Motor — Own Damage | Vehicle damage video, odometer, chassis/engine number, DL, RC, Aadhaar, PAN, garage estimate | Guided 6-angle video capture |
| Motor — Third Party | All of the above plus third-party vehicle/property damage, FIR copy, panchnama | Post-mortem report mandatory if fatality = Yes |
| Health / Medical | Hospital bills, discharge summary, prescriptions, diagnostic reports, hospital site photos, treating-doctor statement | Provider-fraud check; hospital verification visit |
| Fire | Site video walkthrough, burn-pattern photos, fire brigade report, inventory of damaged goods, electrical/origin assessment | Fire brigade NOC upload |
| Marine / Transit | Consignment photos, packing list, LR/GR copy, survey report, damage extent documentation | Carrier liability capture |
| Property / Burglary | Premises photos, point-of-entry evidence, FIR copy, inventory of loss, CCTV availability check | Police station verification |
Claim types are configured as data, not hard-coded — the Super Admin can add a seventh category later, define which evidence fields it requires, and it appears in the staff app without an app update.
A Laravel web application, desktop-first, that runs the entire operation.
This is the module that removes the agency's largest manual cost. Each insurance company is configured once with its own report template — its cover page, its section ordering, its field labels, its photo layout, its declaration wording, and its logo placement.
When a reviewed case is approved, the admin selects the destination insurer and the system assembles a finished PDF: cover sheet with claim and policy references, investigator details and visit timestamp, structured findings, the full photo set laid out to that insurer's grid specification, location map with GPS coordinates, document scans as annexures, and the signed declaration block. Video evidence is referenced by secure link (and optionally bundled into a ZIP alongside the PDF).
Both the PDF and a full evidence ZIP are downloadable from the case screen, and the case can be marked as dispatched with the date and recipient recorded. For detective cases the same engine produces the agency's own branded client report rather than an insurer format.
| Event | Recipient | Channel |
|---|---|---|
| OTP for login | Customer / Staff | WhatsApp → SMS fallback |
| Case submitted successfully | Customer | Push + WhatsApp (with case reference) |
| New case in inbox | Super Admin | Push + in-panel badge |
| Case assigned to you | Staff | Push |
| Status changed | Customer | Push + WhatsApp at Report Ready |
| Action required — re-upload document | Customer | Push + WhatsApp naming the document |
| Submission approved / rejected | Staff | Push |
| Report generated & dispatched | Super Admin | In-panel + email copy |
Media stored in a private bucket, served only via short-lived signed URLs. Encrypted at rest and in transit. No evidence file is ever publicly addressable.
Immutable uploads with GPS + timestamp burned at capture. Full audit log of every view, download, and deletion — defensible in legal proceedings.
Full capture works with zero connectivity. Local queue with resumable chunked upload and an explicit pending-sync indicator. Critical for remote accident sites.
Android 8.0+. Runs on 2GB RAM devices. Client-side compression keeps a full case under ~25MB of upload.
Detective case evidence is visible only to the assigned investigator and Super Admin. In-app camera keeps evidence out of the device gallery. Remote wipe on staff deactivation.
App cold start <2.5s. API p95 <400ms. Admin evidence grid paginated and lazy-loaded to stay responsive on cases with 100+ photos.
| Entity | States |
|---|---|
| Case | Submitted → Under Review → Investigator Assigned → In Progress → Report Ready → Closed | side-states: Action Required, Rejected, On Hold |
| Document | Uploaded → Verified → Illegible (re-upload requested) → Replaced |
| Staff Submission | Draft → Pending Sync → Submitted → Approved → Sent Back for Correction |
| Report | Not Generated → Generated → Dispatched to Insurer → Acknowledged |
| Investigator Session | Idle → Active (location posting) → Ended |
These need answers from Sangam before or during Week 1 — most block a specific build task.
Switch between the three surfaces and click through the real flows.
6-week plan · Flutter (Android) × 2 apps + Laravel admin panel. Weeks 5–6 include buffer; a tight 4-week delivery is achievable if insurer templates and the WhatsApp API account are ready on day one.
Two apps from one shared codebase and component library — roughly 40% less work than two native builds. Android-only halves QA and store effort now; iOS stays a later option, not a rewrite.
Auth, queues, media handling, PDF generation and audit logging all exist as mature packages. The report template engine is the only genuinely custom backend module.
Higher delivery and open rates than SMS in tier-2/3 India, with SMS as automatic fallback so no user is ever locked out by a single channel failing.
A local SQLite queue means field capture never depends on signal. This is the difference between an app investigators use and one they abandon at the first dead zone.