Melt ghee in a wide pan over medium heat. Add sooji and besan and roast on low heat for 30 to 35 minutes stirring constantly. The besan will look very crumbly in the beginning, keep stirring and breaking the lumps with the spatula as you keep roasting. The mixture will slowly start to melt after 15 minutes or so. Sometimes this step can take longer so keep stirring on low heat. The mixture should start to feel lighter and aromatic. Make sure that it does not get too brown. Turn the heat off.
Add cardamom and give a quick stir.
Next, make the syrup. Add water, sugar, and saffron to a medium saucepan. Cook over medium heat stirring until the sugar melts. Once the syrup comes to a boil, lower the heat. Simmer for 5 to 7 minutes or until the syrup comes to one string consistency. To check the consistency of the syrup put a few drops of sugar in a bowl, allow it to cool. Then take the syrup between the index finger and thumb and open and close them gently a few times. You should feel stickiness and see a string being formed between the finger as you pull them apart. The other way is to check using a digital thermometer. Dip the thermometer in the syrup after 5 of simmering making sure the tip does not touch the bottom of the pan. The thermometer should read 220 F for perfect one string syrup.
The besan mixture should be warm at this point. Add the syrup to the besan mixture and mixing well. Evenly spread the mixture using a silicone spatula on the parchment-lined tray. Sprinkle nuts on top and gently press down with the silicone spatula. Allow the mixture to cool down and the burfi to set for 30 minutes to 2 hours.
Cut the barfi into 16 pieces. Store at room temperature in an air-tight container for upto 2 weeks. You can also refrigerate if you like.