You’re on the right track with the separate datatype
Change this to a number field, later if its an upvote you will make 1, if its neutral it will be 0, if its a downvote it will be -1
When they click the vote button have two workflows on the same button with opposing conditions:
Search for Rep Logs:count is 0, constraints
User giving rep = Current user, and
User receiving rep = whatever User it is
If the count > 0 then its up to you if you want to show an alert it exists already, or just delete the rep and update the number again
if the count is 0 condition is true then create the Rep log and update another Rep number field on the User to theSearch for Rep Logs:plus item Result of step 1:each items Rep type (or whatever the -1, 0, +1 field is called):sum
search constraint Receiving user = the user
1 Like