He filled 3 boxes with 15 books each so 3*15 = <<3*15=45>>45 books
From the rest of his house he is donating 45+21+4+18 = <<45+21+4+18=88>>88 books for donation
His collection is 99 books and he is donating 88 books, so that leaves him with 99-88 = <<99-88=11>>11 books
He picks up 12 books to add to his collection of 11 books so he now has 12+11 = <<12+11=23>>23 books
#### 23