{"rid":"storage/lulu","card":{"rid":"storage/lulu","eid":"lulu","topic":"storage","slug":"lulu","provider":"Lulu","url":"https://www.lulu.com","domain":"lulu.com","category":"Print-on-demand book fulfilment","tier":null,"verdict":"fails-egress","vorder":5,"grp":"rejected","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":null,"egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":1,"usd_month":null,"usd_per_tb_month":null,"summary":"No hard file limit. Own help page: 'We technically do not have a file limit for projects; however, the larger a file is, the longer it will take to process. ...","duplicate_of":null,"n_unknown":7},"record":{"topic":"storage","slug":"lulu","provider":"Lulu","url":"https://www.lulu.com","category":"Print-on-demand book fulfilment","free_tier":{"stated":"No hard file limit. Own help page: 'We technically do not have a file limit for projects; however, the larger a file is, the longer it will take to process. We recommend keeping your interior file below 1 GB.'","unit":"GB","metered_on":"unstated","source_url":"https://help.lulu.com/en/support/solutions/articles/64000255480-publishing-the-basics","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://help.lulu.com/en/support/solutions/articles/64000255480-publishing-the-basics","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://help.lulu.com/en/support/solutions/articles/64000255480-publishing-the-basics","notes":"not stated"},"egress":{"terms":"No public download path for the source file — Lulu hosts it for print production, not for retrieval.","metered":false},"interface":["unknown"],"interface_detail":"Web upload only.","tooling":"Web; no API for file ingest.","chaining":"Unbounded ingest but no retrieval path at all — this is the pure 'upload-open / read-gated' trap (rule 2). Counts for nothing as storage.","limits":[],"limits_note":"no stated cap; PDF only for print interiors, EPUB/PDF for ebooks; retail partners reject >100 MB.","identity_cost":{"kind":"email","detail":"email","country":null},"reliability_note":"The uploaded file is not served back to you or anyone else — it exists only to be printed. Rule 4: a host that gives storage but not your bytes back is not storage.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://help.lulu.com/en/support/solutions/articles/64000255480-publishing-the-basics","date":"2026-10-21","proved":"'We technically do not have a file limit for projects... We recommend keeping your interior file below 1 GB'; 'If you are publishing an ebook in Global Distribution, online retailers will often reject files over 100 MB'"}],"verdict":"fails-egress","verified_at":"2026-10-21T00:00:00.000Z","notes":"No hard file limit. Own help page: 'We technically do not have a file limit for projects; however, the larger a file is, the longer it will take to process. We recommend keeping your interior file below 1 GB.'","extras":{"dead_end":{"failure_class":"quota","why":"No hard file limit. Own help page: 'We technically do not have a file limit for projects; however, the larger a file is, the longer it will take to process. We recommend keeping your interior file below 1 GB.'","retry_when":null,"first_recorded":"2026-10-21"}},"binding":"none","binding_note":"no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":1,"unit":"GB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.interface","interface-unknown"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]}