This is mostly what I do in all games with social skills, with a couple caveats.
The first is I like to come up with attitude templates.
For example Basic Guards might respond well to bribes, bewitch and leadership; neutral to Convince; negatively to intimidation and deceit. They probably provide negatives to intimidation the mode guards that are there. But you can still do it - but if you embarrass a guard in front of his coworkers, you gain an enemy for life.
Having these templates, of course, help me in determining standard reactions for random NPCs.
Custom NPCs, however, always have a custom attitude.
But also in this, there are some things a skill will not allow them to change.
You cannot convince a fanatic that he is wrong. But you can befriend him, or deceive him. Still, if you roll a successful convince, I like to give you something.
Hell, if you fail, I still like to give you those fail forward moments.
The second is that I have come up with a personal rule that I will never give a negative to a social skill where someone tried to RP, no matter if the argument seems uninspired, crazy, strange or not. For the RP only. I have discovered, especially with newer players and less social players, that a negative modifier when they are trying acts as a reinforcement for them to not try. So, I never do it anymore. If the negative was because they are a guard and there is always a negative to intimidate a guard with 3 of his fellows there, I explain that is why the negative is there.
I know that is not what this post was about, but I felt it was a good point of view to add.