What's the easiest, least intrusive way to monitor voltage, charging status, and remaining charge of a USB battery pack?

Battery packs and charging circuits for mobile projects can be complicated and expensive to design. Meanwhile, there are a ton of relatively cheap, small, high capacity Lipo battery packs with a convenient USB jack for charging and discharging. Unfortunately, they're designed for consumer uses like recharging cell phones, and not for tinkering, so there's no formal interface for getting battery status. 

If you wanted to wire one of these into a microcontroller or SBC so the system could report remaining charge, is the only option to break one open, hope you don't destroy it in the process, and hope the charging circuitry is hackable?

Possible solutions I've thought of are:

1. Using an ADC to directly read the voltage on the battery output, but this probably wouldn't work since the output from the battery is regulated at 5V. Even close to being dead, it'll probably still read 5V.
2. Wire a coulomb counter in series with the battery. This would probably be able to track total energy charged/discharged, but it wouldn't have a reference point, so it still wouldn't be able to tell you remaining charge. Also, on batteries with multiple jacks, you'd have to have a separate counter for each output you used.

Are there any other options?