Recued
Menu
← Back to recipes

Prepare a photo for delivery

by recued-core v2 8 views

Use “Prepare a photo for delivery” in Recued. Extract one photo's embedded metadata, record exactly what it was carrying, then produce a metadata-stripped delivery copy and a thumbnail derived from that stripped copy.

Complete workflow

Job Photo Delivery 7 pinned recipes

Use Job Photo Delivery in Recued for exif, metadata, privacy, and gps. It includes 16 built-in actions and 6 ready-to-run workflows. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Use “Prepare a photo for delivery” in Recued. Extract one photo's embedded metadata, record exactly what it was carrying, then produce a metadata-stripped delivery copy and a thumbnail derived from that stripped copy.

pack:job-photo-deliveryphotoexifmetadata
by recued-core pinned v2

Use “Open a photo set” in Recued. Open one delivery set for a customer. The set is keyed on its label, so re-running with the same label converges on the same set rather than opening a second one.

pack:job-photo-deliveryphotodeliveryrecords
by recued-core pinned v2

Use “Add a photo to a set” in Recued. Register one inbound file record as a photo in a set.

pack:job-photo-deliveryphotorecordsv2
by recued-core pinned v2

Use “Review what a set is carrying” in Recued. Show, photo by photo, what a set's images were carrying before they were stripped — GPS coordinates, camera, device serial, capture time. It reads information without changing data in the connected service.

pack:job-photo-deliveryphotoprivacydisclosure
by recued-core pinned v2

Use “Deliver a photo set” in Recued. Mail a set's prepared photos to the customer as attachments.

pack:job-photo-deliveryphotodeliverymail
by recued-core pinned v2

Use “Show the photo sets” in Recued. List photo sets with their customer, status and photo counts. Read-only — it opens no image and runs no CLI.

pack:job-photo-deliveryphotoboardrecords
by recued-core pinned v2
Show all 7 recipes
View pack details, dependencies, and permissions →

What it does, in order

  1. Extract the embedded metadata with ExifTool and persist it as a JSON record. That record is the durable answer to "what was this photo carrying" — it outlives the stripped copy.
  2. Disclose it onto the photo row: whether there were GPS coordinates, what they were, the camera make/model, the device serial, the capture time.
  3. Strip — ExifTool writes a new copy with -all=. The original file is never mutated and no _original backup is made.
  4. Thumbnail — from the stripped copy.

⛔⛔ Step 4 takes the STRIPPED copy as its source, and that is load-bearing, not tidiness. Verified live on 2026-07-30: vips thumbnail writes PNG with no strip option, and a thumbnail taken from the original carried 31 metadata keys through, including full GPS. So a pack that stripped the delivery copy but thumbnailed the original would hand out a clean photo and leak the customer's coordinates in the preview beside it. Thumbnailing the stripped copy yields a clean file — also verified.

vips image.to_jpeg and image.to_webp strip on their own (their save options end in strip), so if you add a web-sized variant later you do not need a second ExifTool pass. image.thumbnail, image.resize and image.convert do not — they are the PNG paths, and they carry metadata through.

Images only. Add a photo to a set refuses non-images, and that boundary matters here: ExifTool documents PDF metadata edits as reversible because old objects can remain in the file, so -all= on a PDF is nullification, not removal. This pack never sees a PDF.

GPS is disclosed as ExifTool formats it51 deg 30' 12.56", not a decimal pair. It is recorded to be read by a human deciding whether to send, not to be computed on.

Re-running is refused once a photo is prepared. Each run persists new content-addressed copies, and re-preparing would orphan the previous ones with nothing to reclaim them. Delete the photo row and re-add it if you need to redo the work.

How it works 45 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (45 steps)
photo_id trim
Trim whitespace from setting photo id
id_present compare
Check if photo id has data
id_guard guard
Stop if id present equals
photo ?
photo_found compare
Check if photo record id has data
photo_guard guard
Stop if photo found equals
already_prepared compare
Check if photo record status equals prepared
prepared_guard guard
Stop if already prepared equals
source_id default
Apply default
source_present compare
Check if source id has data
source_guard guard
Stop if source present equals
meta_extract ?
meta_ref default
Apply default
meta_ref_present compare
Check if meta ref has data
meta_ref_guard guard
Stop if meta ref present equals
meta_persist ?
meta_record_id default
Apply default
meta_read ?
meta_text decode_base64
Apply decode_base64
meta_list json_parse
Apply json_parse
meta_raw default
Apply default
exif rename
Rename fields in
has_location compare
Check if exif gps latitude has data
has_device_id compare
Check if exif device serial has data
location_text template
Generate text from a template
found_location ternary
Apply ternary
camera_text template
Generate text from a template
camera trim
Trim whitespace from camera text
captured_at default
Apply default
strip ?
stripped_ref default
Apply default
stripped_present compare
Check if stripped ref has data
stripped_guard guard
Stop if stripped present equals
delivery_persist ?
delivery_ref default
Apply default
thumb ?
thumb_temp_ref default
Apply default
thumb_produced compare
Check if thumb temp ref has data
thumb_persist ?
skip: step.thumb_produced equal false
thumb_ref default
Apply default
delivery_ready compare
Check if delivery ref has data
delivery_guard guard
Stop if delivery ready equals
prepared_at date_add
Add 0 seconds to
photo_update ?
card to_summary
Format results as a summary card
Settings 2 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

photo id setting = [object Object]
thumb width setting = 480

About

Tags

pack:job-photo-deliveryphotoexifmetadataprivacyexiftoolvipsrecordsv2

Details

45 steps 2 configurable settings recipe_id: prepare-photo