I don't think I was overqualified for the actual job (by my own interpretation, and of the way it was advertised). I was overqualified for their interpretation of the job role.
More specifically: I was the only full-time developer on a database which processed welfare payments for a smallish country, to the tune of hundreds of USD a year. This, I think, is not really the sort of system you would call trivial, nor one that the government would want a B or C grade student as the only full-time member on.
The company wanted someone that would essentially keep the lights on, on a legacy system that was woefully inadequate. One particular clanger was a PL/SQL file which was 5000 lines long, and didn't have a single function in it. It had minimal comments, which were frequently wrong. No-one really knew how it worked. There was no automated testing at all (they'd never heard of unit tests).
What the job should have been was thinking of how to provide value to the customer, trying to improve the system and perform code health updates. What they wanted me to do was do as little as possible to satisfy a work order from the government. This thinking was endemic in the company. One job asked another team to add an email reporting service. It worked on their internal Exchange servers, but they weren't able to figure out why emails weren't arriving at the government offices. Finally someone figured out that the emails didn't conform to SMTP at all. The people implementing this didn't know what SMTP was. The team leader/middle-manager in charge responded "They asked us to write an email sending function. We did. They didn't specify that they wanted SMTP, so they'll have to file another work order."
I have many more like this.