io.gf.cx/found return-label pipeline (parked sketch 2026-05-28)
DARE.CO.UK · PARKED SKETCH · 2026-05-30
Mirrored from ~/.claude/.../memory/parked_sketch_io_found_return_label_pipeline_2026-05-28.md. This is a design sketch parked for future build — read for context, not as a current deliverable.
How a finder triggers a prepaid postage label after scanning a /found/
QR. Three-rung automation ladder — start manual (rung 0), graduate to form+EasyPost+Resend (rung 1) on first real return, then OCR/conversational (rung 2) at higher volume. Builds on existing pirate-ship sketch which already lands on EasyPost as the vendor.
The user-facing promise (shipped 2026-05-28)
Copy on https://io.gf.cx/found/ + every /found/
The automation behind that promise has three rungs.
Rung 0 — manual (current state)
- Finder emails Dan with return address + rough dimensions
- Dan generates a label in the Pirate Ship / EasyPost dashboard manually (Pirate Ship’s cheaper at-cost USPS pricing makes it the operator’s UI of choice even when the API is EasyPost — see [feedback_pirateship_shipping_api_sketch])
- Dan emails the PDF back
Effort per return: ~5 min · acceptable at volume 0 (no real items in the wild yet)
Rung 1 — form + auto-label (build when first real return happens)
GET /found/<slug>/return-label → form page
POST /found/<slug>/return-label/submit → calls EasyPost, emails finder + Dan
Form fields: - Finder name - Return address (street · city · state · zip · country) - Estimated dimensions (LxWxH inches) - Estimated weight (oz / lb) - Optional: photo of item next to a ruler for size-check
Worker flow:
1. Validate inputs · captcha (Cloudflare Turnstile · already in CDN, security layer, and DNS provider sitting in front of dare.co.uk.">CF stack)
2. POST to EasyPost /v2/shipments with from = Dan’s address, to = finder’s, parcel = supplied dims
3. Buy the cheapest USPS rate (Ground Advantage or Priority depending on size)
4. EasyPost returns label PDF + tracking number
5. Email PDF to finder via Resend (already wired in stack)
6. Send receipt email to Dan with tracking + finder details
7. Log to KV: /found/<slug>/return-label-issued: {timestamp, finder, tracking, cost} for owner audit
EasyPost token: op://Code Shared/EasyPost API/credential (path reserved in the pirate-ship sketch; matches the gf.cx 1P convention)
Effort to build: ~3–4 hr (form + Worker handler + EasyPost call + Resend email + KV write) Per-return cost: carrier postage (typically $5–10) + $0.005 EasyPost call
Resume trigger: first real return happens, or Dan notices spending >10 min/wk on manual label generation
Rung 2 — OCR / conversational pre-fill (later)
When volume crosses ~6–10 returns/yr, add: - Phone photo upload — package on kitchen scale + ruler - Vision-LLM extracts weight from scale display + dimensions from ruler-relative measurements - Form pre-fills · finder confirms with one click - Lower-friction, fewer manual entry errors
Effort to build: ~8 hr on top of rung 1 Resume trigger: rung-1 form gets >5 abandons or has frequent weight/size errors
Boundary considerations
- Address validation: EasyPost has built-in USPS address verification — call it pre-purchase to catch typos
- Insurance: EasyPost supports per-shipment insurance for fragile items (the tape-1992-wedding case — irreplaceable). Default rule: any record with
reward_usd >= 50insures the parcel for the reward value - Fraud surface: small. Worst case = finder submits a label request without actually having the item. Mitigation: rate-limit per IP, require return address that matches a real ZIP, log everything to KV for review
- Privacy: finder’s address lands in KV. Already public info on the package they’d ship anyway; not a real risk. But document the retention policy (delete after delivery confirmed)
Cross-references
- feedback_pirateship_shipping_api_sketch — vendor evaluation that landed on EasyPost (LLM-Scarf prep · same primitive, e-commerce context)
- project_io_gf_cx_found_migration_done_2026-05-28 — the migration that made this the right surface
- Resend wiring already present in the stack — reuse for the email-back step
- Cloudflare Turnstile — captcha-of-choice; matches Worker-friendly stack