custom text extraction and parser