@startuml
    participant "Processing Pipeline" as pipeline #LightGreen
    participant "Backend" as backend #Orange
    participant "S3 / Object Storage" as s3 #LightGray
    database "Database" as DB

    pipeline -> backend: request entries needing processing
    backend -> DB: fetch entries (including file IDs and file names)
    backend -> pipeline: return entry data + pre-signed read URLs

    loop for each file
        pipeline -> s3: download file using pre-signed URL
    end loop

    pipeline -> backend: request new pre-signed URLs for processed files
    backend -> DB: store new file IDs
    backend -> pipeline: return new pre-signed write URLs + file IDs

    loop for each processed file
        pipeline -> s3: upload file using pre-signed write URL
    end loop

    pipeline -> backend: submit processed file IDs + other data
    backend -> DB: store processed file data

@enduml
