Project / Customer-facing systems
Product in, on-brand output out — with the rules applied.
Input IMG_2291.jpg · 4.1 MB · dropped in the watched folder
batch 118 · 12 images · EXIF 2026-03-02 09:14 folder watch → Make webhook → queue no filename parsing: the photo is the only input
1988 base set · #401 · graded 8.5
Gloss surface with one light print line upper-left. Two soft corners, clean edges, centring 55/45. Priced from four graded comparables in the last 90 days.
- grade stated before condition prose — the rule is disclosure first
- no adjectives the grade doesn't support ("mint", "pristine" are blocked)
- price carried from the rule table, never written by the model
- Claude API
- OpenAI API
- LangChain
- LlamaIndex
- Pinecone
- n8n
- Make.com
- Zapier
- Supabase
- Airtable
- PostgreSQL
- Google Sheets
- Python
- FastAPI
- Node.js
- Cloudflare
- Google Cloud
- Hetzner
- Shopify
- Slack
- HubSpot
- GoHighLevel
- Klaviyo
- Chatwoot
- WhatsApp Business API
- Meta API
- Mailgun
- OpenAI Vision
- ClickFunnels
- Twilio
- ElevenLabs
- Whisper / TTS
- Docker
- Redis
- Stripe
What it is
Nebula sells collectibles, where every item is effectively one-of-one: the listing, the condition grade, and the price all depend on what the photo actually shows. Listing a week’s intake was a weekend job.
The pipeline intercepts raw product photos as they land. A vision model extracts the item name, attributes, and a condition grade; a rule table — not the model — turns that grade plus comparables into a price; the finished listing is pushed to Shopify with images, tags, and copy attached. Over 2,000 SKUs have gone through it. Nothing is typed in twice.
The rules stay outside the model on purpose. Pricing is the part of this a business will want to change on a Tuesday afternoon without asking anyone, and a prompt is a bad place to keep a policy.
- 2,000+SKUs auto-pricedNebula
- 100%catalog sync, no manual entry
From a real engagement. Names are changed; the numbers are not.
How it works
The model reads the photo. A rule table sets the price.
-
Photos are the input
Raw product photos land in a watched folder. A
Make.comscenario picks up each batch and opens oneAirtablerow per item. Nobody types a product name. -
Vision extracts the facts
OpenAI Vision APIreads the item name, attributes, and a condition grade straight off the photos and writes them to the row. This is the only step where the model touches anything that affects price. -
A rule table sets the price
A rule table — not the model — turns the condition grade plus recent comparables into a number. It lives in
Airtableso the business can change pricing policy on a Tuesday afternoon without editing a prompt or asking anyone. -
The listing is assembled
The finished draft is pushed to
Shopifywith images, tags, and copy attached. Grades that fall under the confidence threshold are held in a review queue instead of going live unseen.
“It cleared the queue we could never keep up with. We only look at the handful it flags now.”
Operations lead · multi-store retail operator
“Condition grading and pricing that used to be a weekend is now a photo upload.”
Founder · collectibles brand
“The drafts are good enough that answering is now approving.”
Operations lead · B2B services
“I stopped waiting for yesterday's numbers. Today's are just there, all stores in one view.”
Owner · multi-store retail operator
“It books and qualifies before we're even awake. The morning list is just the ones worth a callback.”
Founder · home-services company
“It shipped in pieces we could check as they landed, and the pieces we argued with got changed.”
Operations manager · logistics
“None of it is rented. I did not expect that to matter as much as it turned out to.”
Founder · consumer goods
Proof
"Condition grading and pricing that used to be a weekend is now a photo upload."
Founder · collectibles brand
References on request.