Splitting out IX prefixes from my default route advertisement

I am peering with BGP.Exchange in different locations. BGP.Exchange is a virtual IX where anyone can join and peer virtually, meaning there's no need to have physical presence in a datacenter. You just create a tunnel to one of the endpoint locations and have your BGP session running inside that tunnel.
My setup in the US currently consists of two edge routers. One hosted at Neptune Networks (AS21700) in NYC and the other one at iFog in Ashburn. (AS34927) This gives me some redundancy and both providers has their pros and cons. (Neptune gives me better latency while iFog gives me more data transfer and a ~5Gbit/s interface compared to Neptunes 1Gbit/s interface)
From these edges, I only announce a default route back to my lab/home since there's no need to advertise a full table down to my self from there.
In NYC, my edge is also peering with BGP.Exchange, meaning I have a few prefixes that I always want to go via Neptune, no matter what.
So to be able to achieve that I had to make sure that these prefixes wasn't hidden within the default route and this is were communities helped me out.
First I configure an import filter for my BGP session with BGP.Exchange.
import filter {
if net = ::/0 then {
reject;
}
if source = RTS_BGP then {
bgp_large_community.add((215855,0,24318));
accept;
}
else reject;
};
I will drop any default route that might have slipped through from BGP.Exchange to my self and then I tag all incoming prefixes with a large community.
And in my export filter for my BGP session to home, I look for the community I tagged the incoming with and just accept them for advertisement. And then I have a default route for the rest of the prefixes which I also advertise.
export filter {
if (215855, 0, 24318) ~ bgp_large_community then {
accept;
}
if net = ::/0 then {
accept;
}
reject;
};
So now my routing table in my lab looks like this:
bird> sh ro protocol JC01_NYC01
Table master6:
::/0 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] (100) [i]
dev nyc01
2a0a:6044:a534::/46 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] * (100) [AS215956i]
dev nyc01
2a14:7581:b25::/48 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] * (100) [AS214575i]
dev nyc01
2a14:7581:b24::/48 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] * (100) [AS214575i]
dev nyc01
2a14:7581:b26::/48 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] * (100) [AS214575i]
dev nyc01
2a14:7581:b20::/48 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] * (100) [AS214575i]
dev nyc01
2a14:7581:b40::/48 unicast [JC01_NYC01 2025-01-27 from 2a0e:97c0:e61:ff80::101] * (100) [AS214575i]
....etc
I have a default route and a few more specific prefixes which will make sure that if my destination is within any of those prefixes, that path will always be picked even if I am using Ashburn as my primary path for 99.99% of the traffic.