Is it possible to modify our approach to achieve change data capture totally based on PostgreSQL available features?
I think in the past, some have attempted to "achieve change data capture totally based on PostgreSQL available features" by using triggers, but that has often resulted in a loss of performance.
Aside from that, I haven't come across a completely-internal change data capture solution. One idea is to leverage logical decoding to parse through the WAL stream/sequence to capture all the changes that occurred in the cluster. There doesn't seem to be any software dedicated to doing this yet, though you could conceivably hack something around existing log-based replication engine to do this (i.e., EDB Replication Server).