Proof Of Delivery Workflow Blueprint
Capture digital proof of delivery including signature, photo, and notes at delivery completion
| Feature | proof-of-delivery-workflow |
| Category | Workflow |
| Version | 1.0.0 |
| Tags | fleet, pod, delivery, signature, photo, confirmation |
| YAML Source | View on GitHub |
| JSON API | proof-of-delivery-workflow.json |
Actors
| ID | Name | Type | Description |
|---|---|---|---|
driver | Driver | human | Driver capturing delivery proof at the recipient location |
recipient | Recipient | external | Customer or recipient providing signature |
system | System | system | POD validation and storage |
Fields
| Name | Type | Required | Label | Description |
|---|---|---|---|---|
proof_id | text | Yes | Proof ID | |
order_uuid | text | Yes | Order | |
subject_uuid | text | No | Subject (Waypoint/Entity) | |
subject_type | text | No | Subject Type | |
file_uuid | text | No | Photo File | |
remarks | rich_text | No | Remarks | |
raw_data | rich_text | No | Signature Raw Data | |
data | json | No | Structured POD Data | |
proof_type | select | Yes | Proof Type | |
captured_at | datetime | No | Captured At |
Rules
- pod_required_to_complete: Proof of delivery is required to complete an order where pod_required is true
- at_least_one_method: At least one proof method (signature, photo, or notes) must be captured per delivery
- signature_storage: Signature is captured as raw vector or bitmap data and stored securely
- photo_format: Photos must be a supported image format (JPEG, PNG) and within the configured size limit
- linked_to_order: POD is linked to the order and optionally to a specific waypoint or entity
- gps_evidence: Captured GPS coordinates are stored with each POD record as evidence of location
- immutable: POD records are immutable once saved; tampering is prevented by audit logging
- retention: POD is retained for the organization’s configured retention period for legal compliance
- multiple_per_order: Multiple proof records can exist per order (one per waypoint or entity)
- failed_photo_fallback: Failed photo uploads must not block completion if notes or signature was captured
Outcomes
Signature_captured (Priority: 1)
Given:
proof_type(input) eqsignatureraw_data(input) exists
Then:
- create_record
- emit_event event:
pod.signature_captured
Result: Signature recorded and linked to order
Pod_required_missing (Priority: 1) — Error: POD_REQUIRED_MISSING
Given:
- order.pod_required is true
- no proof record exists for this order
Result: Order completion blocked — proof of delivery required
Photo_captured (Priority: 2)
Given:
proof_type(input) eqphotofile_uuid(input) exists
Then:
- create_record
- emit_event event:
pod.photo_captured
Result: Delivery photo saved and linked to order
Invalid_photo_format (Priority: 2) — Error: POD_INVALID_PHOTO_FORMAT
Given:
proof_type(input) eqphoto- uploaded file is not a supported image format
Result: Photo upload rejected — unsupported file format
Notes_captured (Priority: 3)
Given:
proof_type(input) eqnotesremarks(input) exists
Then:
- create_record
- emit_event event:
pod.notes_captured
Result: Delivery notes recorded and linked to order
Errors
| Code | Status | Message | Retry |
|---|---|---|---|
POD_REQUIRED_MISSING | 422 | Proof of delivery is required to complete this order. | No |
POD_INVALID_PHOTO_FORMAT | 422 | Photo must be a JPEG or PNG image. | No |
POD_FILE_TOO_LARGE | 413 | Photo file size exceeds the maximum allowed limit. | No |
POD_NOT_FOUND | 404 | Proof of delivery record not found. | No |
Events
| Event | Description | Payload |
|---|---|---|
pod.signature_captured | Fired when a digital signature is captured | proof_id, order_uuid, captured_at |
pod.photo_captured | Fired when a delivery photo is captured | proof_id, order_uuid, file_uuid, captured_at |
pod.notes_captured | Fired when delivery notes are recorded | proof_id, order_uuid, captured_at |
pod.completed | Fired when all required PODs for an order have been captured | order_uuid, proof_count |
Related Blueprints
| Feature | Relationship | Reason |
|---|---|---|
| order-lifecycle | required | POD unlocks order completion when pod_required is true |
| route-planning | recommended | POD is captured at specific route waypoints |
| delivery-notifications | optional | Customer may receive POD confirmation notification |
AGI Readiness
Goals
Reliable Proof Of Delivery
Capture digital proof of delivery including signature, photo, and notes at delivery completion
Success Metrics:
| Metric | Target | Measurement |
|---|---|---|
| processing_time | < 5s | Time from request to completion |
| success_rate | >= 99% | Successful operations divided by total attempts |
Constraints:
- performance (negotiable): Must not block dependent workflows
Autonomy
Level: semi_autonomous
Human Checkpoints:
- before making irreversible changes
Escalation Triggers:
error_rate > 5
Tradeoffs
| Prefer | Over | Reason |
|---|---|---|
| reliability | speed | workflow steps must complete correctly before proceeding |
Coordination
Protocol: orchestrated
Consumes:
| Capability | From | Fallback |
|---|---|---|
order_lifecycle | order-lifecycle | degrade |
Safety
| Action | Permission | Cooldown | Max Auto |
|---|---|---|---|
| signature_captured | autonomous | - | - |
| photo_captured | autonomous | - | - |
| notes_captured | autonomous | - | - |
| pod_required_missing | autonomous | - | - |
| invalid_photo_format | autonomous | - | - |