I personally don't believe the argument that search with a bad model helps so much. In e.g. an open position with lots of possibilities you would need an insane amount of calculations to beat a positional/strategic player with a bad engine.

It all depends on the nuances of the search and the board evaluation. I've done a traditional search based engine, you can try playing against it. It plays out as you mention, you beat it positionally. But tbh if you play against a search only engine without heuristics but with a more optimized algorithm, you may still fail to penetrate it unless you know anti engine strategy.

lichess.com/@/TotomiBot

It's currently uses a 3ply exhaustive search, with the exception that takes don't count toward the ply limit, so it actually evaluates all branches up until the third non taking move.

On the evaluation, it uses two separate scoring values, one for material, using Lasker style piece values, and another for tiebreaking, which would be the positional score.

Positional score is mostly determined by a bitboard with for each piece type, with positive and negative biases towards specific squares, for exmaple the king bishop pawn is heavily incentivized to stay put. The boards are perspective based, so it works the same if you are black or white without needing symmetry (which would make promotion strategies hard).

There's also a couple of heuristics for king safety.

The complexity has come to a point where it's hard to predict what will improve or make it worse by just fiddling with the heuristics. But there's probably a lot of room for improvement in terms of reducing and optimizing compute time.

AI is python based but calculation (search) and evals are offloaded to a c lib for efficiency.

ELO is around 1400, and you can pretty much only beat it positionally (or with a very aggressive early sacrifice. As there's almost no hanging of pieces.

https://github.com/TZubiri/TotomiChessAI