Place the lentils in a fine mesh sieve or colander. Sort through to ensure there aren't any rocks or stones. Give a quick rinse to remove any dirt or debris. Place into a glass bowl and cover with at least 1 inch of water. Let soak for at least 6 hours. Drain and rinse one more time before using in the soup.Note - Soaking is optional, but I find it makes them easier to digest. If you do not have time or simply do not want to soak the lentils, feel free to skip this step. Be sure to pick through for rocks or debris and give a good rinse, though.
Heat the oil in a large soup pot or dutch oven. Add the carrots, celery, and onion. Sprinkle with a little salt and pepper and stir around. Cook until softened, about 7 to 10 minutes. Add in the bell pepper and diced sweet potato. Add the garlic and all the seasonings. Stir around until the spices are fragrant. Add the diced tomatoes. Cook about 5 to 10 minutes, breaking up any big pieces with the back of a spoon as they soften.
Pour in two cups of vegetable broth (add an additional half cup broth if you did not soak the lentils). Add the sweet potato puree and the rinsed and drained lentils. Stir very well to incorporate everything. Place a lid on the pot and simmer for 25 to 35 minutes, stirring occasionally. Check that the sweet potatoes and lentils are cooked to your liking. Add extra cook time if needed. Stir in the can of coconut milk. Let simmer 5 to 10 minutes to bring everything together, stirring well before serving.
Scoop into bowls and top with scallions and pistachios.