08-Project-Health / 08.05.Feedback-Solutions08.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:
- Create a form at Tally.so with:
- Satisfaction Rating: 1-5 star component.
- Feedback Type: Toggle for "Quick" vs "Detailed".
- Text Area: For comments.
- Optional Email: Clearly marked as optional (GDPR safe).
- Embed the form as a "Popup" or "Side-tab" in the Vue app.
- Configure "Email Notifications" in Tally settings to send to both Petri and Yordan.
Pros:
- Zero Backend Work: No need to configure SMTP or mail servers.
- Privacy First: Tally is GDPR compliant and does not use tracking cookies by default.
- Beautiful UI: Professional pulse-rating components and logic-based forms.
- Configurable: Change recipients in the Tally dashboard without a code deploy.
Cons:
The simplest possible solution using Google's ecosystem.
How it works:
- Create a Google Form with the required fields (1-5 rating, text box).
- Link to it from the Footer or a "Feedback" button.
- 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:
- Free: No cost regardless of submission volume.
- Trusted: Users are familiar with Google Forms.
- Fast: 5-minute setup.
Cons:
- Redirects users away from the app.
- Looks less "premium" than an integrated solution.
Solution 3: Custom "Micro-Feedback" (Integrated Stack)
A fully native solution using the existing Vue + FastAPI + Redis stack.
How it works:
- Frontend: A simple Vue component in the footer or report page with a 1-5 star selector and a text box.
- Backend: A new
/api/v1/feedback endpoint in FastAPI.
- 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:
- Terraform: Add
FEEDBACK_RECIPIENTS (comma-separated) to Secret Manager.
- FastAPI:
@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:
- 100% Integrated: No external forms, user never leaves the site.
- Data Control: Feedback is stored in your own SQL database alongside report metadata.
- No Friction: Can be a 1-click rating at the bottom of the report.
Cons:
- Development Effort: Requires coding the component, the endpoint, and setting up an email provider (e.g., SendGrid).
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.