In a Dutch oven over medium heat, cook the bacon until crispy, about 10 minutes, stirring occasionally. Drain the bacon on a paper towel until ready to serve. Keep the drippings in the pot.
Add the ground beef to the pot and turn the heat up to medium-high. Brown the ground beef well, and try to get a nice sear on it while breaking it up into crumbles. Cook until there is no pink left, 8-10 minutes.
Add the potatoes, onion, carrot, celery, salt, and pepper to the pot, and stir to combine. Cook for 8-10 minutes until the onions become translucent. Add the garlic and cook until fragrant, 30 seconds.
Stir in the flour to coat the ingredients, and cook for 1 minute, constantly stirring so nothing burns.
Slowly add the stock while constantly stirring.
Add the half and half and ketchup, stir to combine. Bring to a simmer and lower the heat to low. Cover and simmer for 25 minutes or until the potatoes are tender. Stir every few minutes to make sure nothing sticks to the bottom of the pan.
Once the potatoes are tender, add the cream cheese, Velveeta, and cheddar cheese. Stir until the cheese melts. Taste and adjust seasoning if necessary.
Take off the heat and serve with the bacon on top, more cheddar cheese, diced pickles, and scallions.