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.
Send one person their photos
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.
Complete workflow
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.
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.
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.
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.
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.
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.
Show all 16 recipes
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.
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.
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.
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.
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.
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.
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.
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.
Use “Records runtime” in Recued. It helps you complete this workflow using the connections and settings you choose.
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.
What the message says
You write it. Message is the whole body, and three things are filled in:
{name}— the name you chose for that person{event}— whatever you called this event{photos}— the lines about each picture, one per paragraph
The default reads:
Dear Maggie,
>
Here are your photos from the Christmas party.
>
Maggie and Tom are mid-laugh by the tree.
⚠ A message with no {photos} is refused. Without it the pictures would arrive with nothing said about them, and nothing downstream would notice.
{event} works in the subject too.
What gets sent
One message carrying this person's approved photos — up to fifty of them. Beyond that they receive the rest on the next send, in a second message.
A fresh copy of each picture is made at the moment of sending with its embedded details removed, and that copy is what is attached. Your originals are untouched and are not what travels — a photograph taken at someone's home carries that home's location, and it should not go out with it.
Those copies stay in your Files. They are stored by their contents, so sending the same photo again reuses the same copy rather than making another one; the count grows with the photos you have sent, not with how often you send. Delete them from Files when you want to — deliberately, on the surface where deleting is what you came to do.
⚠ They used to be deleted here, and that was worse. Deleting is the one kind of action Recued asks you to confirm even when you are driving it yourself, so tidying up meant a second approval after every send — raised once the message had already gone, about files you no longer had any decision to make about.
Before it will send
The person needs an email address and a mailbox to send from, and at least one of their photos must be approved. Any of those missing and it stops rather than sending a partial message.
Two numbers to read
Photos attached against what you expected. An attachment over the size limit is dropped before the message is built, so a message can go out successfully carrying fewer pictures than you meant.
One message stays a message
Somebody who appears in thirty photos would otherwise get all thirty in one email. At a realistic few megabytes each that is a hundred-megabyte message, and every mail provider refuses one: Gmail stops at 25 MB, Outlook at 20. Each photo is individually fine, so nothing would have warned you — the refusal arrives from the provider, after Recued has told you the send worked.
So photos are attached until Largest message to build is used up, and the rest wait for the next send. Only the photos that will actually go are copied and re-encoded; the ones held back are not touched until the send that carries them. Recued works out how many will fit by preparing the first one and measuring it, so when the photos are of a piece — which they are, coming off one camera at one event — splitting a batch across several messages costs no more than sending it in one. They stay exactly as they were: still waiting, still attached to that person, picked up the next time you send to them. **Held back for the next send** on the card is how many, and it is not a failure — send again and they go.
⚠ Picture quality re-encodes, and that can make a photo BIGGER. Every attachment is written out fresh at the quality you set (92 by default) with the camera details stripped. A photo that was already saved at a lower quality comes out larger than the file on disk — no sharper, just bigger, because detail thrown away once cannot come back. It matters at the edge: a photo a little under the 3 MB attachment limit can cross it after re-encoding, and an over-limit photo is dropped while the message sends anyway. If you are attaching large photos and the count looks short, lower the quality before suspecting anything else.
⚠ Sent but not recorded should be zero. It means the message went but some records still read as waiting, so a later run would try again. Each message carries a reconciliation key that prevents a duplicate delivery, but fix the records before the next send rather than after.
Not offered to an AI, and why that is not enough on its own
Sending is kept out of the chat and MCP tool catalog. The pack already treats approving a photo as a human act (the review card is closed too); putting someone's picture in their inbox is the larger version of that decision. An AI can still say who is ready to hear from (send-photos); a person presses send.
Be clear about what that buys. Leaving the catalog means an AI is not handed this as a tool — it does not mean the recipe cannot be reached, since a caller that already knows its name can use the generic runner.
Sending always asks first — including when you do it yourself. Recued holds the run at the send and shows you what is about to go out; the message does not leave until you approve it. That is not the ordinary write approval (an ordinary write of yours is never gated); it is a rule specifically about mail crossing out of your trust boundary, and it applies to you and to an AI alike, for different reasons. Measured in mail-send-gate-position.test.ts, which asserts which step holds rather than merely that one did.
⚠ An earlier version of this note said the opposite — that the mail left and the pause landed on the following step. That reading came from a test harness that drives the engine directly and therefore has no approval gate wired at all; an absent gate and an admitting gate look identical from inside a run. Sending is gated. It is kept out of the catalog anyway, because the pack already treats approving a photo as a human act and putting someone's picture in their inbox is the larger version of that decision.
How it works
Inspect the data fetches, transforms, gates, and output this recipe runs.
Settings
Configurable at install. Defaults shown — change them anytime in Recued.
quality
setting
=
92
subject
setting
=
Your photos from {event}
profile id
setting
=
[object Object]
event label
setting
=
the event
body template
setting
=
Dear {name},
Here are your photos from {event}.
{photos}
max message bytes
setting
=
13000000
Uses (6 operations)
recued-core.photo-attribution.face_profile.get
recued-core.photo-attribution.attributed_result.search
recued-core.photo-attribution.photo.get
recued-core.photo-derive.image.delivery_copy
core.mail.send
recued-core.photo-attribution.attributed_result.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
1 more isn't listed here. You'll see it at install.