perhaps send the USD to a revolut card and use the revolut card for all your purchases? they give the spot forex rate or perhaps just a tiny bit off like 0.0005 or something. then at the atm change it to CHF on the app and take it out in CHF if you are on the ATM plan or you pay around $2 per ATM withdrawl I think
You can receive USD (I believe for free) in Revolut. If you want to convert it to CHF there is a limit on the free account c. CHF 1000 a month. The premium account costs CHF 96 pa and allows unlimited conversions, but do it during the week or there is a 1% fee. I‘ve never incurred any fees for spending on card cross-currency, but I don‘t know if that‘s because I‘ve not spent enough or because I‘ve had the premium account for the last year. Revolut‘s documentation isn‘t great for finding these kinds of things out.
With the free account you can withdraw CHF 200 a month from „foreign ATMs“. Again it‘s not clear if withdrawing from your USD account using a Swiss ATM counts as foreign. Premium account increases this to CHF 400 a month.
Probably best if you read through the Revolut website in detail, knowing your own personal situation and see if it makes sense, rather than taking advice from anonymous strangers