Ratings and Reviews
Show real customer opinion on an item instead of asking buyers to take your word.
What it adds
A star rating and written review per item, with a stored aggregate shown alongside the item and a moderation step before publication.
What your agent is told to do
5
What your agent is told to do
5-
1
Show the aggregate where the item appears: an average, a count, and a breakdown by star level. Read that from a stored aggregate on the item, updated as reviews change, not from an aggregate query over the review table on every page render.
-
2
Decide who is allowed to review and enforce it server-side. Restricting reviews to verified purchasers is the single change that most improves trust and most reduces spam.
-
3
Route new reviews through the app's existing Moderation Queue and reuse AI Text Content Moderation if it is present, rather than adding a second approval inbox. Do not build a parallel review-approval screen.
-
4
Wire the existing Content Reporting feature to reviews so a published review can be flagged by other users, and give the item owner a single public reply per review rather than an open thread.
-
5
Do not let the owner delete or hide individual bad reviews. A review system the owner can curate is worthless to the reader, and shows up as a suspiciously perfect average.
Edge cases it handles
8
Edge cases it handles
8- Recomputing an average by scanning every review on each write will be fine at ten reviews and will time out at fifty thousand. Keep a running count and sum on the item and update them transactionally with the review.
- The same buyer must not be able to leave a second review on the same item. Enforce it with a uniqueness constraint in the database, not just a check in the controller, or concurrent submissions will slip through.
- New reviews must not appear publicly until they have passed moderation, and the author must still see their own pending review so they do not submit it again.
- When an author deletes their account or is anonymised, the review text should survive with the byline replaced. Cascading the delete silently removes evidence and changes the average.
- Editing a review from four stars to one, or deleting it, must adjust the stored aggregate by exactly that difference. A drift bug here is invisible until the displayed average stops matching the reviews on screen.
- An item with one five-star review must not be presented as better than an item with four hundred reviews averaging 4.6. Show the count wherever the average is shown.
- Review bodies accept pasted markup, links, and contact details. Escape on output and strip links from unverified authors, or the reviews become an advertising channel.
- A rejected review needs a reason sent to the author. Silent rejection reads as a bug and gets resubmitted.
Definition of done
9
Definition of done
9- Each item shows an average, a total count, and a distribution across star levels.
- The aggregate is stored and updated incrementally, with no full scan of reviews on write.
- A second review from the same author on the same item is rejected by a database constraint.
- New reviews are held in the existing moderation queue and are invisible publicly until approved.
- Editing or deleting a review leaves the stored average and count exactly correct.
- Deleting an author's account preserves the review text with an anonymised byline.
- Owners can reply publicly to a review but cannot remove or hide one.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Social Sharing
Social Sharing
Make your links look good when someone posts them.
What it does
Open Graph tags, share buttons, and preview images so shared links don't render as bare URLs.
How it works
- 1 Add Open Graph and Twitter Card tags to every publicly shareable page, with a title, description, and image.
- 2 Generate a preview image per record where it makes sense, rather than one generic image for the whole site.
- 3 Add share actions that use the native share sheet on mobile and copy-link on desktop.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/social-sharing
Share Image Generator
Share Image Generator
Give every shared link a proper preview image instead of a blank card.
What it does
Server-side generation of a per-page preview image, referenced by the page's existing share metadata.
How it works
- 1 Find where the app already sets its share metadata, most likely alongside Social Sharing or Shareable Deep Links, and point the image tag at the generated URL rather than adding a parallel metadata block.
- 2 Generate the image on the server from the record's own title, author, and a brand mark. Do not render it in the visitor's browser; the services that fetch previews do not run scripts.
- 3 Design one template that degrades well, then add variants only where the content type genuinely differs. Three good templates beat a configurable layout engine nobody tunes.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/share-image-generator
Public Profile Pages
Public Profile Pages
Give users a page worth sharing.
What it does
A public, shareable profile page per user, with control over what's visible.
How it works
- 1 Give each user a public URL with a slug they choose, not a database ID.
- 2 Let the user decide what appears — default to private and let them opt in.
- 3 Make the page work signed-out, and give it proper SEO and share metadata.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/public-profile-pages
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
3
It inspects, then implements
Your agent reads your existing app first, then adds the feature to fit it.
Works with your stack
These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.
Need it tighter than that? Customize the feature and tell it exactly what you're running.