An anti-corruption layer is a translation boundary that protects your domain model from leaking concepts from a legacy/external system. You use it when integrating with something that has a different model or ugly API, so you keep your core clean and map data in one place.