Heat the olive or peanut oil in a large pot or Dutch oven over medium-high heat.
Once shimmering, add the whole cumin seeds, followed a few seconds later by the fennel seeds. As soon as they sizzle, add the chopped onion and potato.
Sauté for 5 minutes, stirring occasionally, until the onions begin to soften.
Stir in the grated ginger, chopped garlic, and green chili, and cook for another minute until fragrant.
Reduce the heat to medium-low and add the ground coriander, ground cumin, turmeric, and red chili powder.
Stir constantly for 1 minute to toast the spices and prevent them from burning.
Add the cauliflower florets, chopped tomatoes, salt, and most of the fresh cilantro (save a little for garnish).
Stir well to coat everything in the spices.
Pour in 4 cups / 950 ml of water, bring to a boil, then reduce the heat to low, cover, and let it simmer gently for 25 minutes, or until the vegetables are very tender.
Remove the soup from the heat and allow it to cool slightly. Carefully transfer the soup to a blender in batches (or use an immersion blender directly in the pot) and blend until completely smooth.
Return the puréed soup to the pot.
Stir in the heavy cream, lime juice (if using), and a generous amount of freshly ground black pepper.
Taste and adjust the salt if needed. Gently reheat the soup over low heat, being careful not to let it boil.
Serve hot, garnished with the remaining fresh cilantro.
Don't skip toasting the spices. This step, called 'blooming', is crucial for releasing their essential oils and creating a deep, aromatic flavor base for the soup.