"Obviously this would be limited to public tweets (no private tweets, no tweeting on the user's behalf, and no DMs)."
I don't think any of those limitations apply. If you can do something via a web browser, you can do it programmatically, depending on how much pain you're willing to endure.