Recued
Menu
← Back to recipes

Write the photo lines

by recued-core v2 53 views 2 installs

Use “Write the photo lines” in Recued. Look at each scanned photo and write one warm line naming the people recognised in it. A small copy with its embedded details removed is what the model sees, and the original is never sent. Run it again until the queue is empty.

Complete workflow

Photo Attribution 16 pinned recipes

Use Photo Attribution in Recued to match one event's photos to the people you know, write a warm line for each picture, review them, and send everyone their own. Faces are matched on your machine; your photos are never copied; sending asks first. First install two programs on the server: face_recognition (pipx) and libvips (brew install vips). Then allow their actions on each tool pack's Access tab. Open “Scan an event folder” for the rest of the setup.

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

Write the photo lines
This recipe

Use “Write the photo lines” in Recued. Look at each scanned photo and write one warm line naming the people recognised in it. A small copy with its embedded details removed is what the model sees, and the original is never sent. Run it again until the queue is empty.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2

Use “Scan an event folder” in Recued. Compare every photo in one event folder against the people you know, and record who appears in each picture. Photos stay where they are and are never copied. Matching happens on your own machine.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2

Use “The roster” in Recued. See everyone Recued can recognise, whether each person can actually be written to, and who has been retired — and open any of them from here, which is the only way in to a person.

photosrosterpeople
by recued-core pinned v1

Use “Review photos before sending” in Recued. List the photos waiting for a look, with the line that will arrive alongside each one and the names it was written for. Open a photo to approve it, rewrite the line, or leave it out.

pack:photo-attributionphotofacedelivery
by recued-core pinned v1

Use “Review one photo” in Recued. See the picture itself beside the names Recued matched in it, correct the line it wrote, and say whether it is ready to send — the one place a wrong name or a wrong sentence can be caught before it reaches somebody.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2

Use “Look at one person” in Recued. See who a roster entry actually is — their reference photo shown from your own folder, beside the name and address Recued will use for them — so a wrong or duplicated face is something you can see rather than guess at.

pack:photo-attributionrosterpeoplephoto
by recued-core pinned v1
Show all 16 recipes

Use “Set someone's details” in Recued. Fill in an email address and the name that messages should use for one person on your roster. A field left blank keeps what is already there rather than clearing it. The key derived from their reference photo cannot be changed.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2

Use “Retire a person” in Recued. Take somebody off the roster without deleting anything they are attached to — a duplicate left behind by a renamed reference photo, or someone who should not be sent to any more. Their photos stay on record; they simply stop being matched and stop being sent to.

pack:photo-attributionrosterpeoplecleanup
by recued-core pinned v2

Use “Import the roster (CSV)” in Recued. Add everyone to the roster from a spreadsheet in one go — their key, the name messages should use, and their email address — instead of typing each person in after the first scan.

pack:photo-attributionrostercsvimport
by recued-core pinned v3

Use “Export the roster (CSV)” in Recued. Copy out everyone on the roster as a spreadsheet, or - on an empty roster - get the column headings the importer expects, so you can fill them in and import the list instead of typing it.

pack:photo-attributionrostercsvexport
by recued-core pinned v1

Use “See who is ready to receive” in Recued. List everyone with approved photos waiting, and separately everyone recognised who has no email address yet. Send each person from here. Nobody is dropped quietly, because a missing address is the usual reason a photo never arrives.

pack:photo-attributionphotofacedelivery
by recued-core pinned v1

Use “Re-describe a person” in Recued. After changing someone's name, rebuild the stored names on their photos and queue those photos to be written again. Photos already approved are left alone and counted, because somebody signed those off.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2
Skip a photo
Background automation

Use “Skip a photo” in Recued. Leave one photo out of the sending queue and release everyone who was waiting on it. Their other photos are untouched, so this cancels one picture for everyone in it rather than cancelling a person.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2
Send one person their photos
Background automation

Use “Send one person their photos” in Recued. Send one person a single message carrying every photo of them that has been approved. A fresh copy of each picture is made with its embedded details removed, and that copy is what travels.

pack:photo-attributionphotofacedelivery
by recued-core pinned v2

Use “See what has been delivered” in Recued. Show who has received which photo and when, one row per person per picture, with the message it arrived under. It reads information without changing anything.

pack:photo-attributionphotofacedelivery
by recued-core pinned v1
View pack details, dependencies, and permissions →

What this does

Takes photos that have been scanned but not yet written up, looks at each one, and writes a single warm line naming the people recognised in it. A group photo gets one line naming everyone, not one line each.

It works through a batch per run. Run it again until the queue is empty.

What is seen by the model

Matching happened on this machine. Writing does not: each photo goes to whichever model you have configured.

What travels is a downsized copy with its embedded details removed — camera, capture time and any location are stripped before it leaves, and the copy exists only for the length of the run. The full-size original is never sent and nothing is kept afterwards. If you would rather nothing left at all, configure a local model; the step is otherwise identical.

Changing the wording

What to write is read as "produce a ⟨this⟩", so name the thing you want — "a short playful caption", "one plain line". An instruction like "write something funny" reads as a request to produce a thing called "write something funny", and the result gets stranger rather than funnier.

The names of the people recognised are added for you and cannot be moved or removed.

⚠ Changing the wording does not rewrite anything already written. It applies from now on, so a mixed batch will carry two styles. Re-running will appear to do nothing, because those photos have already been written up.

What it costs

Measured, not estimated — one photo through this recipe against a real model:

the picture258 tokens, flat
the words around itabout 100 tokens
in, per photoabout 360 tokens
back, per photoabout 25 tokens

The picture is a flat 258 because a 768-pixel copy lands inside one image tile; it costs the same whether the original was a phone photo or a wall poster. That is the whole reason the copy is made — sending a 4000-pixel original tiles into roughly twenty-four of those, so the copy is about a twenty-fourth of the bill.

Photos per run is therefore your spend limit. The default 25 is about 9,000 tokens in. The most a single run will do is 200, roughly 72,000 — ask for more and the run stops rather than quietly doing part of it. On a fast model a full batch is a fraction of a penny; on a quality model, a few pence.

It asks for the fast model, because an unexpected bill is the worse surprise and a caption is not where a frontier model earns its keep. If the lines read flat, copy this recipe in the Kitchen and change the model it asks for — the choice is fixed when the recipe is written rather than each time it runs, so that the cost of a run is knowable before it starts.

The three counts

Could not read the photo means the file was not where its record says. Almost always it was moved or deleted after the scan; re-scanning repairs the records.

Model refused or failed leaves the photo in the queue, so re-running retries only those. No photo is ever written up twice.

Could not save means the model answered but the record did not take it — re-running costs a second call for that photo. Worth a look before you re-run.

Needs libvips

brew install vips, or apt install libvips-tools. Each photo is shrunk to a small stripped copy before the model sees it — the original never leaves the machine, and the copy is deleted when the run ends.

The preview width is also what this step costs. Models bill pictures by area, so the 768-pixel copy is about a twenty-fourth of the bill of sending the photo untouched. Raise it only if you can show the model is missing faces at 768.

How it works 21 steps

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

Process (21 steps)
■ style trim
Trim whitespace from setting sentence style
■ has_style compare
Check if style has data
⚠ style_guard guard
Stop if has style equals
■ now date_add
Add 0 seconds to
◆ queue recued-core.photo-attribution.photo.search
Search photo on photo attribution
■ rows default
Apply default
■ queued_n count
Count items in rows
◆ previews recued-core.photo-derive.image.preview
Preview image on photo derive
■ flat map
Extract from each item
■ readable filter
Filter by condition
■ ready filter
Filter by condition
✦ described core.ai.generate
AI generates content from a template
◆ saved recued-core.photo-attribution.photo.update
Update photo on photo attribution
skip: item.ok not_equal true
■ resize_failed filter
Filter by condition
■ resize_failed_n count
Count items in resize failed
■ ai_failed filter
Filter by condition
■ ai_failed_n count
Count items in ai failed
■ save_failed filter
Filter by condition
■ save_failed_n count
Count items in save failed
■ written_n count
Count items in ready
■ card to_summary
Format results as a summary card
▼
Output
summary card
Settings 4 configurable

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

tone setting = warm
batch size setting = 25
preview width setting = 768
sentence style setting = one warm sentence about what the people in this photo are doing

Uses (4 operations)

Pack operation Search photo on photo attribution recued-core.photo-attribution.photo.search
Pack operation Preview image on photo derive recued-core.photo-derive.image.preview
AI models AI generates content from a template core.ai.generate
Pack operation Update photo on photo attribution recued-core.photo-attribution.photo.update

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

What it's allowed to do

Write Pack Photo Attribution external change
Read: photo.search · No approvalWrite: photo.update · No approval
Read AI models core.ai.generate read-only

1 more isn't listed here. You'll see it at install.

Data it touches

SurfacesAI models

About

Tags

pack:photo-attributionphotofacedeliveryrecordsv1

Details

21 steps 4 configurable settings recipe_id: describe-photos