active routes ignoring bgp local pref

Hello,
I have 2 upstream providers (2 remote AS) with different bandwidth as follows:
ISP1 = 1 gbps
ISP2 = 100 mbps

Which is why I want to use only ISP1 and as a backup ISP2. But, also I’d like traffic for a prefix announced by AS of ISP2 to go via ISP2 of course.

So i set the following filters:
ISP1 set bgp local pref 100
ISP1 for prefixes within ISP2 AS (community 0:ISP2-AS) set bgp local pref 80
ISP1 announce my AS to ISP2-AS with 3 prepend (so outgoing traffic from ISP2 doesn’t come via ISP1)

ISP2 set bgp local pref 80
ISP2 for prefixed within ISP2 AS ( match AS path _ISP2-AS$ ) set bgp local pref 150
ISP2 set prepend for my AS 2 times.

Both ISP1 and ISP2 send me local routes + default route.

The problem is, bgp local pref is ignored. I have prefixed in ISP2-AS that go through ISP1. For incoming traffic, nearly 25% comes via ISP2 but this is acceptable.
Also, some prefixes in ISP1-AS go via ISP2.

I have not set any BGP weight, only local pref. For the local destinations in the routing table that are received via BGP from both ISP1 and ISP2 , some of them have active route via ISP1 some of them via ISP2, but there are cases when:

  • ISP2 route is active, regardless it has local pref 80 and the one from ISP1 has 100
  • ISP1 route is active, regardless the destination is inside ISP2-AS and has local pref 80, the other one with local pref 150 is not active and not used.

What could I be doing wrong?