# Geofeed Desk > Check a self-published IP geolocation feed (RFC 8805 CSV) before you publish it, then tune the flagged rows. The free check runs in the browser; the paid tune proposes location fixes and questions, and the page re-checks every proposal before it can be applied. App: https://geofeed-desk.skillsafe.ai/ API tutorial: https://geofeed-desk.skillsafe.ai/api.html ## What the free check does - Parses each line as RFC 8805 CSV: ip_prefix,alpha2code,region,city,postal_code. Blank lines and lines starting with # are comments; text after a # on a data line is treated as a comment (RFC 8805 section 2.1) and flagged, because plain CSV readers keep it. - Prefixes are parsed strictly (the rules Python's ipaddress uses with strict=True): a single address becomes /32 or /128, host bits set is an error, IPv4 octets with leading zeros are refused, IPv6 is written back in RFC 5952 form. Netmask notation and IPv6 zones are refused. - Non-public space comes from the IANA IPv4 and IPv6 Special-Purpose Address Registries: a prefix inside a block whose "Globally Reachable" column is False, N/A or blank is an error (1103), unless it sits inside a more specific block marked True; a prefix that only contains such a block is a warning (A202). Multicast and IPv6 outside 2000::/3 are treated as non-public. - Country codes are checked against ISO 3166-1 alpha-2 and region codes against ISO 3166-2, using the tables shipped with the geofeed-tuner skill; a region belonging to another country is an error (1303). A small-territory list (from the same skill) relaxes the region rule and raises suggestions 3301 and 3402. - City names have no authoritative list: placeholders (1401), codes and truncations (1402) and formatting problems (2401) are heuristics. - Postal codes are flagged (1501): RFC 8805 section 2.1.1.5 deprecates the field and section 4 says specific postal codes MUST NOT be published without the consent of the people located. - Duplicate prefixes are errors (RFC 8805 section 2.1.3). Nested prefixes are allowed; a nested prefix that repeats its parent's location is flagged as redundant. - Optional: paste the inetnum/inet6num ranges you hold, and prefixes outside them are flagged (RFC 9632 section 4: consumers MUST ignore data outside the referring inetnum). - Mechanical fixes (header row, case, postal codes, spacing, IPv6 spelling, missing commas) rewrite only the rows that change. - Every fix the page writes (mechanical or from the tune) is listed line by line and can be undone. Applying fixes to a file with an RPKI signature block warns that it must be re-signed. - Compare with the feed you publish now: prefixes added, removed and moved, matched on the normalised prefix, with country changes called out. - Exports: the feed, a findings CSV, a Markdown summary, and report-data.json in the geofeed-tuner skill's schema. Rule IDs 1101-3402 are the geofeed-tuner skill's own; IDs starting with A are this app's additions. ## The paid tune Input: {"task": "tune", "facts": "", "question": "optional"}. The facts carry the check's counts, the location groups that need judgement (rows sharing one country/region/city), the prefix problems, every distinct location in the feed, and the ISO 3166-2 codes for the countries involved. Output: one JSON object with verdict (ready, fix_first, hold), headline, fixes (one per group: replace, keep, do_not_geolocate or ask), questions, publish steps and summary. The page re-checks every proposed location with its own rules; a proposal that still fails, moves a row to another country or region, or picks a region code that was not offered is shown as a disagreement and is never pre-selected. Runs on the gpt-terra model alias and cost credits; the free check does not. ## What it does not do It does not fetch the feed, query a registry or verify an RPKI signature. It cannot tell whether a location is where your addresses are actually used. ## Sources - RFC 8805, A Format for Self-Published IP Geolocation Feeds: https://www.rfc-editor.org/rfc/rfc8805 - RFC 9632, Finding and Using Geofeed Data: https://www.rfc-editor.org/rfc/rfc9632 - RFC 5952, A Recommendation for IPv6 Address Text Representation: https://www.rfc-editor.org/rfc/rfc5952 - IANA IPv4 Special-Purpose Address Registry: https://www.iana.org/assignments/iana-ipv4-special-registry/ - IANA IPv6 Special-Purpose Address Registry: https://www.iana.org/assignments/iana-ipv6-special-registry/ - Source skill: geofeed-tuner by Sid Mathur / Fastah Inc., Apache-2.0 - https://skillsafe.ai/skill/@github/geofeed-tuner and https://github.com/github/awesome-copilot/tree/main/skills/geofeed-tuner (originally https://github.com/fastah/ip-geofeed-skills) - Notice: https://geofeed-desk.skillsafe.ai/NOTICE.txt