Inspection Sticker Pipeline — Operations

Automated pipeline that turns a German vehicle inspection-sticker photo (arriving by email) into a vehicle-record update in the et-operational-platform fleet system.

  • Origin: et-operational-platform PR #1113 · infra setup tracked in radieu/p24-infra#2197
  • n8n workflow: Inspection Sticker Processor (id fjfO358D1NCVWrOJ, bms-4) — see inspection-sticker-processor.md
  • Status: ⏸ inactive — awaiting human validation with one real test email before activation

Architecture

radieu@gmail.com (inspection sticker photo)
        │  Gmail Trigger (poll 5 min)
        ▼
   n8n "Inspection Sticker Processor" (bms-4)
        │  Parse → Wasabi upload → Claude Vision → build payload
        ▼
   POST {INSPECTION_WEBHOOK_URL}  (x-webhook-secret: {INSPECTION_WEBHOOK_SECRET})
        ▼
   et-operational-platform /api/webhooks/inspection-sticker  → Supabase vehicle record

Dependencies

ComponentDetail
n8nbms-4 — https://n8n.bms-4.infra.zintegrowana.online
Gmailradieu@gmail.com (OAuth credential P1dYU1OR6Z1qQ0Zu)
Wasabibucket p24-infra, endpoint s3.eu-central-2.wasabisys.com, prefix inspections/ (credential DC7VuNYMdVTDjjQF)
Claude VisionAnthropic claude-sonnet-4-6, key $env.ANTHROPIC_API_KEY on bms-4
Webhook targetet-operational-platform ($env.INSPECTION_WEBHOOK_URL)
SecretsINSPECTION_WEBHOOK_SECRET + INSPECTION_WEBHOOK_URL in secrets/n8n-bms4.env.sops (PR #2230), synced to bms-4 .env

Runbook

  • Activate (after validation): /n8n activate fjfO358D1NCVWrOJ or n8n UI → toggle Active.
  • Disable in an incident: /n8n deactivate fjfO358D1NCVWrOJ.
  • Per-execution failures (webhook not ok:true) email ecotrans.automation@gmail.com via the Notify Failure (email) node (SMTP credential).
  • Inspect runs: n8n UI → Executions for workflow fjfO358D1NCVWrOJ.
  • Secret rotation: rotate INSPECTION_WEBHOOK_SECRET in secrets/n8n-bms4.env.sops, run secrets-sync to bms-4, and update the matching value on the et-operational-platform side (shared secret).

Pre-activation validation checklist

Activation is a human gate (production vehicle writes + real Gmail polling). Confirm with one test email:

  1. Gmail Trigger emits a parseable subject / from / body for the Parse Email node.
  2. The image attachment is exposed as binary attachment_0 (adjust if n8n names it otherwise).
  3. $('Parse Email').item.binary.attachment_0.data resolves to base64 for the Claude Vision call.
  4. et-op webhook returns { "ok": true }; the false branch emails on failure.

Compliance

  • dev_r_services — row added for this workflow (compliance_workbook=yes, workbook = this doc).
  • EU AI Act — this workflow uses an AI system (Claude Vision for sticker OCR). Before activation, register it in dev_r_ai_systems and add it to eu-ai-act-compliance.md (Annex III obligations apply where the extracted data drives fleet-compliance decisions). Tracked as a follow-up on #2197.