I've always described source code to non-technical people as the recipe and ingredients, compiling as the baking, and the software as the bread loaf. Seems to land for most people
Not bad. What would you say about saying - " a source code is a set of instructions for a computer to execute". That way, we can still keep the conversation (some what) technical.
For example, it may be quite hard to reverse-engineer a loaf of bread, but reading assembly is actually quite easy to understand what the program actually does.
If you're trying to explain to a non-technical person what source code is, the bread example from OP is actually a great analogy. It's simple, to the point, and almost everyone will know how bread is made. Is it oversimplified? Sure. But that's the entire point of trying to give a real brief overview to someone with no technical experience.