# Self-updating RudderStack data catalog in Notion

> Every Sunday night, refresh a Notion database with a plain-English page for every RudderStack transformation and library so the whole team can browse.

- Workflow type: agent
- Services: RudderStack, Notion
- Categories: Operations, Engineering
- Published: 2026-06-30

## What it does

- Pulls every transformation and library from your RudderStack workspace once a week and turns each one into a readable Notion page that explains, in plain English, what the code actually does.
- Captures the language, the libraries each transformation depends on, and a short changelog summary based on the last few revisions, so anyone can scan the history without opening RudderStack.
- Matches each transformation back to its existing Notion page by its RudderStack ID, then either updates that page in place or creates a new one. No duplicate entries, even after months of weekly runs.
- Refreshes a header summary page with totals (how many transformations, how many libraries, which languages are in use, which destinations they touch) so a non-engineer can get oriented at a glance.

## What you'll need

- A RudderStack account with permission to read transformations and libraries.
- A Notion workspace and an internal connection shared with the catalog database (and the summary page) you want to keep updated.
- An empty Notion database to act as your catalog, or an existing one you have already shared with the connection.

## Prompt

Build me an agent workflow that runs on a cron schedule every Sunday at 10pm in my local time zone. Its job is to keep a Notion database in sync with my RudderStack workspace so the database functions as a self-updating, browsable data catalog for my team. The output should read like documentation, not a governance audit.

Inputs I will provide when I publish the workflow: the Notion database ID for the catalog (a regular Notion database I have already shared with the General Input connection), the Notion page ID for a header summary page (also shared with the connection), and my RudderStack credential.

On each run the agent should do the following:

1. Use RudderStack List Transformations and List Libraries to pull the current state of the workspace. Keep both lists in memory for the rest of the run.

2. For each transformation, use Get Transformation to fetch the latest code and metadata, and List Transformation Versions (count=5, orderBy=desc) to fetch the last few revisions so you can write a short changelog.

3. Generate a plain-English doc for that transformation. It should cover what the code actually does in human terms (cleaning PII, enriching events, routing by traits, dropping test traffic, masking fields, joining lookup data, and so on), the language (javascript or pythonfaas), the libraries it depends on by name, and a short changelog summary inferred from the most recent revisions. Keep the tone like internal documentation a new teammate would read, not a security review.

4. Find the existing Notion page for that transformation. Use Notion Query a Database against the catalog database, filtered by a text property called "RudderStack ID" that equals the transformation's ID. If a row is returned, you have the existing page ID. If not, the page does not exist yet.

5. If the page exists, use Update Page Content as Markdown to replace its body with the freshly generated doc, then use Update a Page to refresh properties like Name, Language, Destinations, Libraries, Last Synced, and a short Description. If the page does not exist, use Create a Page as a child of the catalog database with those same properties set, then use Append Block Children (or Update Page Content as Markdown, whichever is cleaner) to write the body.

6. Repeat the same lookup-then-update-or-create pattern for each library in List Libraries, keyed by the library's RudderStack ID on the same catalog database (libraries and transformations share the database, distinguished by a Type property).

7. After every transformation and library is synced, refresh the header summary page using Update Page Content as Markdown. The summary should show total transformations, total libraries, a breakdown of languages in use, the destinations that transformations are connected to, and a short "What changed this week" section listing transformations whose latest revision was created in the last seven days.

Hard requirements: (a) the workflow must be safe to run weekly without creating duplicate Notion pages, so the Query a Database lookup by RudderStack ID is the chokepoint and must run before any create; (b) the agent must never modify, create, or delete anything in RudderStack itself, this is a read-only sync from RudderStack's side; (c) descriptions should read like reference docs aimed at a non-engineer browsing the catalog, so explain what the transformation does in business terms before getting into language and dependencies.

Property schema I expect on the Notion catalog database (the workflow should assume these exist and fail clearly if they do not): Name (title), Type (select: Transformation, Library), RudderStack ID (text), Language (select), Destinations (multi-select), Libraries (multi-select), Last Synced (date), Description (text).

## How to customize

- Change the cadence. Sunday night is the default, but you can run this daily, weekly on a different day, or monthly.
- Decide what shows up. Include only published transformations, only specific languages, or skip libraries entirely if you only want to catalog transformations.
- Tune the writing style. Ask for short one-paragraph descriptions, full doc-style explainers, or a checklist of what each transformation cleans, enriches, drops, or routes.

## FAQ

### Will this create duplicate pages if I run it every week?

No. Each Notion page is keyed by its RudderStack transformation or library ID. On every run, the agent looks up the existing page first and updates it in place. New transformations show up as new pages, and existing ones are refreshed.

### Does this change anything in RudderStack?

No. The catalog is read-only against RudderStack. The agent only reads transformations, libraries, and revision history. Nothing is created, updated, or deleted in your RudderStack workspace.

### What does each Notion page actually contain?

A plain-English description of what the transformation does, its language, the libraries it depends on, and a short summary of the last few revisions so you can see how it has changed over time. The header summary page totals everything across the workspace.

### Do I need a specific Notion plan?

Any Notion plan that lets you create an internal connection and share a database with it will work. You just need to share the catalog database and summary page with the connection before the first run.

### Can I point this at a Confluence space or another docs tool instead?

This version is built for Notion. If you want the same catalog inside a different docs tool, start from this prompt and ask Geni to swap the destination after the workflow is created.

Use this prompt in General Input: https://www.generalinput.com/prompts/self-updating-rudderstack-data-catalog-in-notion