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.
Quality reports
Section titled “Quality reports”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:
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.
Page access and rendering
Section titled “Page access and rendering”undetected_block- The page was a bot challenge or block that Analog treated as content. A block Analog already identifies is explicit and needs no report.
under_rendered- Content visible on the page is missing from the fetched markdown.
garbled_markdown- The markdown splits characters apart, runs words together, or puts content in the wrong order.
Missing, extra, or misplaced records
Section titled “Missing, extra, or misplaced records”no_records_found- The page plainly shows records, but none came back.
under_extraction- Some records visible on the page are missing.
over_extraction- The result contains more records than the page does.
wrong_content_extracted- The records came from the wrong part of the page.
page_chrome_in_records- Navigation, footer, menu, or other page controls appeared as data.
Fields and values
Section titled “Fields and values”poor_field_naming- Fields have generic names such as
text_2. misfielded_values- Values landed under the wrong fields.
Anything else
Section titled “Anything else”other- None of the labels above fit. Include a note explaining what you observed.
Feature requests
Section titled “Feature requests”Feature requests are free text. They carry no URL and no reason labels:
analog feedback request "diff two handles as a table"MCP and Python
Section titled “MCP and Python”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="…").
Privacy
Section titled “Privacy”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.