Fully drawn custom faces like the old face packs for Baldur's Gate are only possible by species (you could put in custom icons for the HUMAN species and it would pick randomly between them, but there's no gender/profession breakdown), but putting in custom face elements (Like new noses or eyes or whatever) is the intended way to edit human faces in the game, and you can do it without editing any code or needing to rebuild the game in Unity.
The main file you want to look at is LCS_Data/StreamingAssets/XML/PortraitDefs.xml. In there is a brief explanation of how to add new face parts to the game. It's a pretty flexible system, allowing you to restrict parts to certain genders or political alignments, and also allowing you to define custom tags which can be used to restrict parts to only appear on certain creature types (or NOT to appear). The file LCS_Data/StreamingAssets/XML/CreatureDefs.xml, which is where creatures are defined, explains how to use those custom tags to make the association between parts/professions. There's already a few of these in use so you can see examples of how you might implement it but it's very freeform so you can pretty much do what you want.
In the LCS_Data/StreamingAssets/Graphics folder is a file "PortrtaitExample.png" which shows you how each particular facial feature will be placed in-game (there's a bit of variation because some parts will also have an x or y axis offset randomly applied; the example image shows the base location before offsets), and the LCS_Data/StreamingAssets/Graphics/Portraits folder is where all the facial graphics actually sit so you can see examples of how the ones I've already made are done.
If you wanted to do a full graphical swap, you could do it by just swapping out the PortraitDefs.xml with a different one that had its own graphical references and definitions, and the game would be fine with it (although doing so midgame might break your save, since the saved character portraits will be using references to the id names from the old xml file. If the new file uses the same id names though, it will swap in with no issues). A "portrait pack" could be set up pretty easily by just zipping up a bunch of face part png files and the PortraitDef.xml that uses them.
Currently some aspects of the facial generation system are still hard-coded - skin-colour is a set 5 tone palette, natural hair colours and dyed hair colours are also defined in the engine rather than external file, so editing any of these requires doing so in Unity and rebuilding the game. I may externalize these at some point but for now they're still essentially fixed values.