Merchant Shopfront, Interior, Neighbourhood, Shop Inventory, Site Safety Audit, Vehicle Inspection — 6 types
Scene Understanding
Scene understanding types analyse photographs of physical locations and objects — not documents. with analysis_type: scene_understanding. They return structured assessments with enumerated values rather than text extraction.
These types are used for merchant onboarding verification, field inspection automation, insurance underwriting, and workplace safety audits.
merchant_shopfront — Merchant Shopfront
Analysis type: scene understanding
Analyses the exterior of a business to verify identity, signage quality, and physical condition.
Fields extracted
| Field | Type | Notes |
|---|---|---|
business_name | string | Primary business name as displayed on signage |
business_name_local | string | Business name in local script if different |
signage_text | string[] | All readable text on signs / boards |
signage_quality | string | professional, semi_professional, hand_painted, none |
storefront_condition | string | excellent, good, fair, poor |
logos_detected | string[] | Brand / payment / certification logos visible |
payment_methods_displayed | string[] | UPI/card/wallet logos (e.g. PhonePe, Paytm, Visa, Mastercard) |
phone_numbers | string[] | Any phone numbers visible on signage |
address_visible | string | Address text visible on signage |
scripts_detected | string[] | Scripts / languages visible (e.g. English, Hindi, Tamil) |
operating_hours_visible | string | Displayed business hours or null |
estimated_frontage_meters | number | Estimated width of shopfront in meters |
gstin | string | GSTIN if displayed on signage |
Validation rules
| Field | Rule |
|---|---|
business_name | Required |
signage_quality | Required · Regex ^(professional|semi_professional|hand_painted|none)$ |
storefront_condition | Required · Regex ^(excellent|good|fair|poor)$ |
Example
const result = await client.verify.document({
doc_type: "merchant_shopfront",
file_url: "https://storage.example.com/shop_photo.jpg",
});
// result.output.business_name → "Sri Lakshmi General Stores"
// result.output.signage_quality → "semi_professional"
// result.output.storefront_condition → "good"
// result.output.payment_methods_displayed → ["PhonePe", "Paytm"]
// result.output.scripts_detected → ["Tamil", "English"]
merchant_interior — Merchant Interior
Analysis type: scene understanding
Analyses the inside of a business to assess scale, stock, operations, and digital readiness.
Fields extracted
| Field | Type | Notes |
|---|---|---|
store_type | string | retail, wholesale, service, food_beverage, mixed |
store_scale | string | micro (<100 sqft), small (100-500), medium (500-2000), large (>2000) |
cleanliness | string | clean, acceptable, poor |
lighting_quality | string | good, adequate, poor |
shelf_organization | string | well_organized, moderate, disorganized |
has_billing_counter | boolean | Billing / checkout counter visible |
has_digital_pos | boolean | Digital POS terminal or billing system visible |
staff_visible_count | integer | Number of staff / workers visible |
equipment_visible | string[] | Fridges, display cases, weighing scales, ovens etc. |
product_categories | string[] | Categories of products / services visible |
brand_names_visible | string[] | Recognisable brand names on products / packaging |
estimated_sku_count | string | low (<50), medium (50-500), high (>500) |
notes | string | Any other notable observations |
Validation rules
| Field | Rule |
|---|---|
store_type | Required · Regex ^(retail|wholesale|service|food_beverage|mixed)$ |
store_scale | Required · Regex ^(micro|small|medium|large)$ |
merchant_neighbourhood — Merchant Neighbourhood
Analysis type: scene understanding
Analyses the street and area around a business to assess commercial viability, foot traffic, and risk.
Fields extracted
| Field | Type | Notes |
|---|---|---|
location_type | string | high_street, market, mall, residential, industrial, rural |
business_density | string | dense, moderate, sparse |
foot_traffic_estimate | string | high, medium, low |
vehicle_traffic_estimate | string | high, medium, low |
infrastructure_quality | string | good, adequate, poor — road, drainage, lighting |
residential_proximity | string | close, moderate, far |
adjacent_businesses | string[] | Names or types of neighbouring businesses |
landmark_nearby | string | Notable landmark, mall, station, temple etc. |
road_type | string | main road, lane, highway, market lane etc. |
risk_signals | string[] | Risk indicators: vacant lots, damage, isolation, poor lighting |
notes | string | Any other notable observations about the area |
Validation rules
| Field | Rule |
|---|---|
location_type | Required · Regex ^(high_street|market|mall|residential|industrial|rural)$ |
business_density | Required · Regex ^(dense|moderate|sparse)$ |
shop_inventory — Shop / Retail Inventory
Analysis type: scene understanding
Assesses shelf stock levels, product variety, organisation, and inventory health.
Fields extracted
| Field | Type | Notes |
|---|---|---|
stock_level | string | low, medium, high |
product_categories | string[] | e.g. beverages, snacks, dairy, fresh produce |
brand_names_visible | string[] | Recognisable brands on shelf |
display_types | string[] | shelf, rack, floor stack, refrigerated, hanging, counter |
shelf_count | integer | null if not countable |
total_items_estimated | integer | null if not estimable |
empty_shelf_percentage | number | Float 0-100 or null |
organization_quality | string | well_organized, moderate, disorganized |
cleanliness | string | clean, acceptable, poor |
price_tags_visible | boolean | null if unclear |
signage_visible | boolean | Section labels, price boards, offers |
expiry_concerns | boolean | Visibly expired or near-expiry products |
temperature_controlled | boolean | Fridges, freezers, cold storage visible |
notes | string | null |
Validation rules
| Field | Rule |
|---|---|
stock_level | Required · Regex ^(low|medium|high)$ |
site_safety_audit — Construction / Site Safety
Analysis type: scene understanding
Assesses PPE compliance, hazard detection, and safety score for construction or industrial sites.
Fields extracted
| Field | Type | Notes |
|---|---|---|
safety_score | number | Float 0-10 |
ppe_compliance_pct | number | Float 0-100 |
ppe_details | object[] | Each: type (helmet/vest/boots/gloves/goggles/harness/ear protection), compliance (full/partial/none) |
violations | string[] | Specific safety violations observed |
hazards_detected | string[] | Open excavation, exposed wiring, falling objects risk, chemical spill etc. |
housekeeping | string | good, acceptable, poor |
worker_count_visible | integer | null if not countable |
work_activity | string | excavation, welding, lifting, painting, scaffolding, concreting |
scaffold_condition | string | good, fair, poor, not_present |
barricading_present | boolean | Safety barriers around hazard zones |
safety_signage_visible | boolean | Warning signs, caution boards |
first_aid_visible | boolean | null if unclear |
fire_extinguisher_visible | boolean | null if unclear |
lighting_adequate | boolean | For indoor / underground sites |
weather_conditions | string | clear, rainy, dusty etc. if discernible |
notes | string | null |
Validation rules
| Field | Rule |
|---|---|
safety_score | Required |
ppe_compliance_pct | Required |
Example
const result = await client.verify.document({
doc_type: "site_safety_audit",
file_url: "https://storage.example.com/construction_site.jpg",
});
// result.output.safety_score → 6.5
// result.output.ppe_compliance_pct → 72.0
// result.output.violations → ["Two workers not wearing helmets", "Open excavation without barricading"]
// result.output.hazards_detected → ["Open excavation", "Unsecured scaffolding"]
vehicle_inspection — Vehicle Inspection
Analysis type: scene understanding
Assesses vehicle condition from photographs — used for insurance pre-inspection, loan collateral checks, and fleet management.
Fields extracted
| Field | Type | Notes |
|---|---|---|
overall_condition | string | good, fair, poor |
damage_severity | string | none, minor, moderate, severe |
damage_details | object[] | Each: area (e.g. front bumper, rear left door), type (dent/scratch/crack/rust/paint peel/broken), severity (minor/moderate/severe) |
vehicle_type | string | car, SUV, truck, two-wheeler, bus, three-wheeler |
make_model | string | Manufacturer and model (e.g. Maruti Swift) |
color | string | null if unclear |
year_approx | string | Approximate model year if identifiable |
license_plate | string | null if not visible |
tire_condition | string | good, worn, flat, missing |
rust_visible | boolean | null if unclear |
fluid_leak | boolean | null if unclear |
glass_damage | boolean | Cracked / broken windshield or windows |
interior_visible | boolean | Can interior be seen |
interior_condition | string | good, fair, poor or null |
odometer_reading | string | null if not visible |
modifications_visible | string[] | Aftermarket parts, wraps, accessories |
photos_recommended | string[] | Areas needing closer inspection |
Validation rules
| Field | Rule |
|---|---|
overall_condition | Required · Regex ^(good|fair|poor)$ |
damage_severity | Required · Regex ^(none|minor|moderate|severe)$ |
Example
const result = await client.verify.document({
doc_type: "vehicle_inspection",
file_url: "https://storage.example.com/car_front.jpg",
});
// result.output.overall_condition → "fair"
// result.output.damage_severity → "minor"
// result.output.damage_details → [
// { area: "front bumper", type: "scratch", severity: "minor" }
// ]
// result.output.tire_condition → "good"