Self-serve data freshness status page for business teams

By General Input

Give marketing, sales, and finance one page that says whether each dataset is current, with buttons to request a refresh or flag a problem.

Integrations

  • Airbyte
  • Linear

Type

App

Categories

  • Operations
  • Engineering

Build me a data freshness status page that my business teams can open themselves, so marketing, sales, and finance stop asking the data team whether a dashboard is current. It reads pipeline status from Airbyte and files problem reports into Linear. The audience is non-technical, so it should read like a status page rather than pipeline tooling.

Main view: a single Data status page listing one row per published dataset. Each row shows the friendly business name an admin configured (for example "Salesforce opportunities" rather than the raw connector name), a green, amber, or red badge, and a plain relative timestamp like "Updated 2 hours ago". Sort red first, then amber, then green, so anything broken is at the top. Load the rows from Airbyte List Connections, use Get Connection Details for the connection the admin mapped to each dataset, and find the last successful update with List Jobs filtered to that connection with a succeeded status, using Get Job Details when you need the finish time or run detail for a specific job.

Badge logic: compare the time since the last successful sync against the per dataset freshness target the admin set, stored by the app rather than read from Airbyte. Green when the dataset is inside its target. Amber when it is past the target but under twice the target. Red when it is past twice the target, when the most recent run did not succeed, or when there has never been a successful run. Show the reason in one plain sentence under the badge, such as "Last update did not finish" or "Expected every 24 hours, last updated 40 hours ago".

Request a refresh button on every row: start a sync for that dataset with Airbyte Trigger Sync or Reset Job. Rate limit this to one request per dataset per hour, enforced in the server handler and not only in the UI, so a stakeholder cannot spam syncs. Record who requested each refresh and when, and show it on the row as "Refresh requested by Priya, 12 minutes ago". While a refresh is running, disable the button and show "Refresh in progress", polling Get Job Details for that job until it finishes. Once the hour limit is hit, disable the button with "Next refresh available in 43 minutes" rather than hiding it.

Report a problem button on every row: opens a small dialog with a note field. On submit, file a Linear issue with Create Issue into the team the admin chose, with a title naming the dataset and a description prefilled with the friendly dataset name, the time it last updated successfully, the reporter's name, and the note they typed. Confirm inline with "Thanks, the data team has been notified" and show the most recent report on the row so two people do not file the same thing twice.

Admin settings view, visible only to admins: pick which Airbyte connections to publish, give each one a friendly business name, and set its freshness target in hours. This is the only screen where raw connection names may appear, since it is where the mapping is made. Also let the admin choose the Linear team that receives problem reports, using Linear List Teams to populate the picker, and let them hide a dataset from the status page without deleting its configuration. Friendly names, freshness targets, refresh request history, and the chosen Linear team are all app-stored configuration.

Keep all Airbyte jargon off the main status page: no connection ids, job ids, connector versions, stream names, or row counts. Do not build any pause, resume, or schedule editing controls anywhere in the app. The only two write actions in the whole app are starting a sync and creating the Linear issue.

Related prompts

Explore more prompts
Catch feature flags that never got switched on in productionWeekly alert noise review board for incident.io on-callMorning triage board for your Kernel browser agent runsTrack every half finished LaunchDarkly rollout in one boardFind the customers stuck contacting support again and againTurn shipped Linear work into Intercom product announcementsVoice agent QA review board for your Hume EVI callsClose the loop between Front tickets and Linear bug fixesOpen a Heroku release war room the moment production looks wrongFind the themes Help Scout tags miss and file them in Linear