Implement background jobs and uploading to S3