Start by making a shrimp stock.
Combine the shrimp shells, onion, celery, carrot, and 5 cups of water in a large stockpot.
Simmer over medium heat until the liquid is reduced to about 3 cups, then strain and set aside.
In a separate heavy saucepan, melt 4 tablespoons of butter over medium heat.
Add 4 tablespoons of flour to the melted butter to create a roux, stirring constantly until it turns a light, golden brown.
Carefully whisk the shrimp stock into the roux.
Continue to stir until the mixture thickens to a rich, smooth texture.
This should take about 5 minutes of stirring.
Add salt and pepper to the sauce for seasoning, adjusting to your taste preference.
Place the snapper fillets in the sauce pan and allow them to cook until they are tender and fully cooked through.
Plate the snapper fillets and pour some of the sauce over each piece.
Top with a few shrimp for a fresh garnish.