# Visual slide library that flags your outdated Google Slides decks

> See every deck in your shared Drive folders as thumbnails, search the words inside them, and get an audit of anything still showing old pricing.

- Workflow type: app
- Services: Google Slides, Google Drive, Google Sheets
- Categories: Operations, Marketing
- Published: 2026-08-24

## What it does

- Turns the presentations in the Drive folders you choose into one searchable grid, each deck shown as a real thumbnail alongside its owner and last edit date.
- Flags any deck untouched past your staleness cutoff, 90 days by default, so forgotten collateral stops quietly circulating.
- Searches the words on every slide at once, so you can hunt an old price, a retired product name, or a claim you no longer make across the whole library.
- Audits any deck against your approved facts spreadsheet and lists what is wrong, how serious it is, and exactly which slide numbers to look at.
- Applies only the literal swaps you confirm, like an old price to the current one, and records every change in an audit trail.

## What you'll need

- A Google account with access to the shared Drive folders where your decks live
- The presentations you want covered sitting in those folders in Google Slides format
- A spreadsheet holding your approved facts: current pricing, approved claims, current product names, and logo rules
- A spreadsheet tab to keep the audit trail of applied fixes

## Prompt

Build me a visual slide library and staleness console for all the Google Slides decks scattered across our shared Drive folders, so I can finally answer "which decks still show last year's pricing?" without opening fifty files. It should be read only by default: nothing is ever changed in a deck unless I explicitly confirm it.

Settings, persisted in the app: the list of Google Drive folder IDs to cover, the staleness threshold in days (default 90), the spreadsheet ID and tab range of my approved-facts Google Sheet, and the spreadsheet ID and tab of the audit trail sheet.

Main screen is a searchable grid of every presentation in those folders. A handler calls Google Drive List Files with a query filtering to mimeType = 'application/vnd.google-apps.presentation' and trashed = false, scoped to the configured folders as parents, with supportsAllDrives set and nextPageToken followed until the listing is complete. Each card shows the first slide as a real thumbnail image from Google Slides Get Page Thumbnail (use Get Slides with a field mask to grab the first page objectId), plus the deck title, owner, and last modified date from Google Drive Get File Metadata, and a staleness badge on anything whose last modified date is older than the threshold. Get Page Thumbnail is a rate-limited expensive read, roughly 60 per user per minute, and the URL it returns is temporary, so lazy-load thumbnails only as cards scroll into view, queue the requests so we stay under the limit, and cache the fetched image in the app keyed by presentation ID plus modified date rather than storing the temporary URL. Show a placeholder until each thumbnail lands. Let me sort and filter the grid by staleness, owner, and folder.

Clicking a deck opens a detail view with a slide-by-slide thumbnail strip and the extracted text of every slide. Pull the deck once with Google Slides Get a Presentation or Get Slides using a field mask, then walk the page elements to extract text from shapes and table cells, keeping the slide number and the page object ID with each block. Cache the extracted text per deck keyed by the Drive last modified date and re-extract only when that date changes, since the Slides API has no pagination and one read returns the whole deck. The detail view also shows who can edit the file, from Google Drive List Permissions, listing the owner and anyone with writer access, so nobody is nudged toward a file they cannot change. If the current viewer is not an editor, say so plainly and keep the fix button disabled.

There is a global search box on the main screen that matches against the cached slide text of the whole library at once, so I can hunt a stale claim, an old product name, or a retired price everywhere in one go. Results list the deck, the matching slide numbers, and a snippet with the match highlighted, and clicking a result jumps straight to that slide in the deck detail view.

Each deck gets an "Audit this deck" button that kicks off a background agent embedded in the app. The agent reads every slide of that presentation (Google Slides Get a Presentation / Get Slides), reads the approved facts from my Google Sheet with Google Sheets Get Values (current pricing, approved claims, product names, and logo rules), compares the two, and writes a findings list back into the app so it is browsable in the deck detail view. Every finding carries a severity level, the exact slide numbers it applies to, the text found, the approved fact it conflicts with, and a flag for whether it is a literal approved swap or a judgment call that needs a person. The agent never modifies the deck. Findings persist per deck with the audit timestamp, grouped by severity in the detail view, and the grid shows a small badge for decks with open high-severity findings.

A second "Apply safe fixes" button is enabled only after an audit has run, and only offers findings the agent marked as literal approved swaps, such as an old price to the current one or a retired product name to the current one. Clicking it opens a confirm step listing every exact before and after with the slides affected, and nothing runs until I confirm. On confirm the handler runs Google Slides ReplaceAllText once per approved swap, then logs every change to the audit trail sheet with Google Sheets Append Values: timestamp, deck name and link, who applied it, the old text, the new text, the number of occurrences changed, and the finding it came from. After applying, refresh the deck's metadata and cached slide text so the library reflects the change, and show the applied fixes in the detail view alongside the remaining findings.

Rules to bake in: nothing runs on a schedule, everything happens when someone opens the app and clicks. Findings never auto-apply. Subjective findings like rewritten messaging, tone, or design guidance are reported for a human and can never be applied through the fix button. Handle Google rate limits gracefully with backoff and a clear message rather than a broken grid.

## How to customize

- Change the staleness cutoff from 90 days to whatever matches your content refresh cycle.
- Point it at more Drive folders as new teams start keeping decks in their own spaces.
- Decide which kinds of finding count as safe swaps and which always need a person to rewrite them.

## FAQ

### Will this change my decks without asking?

No. The app is read only until you press Apply safe fixes, and even then it shows you every exact before and after and waits for you to confirm. Anything subjective, like rewritten messaging, is only ever reported to you.

### What counts as a stale deck?

Any presentation that has not been edited within your cutoff, which is 90 days unless you change it. Those decks get a badge on their card so you can spot them at a glance in the grid.

### Can it find a specific phrase across every deck?

Yes. The app reads the text of every slide and keeps it searchable, so a single search returns each deck that mentions the phrase and the slide numbers where it appears.

### What if I do not have edit access to a deck?

Each deck shows who can edit it, so you know straight away whether to fix it yourself or ask the owner. The fix button stays unavailable on files you cannot change.

### Does it work with decks kept in shared drives?

Yes, as long as your Google account can see the folder. Point the app at the folders you care about and it picks up the presentations inside them.

Use this prompt in General Input: https://www.generalinput.com/prompts/visual-slide-library-that-flags-your-outdated-google-slides-decks