Airtable Sync
Mirror an Airtable table into Postgres — every page of it. Airtable returns 100 records at a time behind an offset token, so a single fetch silently truncates; this follows every page and unpacks the nested {id, fields} record shape, upserting on the Airtable record id so re-running is safe.
GraphQL Client
Query a GraphQL API with variables and store the result, with the error handling GraphQL actually needs: a failed query returns HTTP 200 with an errors array, so a status check alone silently stores nulls. Asserts on body.errors before writing, and keeps values in variables rather than interpolating into the query text.