quibble.fyi
Early access

Nitpicks… now with issue numbers. Small gripes, properly filed. Petty? Maybe. Tracked? Always. It bugs them. Now it's a bug. From “ugh” to issue #412. Point at it. Your agent takes it from there. Say what's wrong. Your agent fixes it. Clearer feedback in. Better fixes out. Found it. Filed it. Stack trace attached. No more “which page were you on?” Stuck? Say so. Support sees exactly where. Point at the typo. It's an issue. Launch review, without the email thread. Testers click. Issues appear, details attached.

quibble is a feedback button for your web app. They write one sentence. You get an issue in your own tracker with the page, the browser and the error attached.

quibble is a feedback button for the app you're building. Click the thing that's off and say it in a sentence. Your tracker gets an issue with the page, the element and the error, ready for Claude Code, Copilot's coding agent or Codex to pick up.

quibble is a help button for your web app. Customers describe the problem in a sentence, right where they're stuck. Your tracker gets an issue with the page, who's asking, the error, and the account details your app adds.

quibble is a feedback button for your test builds. Testers point at what's broken and write a sentence. Your tracker gets an issue with the page, the element, the browser and the last errors, with no copy and paste.

quibble is a feedback button for a website in review. Reviewers click the heading, image or link they mean and write a sentence. Your tracker gets an issue with the page, the part they pointed at and their screen size.

Email for early access Try it live

Feedback straight into your tracker, wherever it comes from

What arrives with every note

Always

What they wrote, the page they were on, its title, where they came from, their screen size, browser, language and time zone.

Who sent it

Their name from the sign-in you already have. Without one, they can type it, and the issue says it's self-declared.

When something broke

The last five JavaScript errors the page threw, folded away under Diagnostics until you want them.

When they choose

The element they pointed at. A screenshot, with any region you mark private blanked out.

Additional context you need

Console output, failed network requests and any fields your app wants to add. Off until you turn them on.

FYI nothing leaves your infrastructure.

Hosted feedback tools receive your users' screenshots, console logs and URLs on their own servers. quibble has no servers. A note goes from the browser to your app, and from your app to your tracker, with a token only your app holds.

With nobody else in the path, there's no additional data processing agreement to sign, no additional subprocessor to list and no additional vendor security review to run.

What that means for a security review

A hosted tool
  1. Their browser
  2. Their servers
  3. Your tracker
quibble
  1. Their browser
  2. Your app
  3. Your tracker

FYI a submission can never create a label.

People can tag a note, but only with labels your tracker already has. Anything else is dropped before the issue is written, so your label list stays the one you made.

Priorities stay on your scale too. Ask for a P0 and quibble files a P1.

How quibble handles a submission

They asked for uiurgent-from-the-ceoP0

quibble filed uiurgent-from-the-ceoP1

FYI nobody needs an account to complain.

One service token files every issue, so the people reporting never need a login on your tracker. Their name comes from the sign-in already in front of your app: Cloudflare Access, SAML, OIDC, oauth2-proxy or mTLS.

No sign-in at all? quibble can ask for a name or email, and marks it self-declared in the issue, so nobody mistakes it for a verified identity.

Identity, and its limits

Behind your sign-in- Reported by: [email protected] (via quibble)

Typed in, no sign-in- Reported by: [email protected] (self-declared, via quibble)

FYI no database. No container. Nothing new to run.

Your issue tracker is the datastore. quibble is a Python package with no dependencies of its own, one script tag, and an adapter for FastAPI, Django, Flask, Starlette or Litestar. Others can easily integrate using a documented schema. It runs inside the app you already deploy.

Which is also why it can run in your browser, with no server behind it. Try it live.

Watch it work

Under a minute, unedited: quibble added to a pretend app, a note filed while pointing at the broken button, an invented tag dropped, and a private box that never leaves.

Try it live

The live demo runs quibble itself in your browser. Nothing you type leaves it.

Which trackers and languages work

Trackers

TrackerStatus
GitHubTested live
GiteaTested on 1.27.3
ForgejoTested on 12.0.4
GitLabTested on 19.4.1 CE
GitHub Enterprise ServerNot yet tested
Jira Data Center / ServerRoadmap
Azure DevOpsUnder consideration
RedmineUnder consideration
Bitbucket Data CenterUnder consideration

Languages

LanguageStatus
PythonSupported
Any other stack
By implementing quibble's documented schema.
Supported
Apps in other languages, through a small sidecar service rather than a port per language.
Roadmap

Want it in your app?

quibble is in early access. Write to hello [at] quibble [dot] fyi and say what you'd use it for. A person reads every one.

Email for early access