De-shell and de-vein the prawns, clean well and drain.
Marinate the prawns with 1 teaspoon chilli powder, 1 tablespoon ginger-garlic paste, coriander powder, turmeric powder, garam masala and salt. Mix well and keep aside for 30 minutes.
Take plenty of water in a big cooking vessel and bring it to a rolling boil. In the water add salt, 1 tablespoon oil, 1 tablespoon lemon juice, whole biryani masalas (4 bay leaves, 2 star anise, 2 black cardamoms, 4 cardamoms, 1 tablespoon biryani flower, 1 teaspoon shah jeera, 3 cinnamon stick (1-inch pieces), 6 cloves, 3 Marathi mogga). Add the soaked rice once the water is boiling rapidly and cook until rice is 80% done. Drain and keep aside.
Take a thick wide-bottomed pan, add 1 tablespoon oil and fry the marinated prawns for 5 to 6 minutes on medium-high, until the water evaporates. Remove the prawns from the pan and set aside.
In the same pan, add the remaining oil and the remaining whole biryani masalas, fry for 2 minutes. Add the sliced onions and fry until brown and almost crisp. Add the remaining ginger-garlic paste (1 tablespoon), 1 teaspoon chilli powder, green chillies and fry for 2 minutes. Add the chopped tomatoes, salt, cover and cook until tomatoes turn soft and mushy.
At this point add the yoghurt and cook on high flame until the oil oozes out from the sides, around 4 to 5 minutes. Add some of the mint and coriander leaves (keep some for garnish on top of the rice), fried prawns and mix well. Check the taste and adjust accordingly, cook for 7 to 8 minutes. The gravy should be thick but not too dry.
Now add the cooked basmati rice on top of the prawn gravy, spread out evenly, garnish with the remaining mint and coriander leaves, sprinkle some saffron milk, and 2 tablespoons of ghee. Cover the pot tightly with a lid. Turn the flame to high and for 6 to 7 minutes. Reduce the flame, put a tawa under the pan and cook for another 12 to15 minutes. Switch off the flame, open the pot after 10 to 15 minutes. Give it a gentle stir and serve hot with raita of your choice.