Comments and Feedback
Canvas has two distinct review mechanisms that are easy to confuse:
- Comments — threaded discussion anchored to the memo, for collaborating with your team during review.
- Feedback — a per-section quality rating that trains Memosa’s learning system to write better memos over time.
This page covers both.
Comments
Section titled “Comments”A comment is a note attached to the memo. You can anchor it to a specific passage or to a whole section, reply to build a thread, react to it, and resolve it when the point is settled.
Comment types
Section titled “Comment types”| Type | Anchored to | Use it for |
|---|---|---|
| Inline | A selected span of text (via a ProseMirror mark) | “This number looks off” pointed at the exact sentence |
| Section | A whole memo section (no specific text) | “The risk section needs a tenant-concentration callout” |
| Suggestion | A span, with proposed-edit metadata (original vs. proposed text) | A concrete wording change for the author to apply |
Inline comments are anchored with a comment mark, so the highlight travels with the text rather than drifting if the document changes around it.
Threads, replies, and mentions
Section titled “Threads, replies, and mentions”Comments are threaded. Each comment can carry a thread of replies, so a review conversation stays grouped under the point it’s about instead of scattering. You can @-mention colleagues in a comment or a reply to pull them into the thread; mentioned users are tracked on the comment.
Reactions
Section titled “Reactions”Instead of a one-word reply, you can react to a comment with a constrained set of professional emoji. The available reactions are : thumbs up, thumbs down, check, eyes, red flag, question, bulb, and rocket. Reactions are scoped to this fixed set so the review surface stays focused.
Resolving
Section titled “Resolving”A comment is either open or resolved. When a point is addressed, mark the comment resolved; if it needs to come back, unresolve it. You can also batch-resolve or batch-unresolve a group of comments at once when you’re closing out a review pass. Resolved comments stay on the record — resolving hides a thread from the active list without deleting it.
Who can do what
Section titled “Who can do what”Comment actions follow the deal role hierarchy:
| Action | Minimum role |
|---|---|
| Read comments and replies | Viewer |
| Post a comment, reply, resolve / unresolve, react | Commenter |
| Edit or delete a comment | Commenter and the comment’s author |
In other words, viewers can read every comment but cannot post, reply, resolve, or react — commenting is what the commenter role unlocks. Editing or deleting a comment additionally requires that you authored it. See Roles and Permissions.
Comment activity broadcasts in real time over the document’s WebSocket connection, so collaborators see new comments, replies, reactions, and resolutions as they happen. See Real-Time Collaboration.
Feedback that trains the system
Section titled “Feedback that trains the system”Separate from discussion, you can rate the quality of a memo section. This is the signal that makes Memosa’s output improve.
When you submit section feedback (POST /api/canvas/{deal_id}/feedback), you provide:
- a rating from 1 to 5 (1 = poor, 5 = excellent),
- an optional short comment, and
- optional tags.
That rating feeds the ActiveLearningService, which aggregates feedback signals per section. Those aggregated signals power feedback-aware generation and chat context — the system learns which sections of which deal types tend to need work and adjusts accordingly. Feedback is isolated by deal classification (and team, where applicable) so signal from one context doesn’t bleed into an unrelated one.
Submitting feedback requires at least the commenter role (reading the aggregated analytics requires viewer). This keeps rating tied to people who are actually reviewing the memo.
Comments vs. feedback — which to use
Section titled “Comments vs. feedback — which to use”- Use a comment to talk to your team, flag something, or propose a wording change in context.
- Use a suggestion (a suggestion-type comment, or suggesting mode) to propose a concrete edit someone can apply — see Editing and AI Suggestions.
- Use feedback to rate section quality and improve future memos.
Sources
Section titled “Sources”src/canvas/models/comment.py—Comment/CommentReplymodels;CommentType(inline / section / suggestion);CommentStatus(open / resolved);ALLOWED_REACTIONS(the 8 emoji); replies, mentions, suggestion metadatasrc/canvas/routes/comment_routes.py— endpoint role gates: read = RequireViewer; post/reply/resolve/unresolve/react/batch = RequireCommenter; edit/delete = RequireCommenter + author check in the servicesrc/canvas/models/revision_event.py—EventTypecomment events (added/updated/deleted/resolved/unresolved/reply/reaction/batch) broadcast over WebSocketsrc/canvas/routes/feedback_routes.py—POST .../feedbackwithrating(1–5), optionalcomment+tags; feedsActiveLearningServicefor signal aggregation;GET .../feedback/analyticsmemory/prosemirror_roundtrip_contract.md— comment and suggestion marks are stripped before serialize (backend-owned, not in exported content)