Paste one line and any site can collect feedback, bugs, and ideas — spam-filtered, beautifully. Then the part nobody else does: your team or your AI agents open the pull request that fixes it — drafted, linked, and merged by a human.
no backend · static-site friendly · self-host or hosted
“the annual toggle doesn't update the total 😕”
Every other feedback tool ends at the inbox. This one carries the spark all the way down the wire — from someone typed this to an agent shipped the fix, with the PR linked right back to the note. We read every note. Then we ship it.
One <script> tag, or a plain <form> for fully static sites. No backend, no database, no cron. Thirty seconds.
A lightbulb button → type → send. Spam-filtered on the way in, stored, and fanned out to Slack or a webhook the instant it lands.
Triage in the dashboard, or let an agent in Claude Code open the PR that fixes it. The note moves to resolved with the fix linked.
One script tag or a plain form. The browser posts cross-origin; the site needs nothing of its own. Static-site friendly by design.
Lightbulb button, single-textarea modal, type selector, ⌘+Enter, and a confetti thank-you you can make your own.
A REST API and an MCP server let your team or your coding agents read a note and open the pull request that closes it.
One unified pipe. Slack and signed webhooks today — and a webhook is the Zapier / Make / Sheets path. Telegram & email next.
One-tap reactions, per page or per feature, when a full note is more than you need.
Pick the color or match the host site automatically. Whitelabel the widget, the emails, the dashboard.
It speaks MCP. An agent in Claude Code or Cursor reads a bug, finds the file, and opens a draft PR a human merges — with the fix linked back to the note. Git access is brokered through a GitHub App: per-repo, one-hour scoped tokens, never a stored credential. The agent is treated as a careful contributor, not a trusted teammate.
Six controls ship in the smallest build and never get cut.
The embed key is a routing ID. Submissions are authorized by where they come from, plus Turnstile and rate limits — not by hiding the key.
A signed timing token and a hidden trap stop ~99% of bots for near-zero friction, with a fake-200 so they can't learn.
Every webhook call resolves, validates, and pins the IP — private, loopback, and cloud-metadata ranges are blocked. https-only, no redirects.
Sliding windows on both axes, with the real client IP verified end-to-end. Floods get shed at the edge.
Connector secrets are AES-256-GCM encrypted before anything touches a backup. Submitter IPs are hashed, never stored raw.
Every query runs through one scoped repository. Wrong owner → 404. One tenant can never see another's notes.
Start hosted in two minutes, or take the Docker image and run it on your own server with your own database. Either way it's one auto-updating widget and nothing to maintain. Generous by default — your data, your rules, no nickel-and-diming.
Free while in beta · spark → shipped