- Zapier
- Claude Vision API
- Adobe Lightroom API
- Slack API
- JavaScript
- XMP Metadata
- OAuth 2.0
- Real project
AI Photo Auto-Tagging Pipeline for US Nonprofit /Real Project
Slack photos tagged by Claude Vision and filed in Lightroom
Designed and built a fully automated photo management pipeline for Uptown Stories, a nonprofit creative writing program for youth in New York. The system monitors their Slack workspace for new photos, uses Claude Vision AI to analyze each image alongside the staff caption for context, generates accurate keywords, embeds them directly into the image metadata, and uploads the tagged photo to their Adobe Lightroom Cloud catalog — all within seconds of a photo being posted.
- Timeline
- 2 weeks
- Rating
- ★ 5.0
- Category
- AI Agents
At a glance
- Problem
- Uptown Stories staff post 6-10 photos per workshop session across multiple weekly sessions.
- What I built
- Built a multi-step Zapier automation triggered by Slack file uploads.
- Tools
- Zapier, Claude Vision API, Adobe Lightroom API, Slack API, JavaScript, XMP Metadata, OAuth 2.0
- Result
- Client rating ★ 5.0 out of 5
The problem
Uptown Stories staff post 6-10 photos per workshop session across multiple weekly sessions. Every photo had to be manually downloaded, tagged with workshop name, age group, activity type, and composition details, and uploaded to Lightroom. With a tag list of 17 categories and a growing library of thousands of photos, the manual overhead was unsustainable. There was also no retroactive tagging on the existing library, making search nearly impossible.
How it works
- 01Staff post photos in #social-media Slack channel with a caption describing the session
- 02Zapier trigger fires instantly on each new file uploaded to the channel
- 03Caption fetch step reads the message posted just before the photos for activity context
- 04Image is downloaded from Slack using bot token authentication
- 05Image and caption are sent to Claude Vision API with the full 17-tag classification prompt
- 06Claude returns tags (Workshop, Group, Outside, Middle School etc.) plus a descriptive filename
- 07Keywords are injected directly into the JPEG XMP metadata bytes before upload
- 08Adobe OAuth token is refreshed automatically from Zapier Storage on every run
- 09Asset is created in Lightroom Cloud catalog via Adobe partner REST API
- 10Tagged image is uploaded — keywords appear instantly in Lightroom without any manual entry
- 11Fallback path handles oversized images by using 1024px thumbnail for classification while uploading full resolution to Lightroom
What I built
Built a multi-step Zapier automation triggered by Slack file uploads. The pipeline fetches the staff caption posted alongside the photos for context, downloads each image using the Slack bot API, sends both image and caption to Claude Vision API for intelligent classification, injects the returned keywords directly into the JPEG XMP metadata before upload, and pushes the fully tagged photo to Adobe Lightroom Cloud via the partner REST API — with a descriptive AI-generated filename replacing the original camera filename.
Stack
- Zapier
- Claude Vision API
- Adobe Lightroom API
- Slack API
- JavaScript
- XMP Metadata
- OAuth 2.0