TL;DR: Reproducible deletion changes the upload decision. For large training artifacts sent from a browser, use presigned multipart uploads when you can own a three-state record in your database: uploading , retained , and deletion_due . Keep the bytes off the Node.js control plane, require every multipart session to complete or abort, and make retention a property of the application record rather than a promise inferred from the bucket. Choose tus or UploadThing when polished interruption r...