Melt the ghee in a wide, heavy-bottomed pan over medium heat. Add the sooji and besan, lower the heat, and roast for 30 to 35 minutes, stirring constantly. The mixture is crumbly at first, so keep breaking up lumps with a spatula. After about 15 minutes, it starts to loosen. It's ready when it feels lighter and smells toasty.
Sometimes this step can take longer, so keep stirring on low heat, making sure that it does not get too brown.
Turn off the heat and stir in the cardamom.
While the besan is still warm, make the syrup. Combine the sugar, water, and saffron in a 2-quart saucepan over medium heat, stirring until the sugar dissolves. Bring to a boil, lower the heat, and simmer for 6 to 7 minutes, until the syrup reaches one-string consistency: 220°F on a thermometer (tip off the bottom of the pan), or one sticky string between your thumb and index finger when you pull apart a cooled drop.
Pour the syrup into the warm besan mixture and mix well. Spread it evenly in the tray with a silicone spatula, spread the nuts on top, and press them in gently.
Let the barfi set for 30 minutes to 2 hours, then cut into 16 pieces.
If the syrup was undercooked and the barfi doesn't set, re-cook the mixture on low heat for 2 to 3 minutes and re-spread it, or refrigerate for a few hours.