Nice, makes sense to chain models so you don't waste the attention of the big smart model on the grunt work of JSON structure.
I bet there are some good post-processing heuristics you could also apply for hallucination with a flag for "this should be in the text verbatim" & then string matching whether the answer it outputted was a string from the text or not.