> any particular reason you need to override the rails default primary key of id?

I thought it was a better name, but I'll switch to using the default, since that seems to be your convention.

> do you need to index on level_source_hints.hint_id?

No.  I suppose it's possible in the future.

> should the message field be text (ie blob) or string? is there a maximum length for the message?

My understanding (which could be wrong) is that string is limited to 255 characters, and I don't think hints are limited to that.

Thanks for all of the feedback.