User’s feedback API

Repo: · Issue: #128 Status: Open · Priority: P2 Assignee: Martin

Description

Caused by https://twill-network.slack.com/archives/C06UCQP1BFC/p1727777713067559?thread_ts=1727731687.235129&cid=C06UCQP1BFC

Need to implement ability to gather precise feedback from users. Also current “Like/Dislike” LLM Chat Items feedback is not used/visible.

Let’s limit feedback scope/features to only:

  • Integrations (including first one, for on-boarding and relevant issues).
  • LLM Chats and any entity which contains it (i.e. dashboards and widgets on dashboards).
  • No in-platform screenshots/videos support (because it would require “blob” storage support). Users may provide links from external sources.

Flow:

  1. Users are given with some control(s) in UI to input: Like/Dislike, text with description “what is good or wrong” and relevant links, decide whether we allowed to connect with the user (email/phone/etc.) or not, consent checkbox “I allow Twill to read information around this issue”, “Submit” button.
  2. Facade persists feedback with in-app context around it and we are having alert in #alerts-prod with some relevant information.
  3. Facade OpenAPI UI provides way to query specific feedback details.

AC:

  • “master” tenant has new table “feedback” with the structure like:
    • id int
    • created_at timestamp
    • tenant_id string // 10 chars
    • user_id string
    • integration_id int | null // NULL if it is for LLM Chat.
    • llmchat_id int | null // NULL if it is for integration.
    • connect_way string | null // To support HTML form fields like checkbox 'Allow to connect me' (we know email but don’t have ability to sent custom emails now so it would probably via Mike) or Email if you want us to connect with you (in future, to allow users provide custom email, not with which they have registered) or Email of phone if you want us to connect with you and so on. Now just copy email if agree.
    • explanation string // User’s explanation of the issue. Should support links and be as big as needed.
    • context string // Here JSON whi

Implementation Notes

Dash adds notes here while working

Link to people, meetings, dependent tickets