Preheat the oven to 400°F (200°C). Line two large baking sheets with parchment paper.
Cut the cauliflower into small florets and the potatoes into 1-inch chunks.
In a small bowl, combine cumin, cayenne, ½ teaspoon salt, black pepper, smoked paprika, garlic powder, and coriander.
Spread cauliflower and potatoes on the baking sheets. Drizzle with 2 tablespoons olive oil and sprinkle with the spice mix. Toss to coat evenly. Roast for 25–35 minutes, until golden and tender.
In a medium bowl, combine panko breadcrumbs, thyme leaves, 1 tablespoon olive oil, ¼ teaspoon salt, and red pepper flakes (if using). Set aside.
In a large pot, heat 1 tablespoon olive oil and vegan butter over medium heat. Add the diced onion and cook for 3–4 minutes, until softened. Add garlic and sauté for another 1–2 minutes until fragrant.
Add soy milk, bouillon powder, Dijon mustard, and nutritional yeast to the pot. Stir continuously for about 3 minutes, until the mixture thickens slightly. Turn off the heat.
Stir in the roasted cauliflower, potatoes, and cannellini beans until everything is well coated in the sauce. Transfer the mixture to a large oven-safe baking dish and spread into an even layer. Top with the prepared breadcrumb mixture.
Set oven to broil on medium-high. Place the dish under the broiler for 5–7 minutes, or until the crumb topping is crisp and golden brown. Watch carefully to prevent burning.
Enjoy immediately, optionally with sautéed greens or a simple salad.