Background job processor