Place shrimp peels, onion, garlic, and bay leaf in a saucepan with 5 cups of water. Turn on the heat to medium-high. Once it starts boiling, reduces heat to simmer for about 6-8 minutes, then set aside.
While the broth is simmering, place the tomatoes, onion, and garlic on a hot griddle to roast. Turn from time to time to have an even roasting. This step will take about 8 minutes. Remove the garlic promptly, since it takes less time to roast; if you leave it too long it will burn and have a bitter taste.
Once the tomatoes, onion, and garlic are ready, place them into a blender along with the chipotle peppers (if using). Process until you have a fine puree. If needed, chop the tomatoes to avoid having big chunks in the salsa before placing them in the blender.
In a medium-size pot, heat the oil at medium temperature, add the carrots, and cook for a couple of minutes. Then, stir in the potatoes and cook for 6-7 minutes, stirring often to keep them from sticking to the pan.
Pour the tomato sauce using a strainer, bring to a boil, and then lower the heat to simmer for 10 minutes. Then, using a strainer add the shrimp broth, stir in the shrimp and gently simmer for 5-7 minutes, depending on the size of the shrimp. The shrimp will be a light orange color but still look firm; do not overcook or the shrimp will have a rubbery texture. Add the epazote and cook for 2 more minutes, then season with fresh ground pepper and salt. Serve immediately.