Chop the cauliflower in half and then cut the florets off the stalk. Place on a baking sheet, drizzle with 2 tablespoons of the olive oil, salt, and pepper and roast for 30-45 minutes, or until cauliflower begins to turn golden brown along the edges.
While the cauliflower is roasting, chop the onion. Add the remaining 2 tablespoons of olive oil to a medium skillet and heat over medium heat. Add onions and cook until onions are soft and nearly translucent, about 8 minutes. Add garlic and continue to cook for an additional 2 minutes, or until garlic is fragrant. Remove from heat and transfer to a plate.
In the same skillet, over medium heat, add 2 tablespoons of butter. Once butter is melted, add the spices and sliced almonds and toast until fragrant and almonds turn a light golden color, about 3-4 minutes, stirring frequently. Be careful not to let any of the contents (including the butter) burn. If anything begins to burn, reduce heat to low and continue cooking. If they begin to look too dry, add 1-2 tablespoons of olive oil, a little bit at a time. Remove from heat when almonds are golden and set aside.
In a large pot, bring the chicken stock to a boil. Add potatoes, roasted cauliflower, onions, garlic, and salt and boil for 10 minutes, or until potatoes are tender. Once potatoes are tender and able to be pierced easily with a fork, add cream. Using an immersion blender, blend (or puree in a food processor) until soup is thick and creamy. If too thick for your tastes, add stock, one cup at a time, until you reach your desired consistency.
Serve in bowls and garnish with spiced almonds, harissa, and cilantro.