Chop the leeks into half circles. Use mostly white parts, but throw in a little bit of the green as well. Discard the rest of the leek (dark green) or save in the freezer to make stock at a later date.
In a dutch oven or large pot over medium heat, melt the butter and combine the olive oil in the pot once the butter is melted.
Add the leeks, onion, shallot, garlic, and salt and sweat for 5 minutes. Decrease the heat to medium-low and cook until the leeks and onions are tender, approximately 25 minutes, stirring occasionally. (Note: Make sure to pay attention to the leeks and garlic, do not let these burn!)
Add the potatoes and the chicken broth to the pot, increase the heat to medium-high, and bring to a boil. Reduce the heat to low once a boil is achieved, cover the pot, and simmer until the potatoes are soft, approximately 35-45 minutes.
Turn off the heat and puree the mixture by scooping into a food processor with a measuring cup or use an immersion blender. Puree until the soup is no longer chunky or until the desired smoothness is achieved. I sometimes remove some of the potatoes prior to pureeing and add them back to the pot after to create a chunkier soup.
Stir in the milk, buttermilk, and pepper.
Turn the heat on to medium low and bring to a low simmer. Taste and adjust seasoning if desired.
Serve the soup topped with crumbled bacon and diced chives.