08-Project-Health / 08.05.Feedback-Solutions

08.05.Feedback Solutions

08.05. Feedback Solutions

This document proposes 3 lightweight solutions for collecting user feedback. All solutions ensure that both Petri and Yordan receive email notifications and support ratings (1-5), short/long feedback, and anonymous submissions (minimal GDPR friction).


Tally is a privacy-first form builder that looks like Notion. It allows for beautiful, lightweight embeds that feel native to the Vue app.

How it works:

  1. Create a form at Tally.so with:
  2. Satisfaction Rating: 1-5 star component.
  3. Feedback Type: Toggle for "Quick" vs "Detailed".
  4. Text Area: For comments.
  5. Optional Email: Clearly marked as optional (GDPR safe).
  6. Embed the form as a "Popup" or "Side-tab" in the Vue app.
  7. Configure "Email Notifications" in Tally settings to send to both Petri and Yordan.

Pros:

Cons:


The simplest possible solution using Google's ecosystem.

How it works:

  1. Create a Google Form with the required fields (1-5 rating, text box).
  2. Link to it from the Footer or a "Feedback" button.
  3. Email Logic: Use a simple Google Apps Script (attached to the form) to trigger emails to multiple addresses upon submission.

Google Apps Script Snippet:

function onFormSubmit(e) {
  var recipients = "petri@example.com, yordan@example.com";
  var subject = "New CPT Feedback: " + e.values[1] + "/5 stars";
  var body = "Rating: " + e.values[1] + "\nComments: " + e.values[2];
  MailApp.sendEmail(recipients, subject, body);
}

Pros:

Cons:


Solution 3: Custom "Micro-Feedback" (Integrated Stack)

A fully native solution using the existing Vue + FastAPI + Redis stack.

How it works:

  1. Frontend: A simple Vue component in the footer or report page with a 1-5 star selector and a text box.
  2. Backend: A new /api/v1/feedback endpoint in FastAPI.
  3. Execution: The API receives the JSON, logs it to the database (SQL), and sends an email via a service like Postmark or SendGrid.

Implementation Spec:

@router.post("/feedback")
async def collect_feedback(data: FeedbackSchema):
    # 1. Save to SQL (report_records association)
    # 2. Trigger Email via BackgroundTasks
    # 3. Use settings.FEEDBACK_RECIPIENTS

Pros:

Cons:


Summary Comparison

Feature Tally.so Google Forms Custom Micro-Form
Effort Low (Setup only) Very Low Medium (Coding required)
Integration High (Embed) Low (External) Perfect (Native)
Email Config Dashboard Apps Script Env Vars / Secrets
GDPR Excellent Good You own the responsibility
UI/UX Professional Basic Fully Customizable

Recommendation:

Start with Solution 1 (Tally.so) for the best balance of professional appearance and zero maintenance. If you later want 100% ownership of the data, migrate to Solution 3.