Make a marinade by adding the yogurt, turmeric, chilli powder, half the garam masala, half the garlic paste, half the ginger paste and chilli peppers together in a large bowl
Cut the chicken into bite sized (~3cm) cubes
Mix the chicken into the marinade
Cover and leave in the fridge for anywhere from 30 minutes to 24 hours. Longer is better.
24 hours (or so) later..
Put the rice into a large bowl, and rinse repeatedly in cold water until water runs clear. Don't skip this step, it really makes a difference
Cook rice partially (about 75% of the time recommended). For us, that was 7½ minutes of the 10 recommended on the packet
Drain the rice, then set it aside for now
Whisk the tomatoes and tomato puree together
Finely dice the onion
Heat oil or ghee in a large heavy pan over a medium heat
Add cardamom pods
Add cumin seeds
Fry for 15-20 seconds until fragrant
Add onions
Saute for 8-10 minutes to soften the onion
Add the chicken and marinade to the pan
Spread the chicken into a single layer
Turn the heat to medium high and cook the chicken undisturbed for 3 minutes
Flip the chicken over and cook for another 2 minutes
Stir in the tomato mixture
Bring to a simmer
Cover pan and cook at a gentle simmer for 5-10 minutes (We let it cook a bit longer, doesn't seem to hurt)
Remove pan from heat
Heat milk in the microwave, and add the saffron
Let them soak for 3-5 minutes
Assemble the biryani!
Spread half the rice evenly over the chicken curry
Sprinkle on half the mint and half the coriander (if using)
Sprinkle on half the garam masala and a pinch of salt
Drizzle on half the saffron milk
Repeat the last 4 steps with the rest of the rice, leaves, garam masala and milk
Cover the pan tightly
Simmer for 10-12 minutes until the rice is tender
Leave biryani to rest with the lid on for 5-10 minutes
Serve and enjoy!