Something like this should do the trick using JS to set the title on initial load of a new post. You will not need to differentiate between publish/draft etc. and you can let WordPress sanitize.
function set_post_title( $post ) {
global $current_user;
if( get_post_type() != 'interviews' || $post->post_status != 'auto-draft' )
return;
$uniqueid_length = 8;
$uniqueid = crypt(uniqid(rand(),1));
$uniqueid = strip_tags(stripslashes($uniqueid));
$uniqueid = str_replace(".","",$uniqueid);
$uniqueid = strrev(str_replace("https://wordpress.stackexchange.com/","",$uniqueid));
$uniqueid = substr($uniqueid,0,$uniqueid_length);
$uniqueid = strtoupper($uniqueid);
$title="INTERVIEW: " . $current_user->first_name . ' ' . $current_user->last_name . ' - ' . $uniqueid . ' - ' . date( 'Ymd' );
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#title").val("<?php echo $title; ?>");
$("#title").prop("readonly", true); // Don't allow author/editor to adjust the title
});
</script>
<?php
} // set_post_title
add_action( 'edit_form_after_title', 'set_post_title' ); // Set the post title for Custom posts