Yes, it's parsing the text output of WPP. Sadly, I didn't have any alternative when I started to wrote the app. And as far as I know, WPP still does not support the serialization of structured data. By focusing on wotlk sniffs, I didn't have too much issues regarding changes of the output format. Obviously though, this is clearly a big weakness of the app. And the only way solution is to extend the capabilities of WPP.
Nonetheless, my app has provided with an invaluable source of information. The ability to filter packets by expressing the set of conditions that determined if a packet is relevant to me or not and then getting the result in matter of seconds (as opposed to manual search that can take hours/days) has been incredibly fruitful to me. It also allowed me to test certain assertions (1) quite easily: I just wrote my condition and I let the application go through the entire database of wotlk sniffs that I have at my disposal. Then I let the app do its work while I do something else and I had the result after an hour. Doing the same thing by hand would have taken me days..
(1) for example that some packets such as MSG_MOVE_ROOT, MSG_MOVE_WATER_WALK, MSG_MOVE_HOVER, etc.. are only packets transferred from Server To Client cf https://github.com/chaodhib/TrinityCore/blob/c792f35f0e6492d933c3aabc2cd20ebc42c38aad/src/server/game/Movement/MovementPacketSender.h#L32