Callbacks make transcoding code hard to reason about and hard to isolate, slowly turning the codebase into a codependent mess. Prefer explicit orchestration over Active Record lifecycle callbacks for anything non-trivial, especially media processing.