Stop merging bad data.
Add one step to your pipeline. VisiHub verifies every dataset snapshot, catches structural drift, and produces a signed proof — before it reaches production.
- name: Verify financial export
uses: VisiGrid/verify-action@v1
with:
api_key: ${{ secrets.VISIHUB_API_KEY }}
repo: acme/payments
file_path: ./exports/ap_payments.csv 30 seconds to set up. Runs on every push, every schedule, every PR.
What happens when the action runs
Upload
The file is published to VisiHub as a new dataset revision. Content hash computed and recorded.
Check
Snapshot integrity check runs automatically: row count, column names, schema structure, content hash. Compared against the previous revision.
Diff
A structural diff is computed: rows added or removed, columns added, removed, or type-changed. Available as a JSON output for downstream steps.
Verdict
If the check fails, the action fails your pipeline. A cryptographically signed proof is available for download — whether it passed or failed.
Built for these workflows
Nightly exports
Export from QuickBooks, Xero, or your ERP on a schedule. VisiHub verifies every export and alerts on drift.
dbt post-hooks
After dbt run completes, verify the output table. If dbt corrupts the data, the pipeline fails before the dashboard updates.
PR data review
When data files change in a pull request, post a diff summary as a comment. Reviewers see exactly what changed.
Monthly close
Publish the trial balance or AP aging at month-end. VisiHub locks the snapshot and produces a signed proof for audit.
Example: Nightly verification with Slack alerts
name: Verify financial exports
on:
schedule:
- cron: '0 6 * * *'
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Export data
run: ./scripts/export.sh
- name: Verify snapshot
id: verify
uses: VisiGrid/verify-action@v1
with:
api_key: ${{ secrets.VISIHUB_API_KEY }}
repo: acme/payments
file_path: ./exports/ap_payments.csv
- name: Alert on failure
if: failure()
run: |
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text":"Integrity check failed for ap_payments.csv"}' Action outputs
Every output is available to downstream steps. Post diffs to PRs, alert on Slack, or gate deployments.
| Output | Description |
|---|---|
| verification_status | PASS or FAIL |
| diff_summary | JSON with row/col changes, schema mutations |
| proof_url | URL to download the signed verification proof |
| run_id | VisiHub revision ID for linking |
| version | Dataset version number |
What it catches
- Row count changed unexpectedly
- Columns renamed or removed
- Schema structure drifted
- Content hash of every upload
- Who published and when
- Full diff between versions
- Signed cryptographic proof
Get started in 30 seconds
Create a VisiHub account, generate an API token, and add three lines to your workflow.