Remove the soya chaap from sticks and cut into 1-inch pieces. Toss with garlic, ginger, spices, and salt until fully coated. Set aside until ready to fry.
In a medium pan, heat about half an inch of oil over medium heat. The soya chaap chunks should be partially submerged in the oil. Lightly fry the soya chaap until slightly crisp and golden-brown on both sides. Remove the chaap and place on a paper towel-lined plate. Remove the oil as well and set it aside.
Next, add tempeh to the pan. The pan should be well-greased from frying the chaap, so no oil needed. Stir occasionally, until the tempeh is browned. Add the spices and salt, and continue cooking for a few minutes. Remove the tempeh from the pan.
Add 2 tbsp of the reserved oil. Add the bay leaf, cinnamon stick, and cloves, and stir for a minute or so. Add the onion and cook for 5-6 minutes, or until it starts turning translucent. Add ginger and garlic, cooking for 2-3 more minutes. Add tomatoes and a big pinch of salt. Combine well, until the tomatoes mush together with everything else in the pan. Add coriander, red chili powder, turmeric, cumin, and cardamom. Cook for a minute before taking the pan off the heat.
Allow it to cool down a little before processing in a food processor. I like processing until it is mostly smooth but still has some texture.
Add the curry back to the pan. Pour a cup of water into the food processor to get more of that flavor out! Slowly stir over medium-low heat until it is at the texture you want. Finish with kashmiri chili powder, garam masala, and kasoori methi.
Garnish with cilantro and serve with rice, rotis, or parathas!