In a pot, add a couple tablespoons of oil. Add your sliced onions and stir on high heat for a few minutes. Then turn the heat down to medium low and fry until golden brown. Be careful not to burn the onions! Set the onions aside.
In the same pot you fried your onions, add some more butter or oil (if necessary). Now add in your peeled and de-veined shrimp.
Add a teaspoon of chili powder and turmeric each. Stir and cook until shrimp is pink.
Now take your ginger, garlic, and a couple of serrano chilies and form a paste by grinding the ingredients together in a blender. Add to the shrimp. Cook for five minutes.
Now add in your salt, yogurt, garam masala, and biryani masala. You can add some whole serrano chilies (add some slits) too. Add a couple tablespoons of water and cook down for several minutes. At the end, the gravy should be mostly dry.
Toss in some chopped cilantro and mint. Set aside.
Wash and rinse your basmati rice very well. Soak the rice in cold water for about 30 minutes or so.
In the meantime, fill a pot with water and add your aromatics -bay leaves, shahzeera, fennel powder, cardamom, mace, cloves and a tablespoon or so of salt. Bring to a ferocious boil.
Once your rice soaking in water turns translucent, add it to the boiling water. Cook for a couple of minutes or until almost al-dente. The basmati rice shouldn't be about 80% of the way cooked through.
In your assembly pan or pot add a layer of rice. Then your shrimp. Then cilantro, half of your fried onions, then another layer of rice, more fried onions, butter, and saffron (make sure to soak the strands in a few tablespoons of warm milk).
If you are baking in the oven, make sure to cover baking dish tightly with foil and bake at 375 F for about 25 minutes. If you are using the stove, cover your pot with foil and top with the lid so that no steam escapes. Cook on high-heat for 5 minutes, then turn the stove to low-heat and cook for another 8 minutes or so.