Engraved and monogrammed gifts: one order-by cue per lead time

Personalised gifts need earlier cutoffs than stock items. Compute each order-by date from production plus transit days and burn all lines in one caption job.

4 min readSume
All posts

Show one order-by line per product line, each computed as the delivery date minus production days minus transit days, and burn them as cues in a single caption job ($0.20 for a clip up to 60 seconds). An engraved item with a 5-day make time needs an earlier cutoff than a stock item, and one shared "order by Dec 15" card is wrong for at least one of them.

Why one date fails

Holiday clips usually carry a single shipping cutoff. Personalised products break that. The customer sees "order by December 15", orders an engraved mug on the 14th, and the mug is still in production on the 20th. The cutoff for a personalised line is earlier by exactly the production time, and that number lives in your operations data, not in the creative.

The arithmetic

The table uses made-up lead times to show the shape of the calculation. Replace them with your own production days and with the carrier's published transit times for the service you use. This post does not provide carrier dates; see the stored carrier posts for those, which cite the carriers' own pages.

The delivery date used in the sample is December 24, 2026.

Illustrative order-by arithmetic with sample lead times (not real carrier or shop data), read 2026-10-05
Product lineMake daysTransit daysOrder by (for Dec 24)
Engraved54Tue 15 Dec
Embroidered74Sun 13 Dec
Standard14Sat 19 Dec

Generate the cues

The script computes each cutoff and builds the cues for POST /v1/video-captions. Each cue is a short line with text, start and end in seconds, and Sume burns them without speech-to-text. Add an Idempotency-Key that includes the delivery date, so a changed date is a new job.

If one line's cutoff has already passed on the day the clip is published, remove that line instead of leaving a false offer in the clip.

import json
from datetime import date, timedelta

DELIVER_BY = date(2026, 12, 24)
# per product line: (production days, transit days) from YOUR own operations data
LINES = {"engraved": (5, 4), "embroidered": (7, 4), "standard": (1, 4)}

cues = []
for i, (name, (make, ship)) in enumerate(LINES.items()):
    cutoff = DELIVER_BY - timedelta(days=make + ship)
    cues.append({"text": f"{name.title()}: order by {cutoff:%a %d %b}",
                 "start": 0.5 + i * 2.5, "end": 3.0 + i * 2.5})
print(json.dumps({"video_url": "https://example.com/gifts.mp4", "cues": cues}, indent=1))

Check it on screen

After burning, pull a few stills at the cue times with video frames and read each line. Check the weekday against a calendar: the common bug is a date string from a different year or a weekday that does not match the date.

Limits

Make times vary with order volume. A line that takes 5 days in October can take 9 in the first week of December, so recompute when your queue grows. The honest option when capacity is tight is to move the cutoff earlier, burn the new cue, and retire the old clip. Do not let the weekend fall inside a make window you have not staffed: a Sunday cutoff only works if someone is producing on the Saturday before it, and the date on the card should come from the same calendar your production team uses.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume