Thought I'd post an example. I haven't actually made that many finished profiles as I've always been busy fixing something or adding some new feature.
Attached is an example dual-illuminant DNG profile for Canon 5D mark II, made using DCamProf v0.8.2 with the workflow outlined in the code block. It uses a CC24 for base colors combined with a homemade semi-glossy inkjet target for extreme colors. Light sources are halogen with voltage control, a normal lamp for StdA and a Solux on overdrive for D55. The uneven light (only one point light) has been corrected with DCamProf's flatfield correction function.
A curve was designed "by eye" in RawTherapee to reasonably match the camera's JPEG brightness/contrast, so we get predictable result when using the camera's auto exposure. The Canon does quite some black subtraction to blacken shadows in its JPEGs, I've chosen to have lower contrast shadows and keep detail. Then this curve is applied when generating the profile using DCamProf's neutral tone reproduction operator.
CAT02 was used for StdA apperance rendering, while Solux "D55" was deemed to be close enough to D50 so no CAT was used there (-C).
The DCP contains two pairs of matrices (StdA and D55) which aim to make best match for the normal range of colors (represented by the CC24), the glossy target has been excluded from matrix correction. Then there are two 2.5D HueSatMaps (StdA/D55) for further colorimetric correction, and which also stretches the borders to decently match the glossy colors. Weighting and relaxation has been used to (my) taste to make a tradeoff between smoothness and accuracy.
Then we have the Looktable+Tone Curve which implements the subjective contrast increase and with maintained neutral reproduction. The Looktable has its value dimension gamma-encoded for better perceptual resolution. The looktable is what makes the profile fairly big, as it must be a 3D LUT. Finally there's a baseline exposure offset of -0.3, which is supposed to be added on top of Adobe DNG Converter's baseline exposure of 0.4 stops it adds for 5Dmk2 files. If you don't use Adobe-generated DNGs (ie have 0 baseline exposure) that should be changed to +0.1 stops.
If you have "toggable" DCP handling like a RawTherapee built after July 6, you can turn off the Looktable+Curve to get a colormetric profile, and then turn off the HueSatMap to get a pure matrix profile. The elements are sort of layered, first matrix, then huesatmap on top and then looktable and then curve. I like that aspect of DNG profiles, but unfortunately this aspect is rarely used in profile design, and I think only RT supports toggling the elements in it.
# 1. Make a custom target to top of the CC24 with some super-saturated colors
dcamprof make-testchart -l 15 -d 14.46,12.26 -O -p 210 custom-target.ti1
printtarg -v -S -iCM -r -h -T300 -p A4 custom-target
# 2. Print custom target to a semi-glossy OBA-free paper
# 3. Scan the target with a spectrometer
chartread -v -H -T0.4 custom-target
# 4. Create reference file
spec2cie -v -i D50 custom-target.ti3 glossy.cie
# 5. Setup light and measure spectrum, save to light.sp for later use
spotread -a -H -x
# 6. Shoot CC24 target, glossy target, and white card.
# 7. Crop export and convert to cc24.tif, glossy.tif and ff.tif
# 8. Apply flatfield
dcamprof testchart-ff cc24.tif ff.tif cc24-ff.tif
dcamprof testchart-ff glossy.tif ff.tif glossy-ff.tif
# 9. Scan values
scanin -v -dipn cc24-ff.tif ColorChecker.cht cc24.cie
scanin -v -dipn glossy-ff.tif custom-target.cht glossy.cie
# 10. Merge targets into one, letting CC24 have priority
dcamprof make-target -p cc24-ff.ti3 -a cc24 -p glossy-ff.ti3 -a glossy -d 0.03 combo.ti3
# 11. Make a preliminary profile, dumping plots. Exclude glossy
# from the matrix optimizer to get as good base match as
# possible for the important normal colors represented by cc24
# Add -C (no CAT) to all make-profile below if your light is
# close to D50.
dcamprof make-profile -r dump1 -w cc24 0,1 -w glossy 0,0 -i light.sp combo.ti3 preliminary.json
# 12. Start gnuplot (cd dump1; gnuplot -background gray) and plot
# target and LUT, plus LUT stretch vectors and DE vectors.
# Use 'set view equal xyz' and 'set view equal xy' to turn
# on/off scaling of lightness axis, must be turned off if
# error vectors are viewed in 3D.
gnuplot> splot 'nve-lut.dat' w l lc "beige", 'gmt-locus.dat' w l lw 4 lc rgb var, \
'gmt-adobergb.dat' w l lc "red", 'gmt-pointer.dat' w l lw 2 lc rgb var, \
'target-nve-lutve2.dat' w vec lc "black", 'target-nve-lutvm.dat' w vec lw 2 lc "olive", \
'targetd50-xyz.dat' pt 4 lc rgb var, 'targetd50-xyz.dat' using 1:2:3:5 w labels offset 3
# 13. Look in the plot for patches that pull in opposite directions and cause a
# bad bend in the LUT. Add those (typically one or two) to an
# exclude.txt and render
dcamprof make-profile -r dump1 -x exclude.txt -w cc24 0,1 -w glossy 0,0 -i light.sp combo.ti3 preliminary.json
# 14. Make matrix-only and full correction profiles for sanity
# check comparisons later
dcamprof make-dcp -n "Canon EOS 5D Mark II" preliminary.json no-relax.dcp
dcamprof make-dcp -n "Canon EOS 5D Mark II" -L preliminary.json matrix.dcp
# 15. Relax the LUT (primarily for the glossy class) to improve
# smoothness. Re-render and replot for each change.
# a) It may be worthwhile to lock the matrix before changing DE k
# weights: save profile to separate file matrix.json and
# provide -m and -f parameters.
# a) Try relaxing DE weight even for the important CC24, setting
# it to at least 1 leads often to some relax without much loss
# in accuracy.
# b) Try changing CIEDE2000 k weights, 4,1,1 good start (less
# weight on lightness)
# Example result after iterating:
dcamprof make-profile -r dump1 -x exclude.txt -f matrix.json -m matrix.json \
-w cc24 1,1,4,1,1 -w glossy 2,0,4,4,1 -i light.sp combo.ti3 final-1.json
# 16. Make final DCP, sanity check it by comparing it with
# no-relax.dcp and matrix.dcp. It should have better high
# saturation correction than matrix.dcp, and not lose too much
# accuracy compared to no-relax.dcp
dcamprof make-dcp -n "Canon EOS 5D Mark II" -d "Final 1" final-1.json final-1.dcp
# 17. Repeat steps 5 - 16 for the second illuminant
# 18. Decide which tone curve to use, which baseline exposure
# offset if any, and if black subtraction should be
# automatically applied or not. Often the default "acr" curve
# with no baseline exposure offset provides what you want,
# unless you more closely want to match camera's JPEGs. If you
# prefer to make visual accuracy comparisons with tone curve
# applied, you can apply the curve earlier in the process.
# 19. Merge to a dual-illuminant profile and apply your curve with
# DCamProf's neutral tone reproduction operator (enabled per
# default).
dcamprof make-dcp -n "Canon EOS 5D Mark II" -d "My Profile" -i StdA -I D50 -b 0.1 -t curve.rtc final-1.json final-2.json final-dual.dcp