In a small skillet roast the cumin, coriander, mustard, chilli pepper, cardamom and cinnamon until the coriander seeds are golden and a few shades darker. Keep stirring so you don’t burn anything. Remove the spices to a blender.
To the blender add one half of the onion (the half you chopped), the vinegar, and the lemon juice.
Blend until you have a smooth paste and then scrape the paste onto the meat substitutes, in a bowl. Mix well so all the pieces are coated and set aside to marinade at least 2 hours.
In a saucepan, heat the oil over medium-high heat. Add the onions and curry leaves and saute until golden spots appear on the onions. Lower the heat to medium-low, add the mint leaves, turmeric, ginger and garlic and stir fry for a few seconds.
Increase the heat to medium-high again, add the green peppers and cilantro and stir-fry for another three or four minutes or until the peppers start to soften.
Add the cooked potatoes, stir-fry for a few seconds, then add the tomato paste and mix well to coat all the vegetables. Add the beef substitutes with all the marinade, garam masala and paprika. Stir well.
Add 1-2 cups of water, depending on the thickness you desire for the curry, stir well, and let the curry come to a boil. Add the grated jaggery or sugar. Lower the heat and let it simmer about five minutes for all the flavors to come together.
Stir in the coconut milk and turn off the heat. Garnish with coriander leaves.
Serve hot with some crusty bread or boiled rice.