Skip to content

Feedback

Quality reports and feature requests use the same authenticated feedback service, but carry different information.

Every successful submission returns an opaque report ID. The CLI and MCP confirmations print it as Receipt:, while Python exposes it as FeedbackResponse.report_id. The ID names the submission for later triage; it is not a URL or a report-reading endpoint.

Report what you observed, not what you think caused it. Choose the earliest visible symptom; repeat --reason when more than one label independently describes the result:

Terminal window
analog feedback quality https://example.com/page \
--reason under_rendered \
--reason poor_field_naming \
--note "the final products are missing; prices landed under text_3"

A quality report requires the page’s full HTTP(S) URL and at least one reason label. The note is optional; use it for a short “expected X, got Y” explanation. There is no saved-result handle field.

Feature requests are free text. They carry no URL and no reason labels:

Terminal window
analog feedback request "diff two handles as a table"

The MCP server exposes the same two report shapes through analog_feedback. Its input schema enumerates every accepted label:

{
"kind": "extraction_quality",
"url": "https://example.com/page",
"labels": ["under_rendered", "poor_field_naming"],
"note": "the final products are missing; prices landed under text_3"
}

From Python, submit a validated FeedbackRequest:

from analog import Client, FeedbackRequest
report = FeedbackRequest(
kind="extraction_quality",
url="https://example.com/page",
labels=["under_rendered", "poor_field_naming"],
note="the final products are missing; prices landed under text_3",
)
receipt = Client().submit_feedback(report)
print(receipt.report_id)

For a feature request, use FeedbackRequest(kind="feature_request", note="…").

Extraction URLs are never logged. A quality report includes the URL you explicitly submit; it never includes page content. A quality-report payload contains only the report kind, URL, labels, optional note, and label-set version. It has no fields for page HTML, markdown, records, or a saved-result handle.