-
-
SalonPost icon: a salon photo, a ready caption, and the stylist's scissors — one photo becomes an Instagram post in 60 seconds.
-
Free: 5 generations a month. Pro: unlimited, with a 7-day trial. Purchases and entitlements run through RevenueCat.
-
Tap what you did and how it should sound. The main flow never opens a keyboard — it's built for hands that are busy between clients.
-
Caption and hashtags in about 60 seconds, with a quality badge. Every caption is screened for legal and factual risk before you see it.
-
Finished a client? Pick the photo you just took. That's the entire input — no forms, no writing, no blank page to stare at.
Inspiration
I run marketing experiments with a real salon in Nagoya, Japan. Watching stylists spend 15–30 minutes writing a single Instagram post after a long day of appointments — often giving up halfway — made the problem obvious: posting consistently wins clients, but caption writing is nobody's favorite job. SalonPost cuts that 15–30 minutes to 60 seconds.
What it does
- Snap or pick one photo of your finished work (haircut, color, nails, lashes, makeup — any beauty service).
- AI generates a natural Japanese or English caption plus up to 30 optimized hashtags, informed by what's actually in the photo.
- A quality badge (pass / needs review) checks the caption against Japanese advertising regulations before you post.
- Optional AI photo enhancement cleans up lighting, color, and background clutter — without touching the actual work.
- Share straight to Instagram with the caption auto-copied.
Free tier: 5 generations/month. Pro (7-day free trial, monthly/annual via RevenueCat): unlimited generations and enhancement.
How we built it
- iOS app: Expo (React Native) + TypeScript + expo-router, built with EAS Build
- Backend: Hono on Vercel, with Supabase (anonymous auth upgrading to Sign in with Apple, Postgres with RLS, private storage with signed URLs)
- AI: Claude for caption generation and content-quality judging, Gemini for image-to-image photo enhancement
- Monetization: RevenueCat SDK with paywall, 7-day trial, and server-side entitlement sync via webhooks — free-tier limits are enforced on the backend
- Photos are stripped of EXIF metadata before upload, and enhanced images live in a private bucket
Challenges we ran into
- Getting captions that sound like a real stylist wrote them — not generic AI copy — took careful prompt design with tone options (polite / casual / English).
- Japanese advertising law (pharmaceutical and labeling regulations) restricts beauty claims like "cures" or "guaranteed results," so we built a two-layer quality checkng plus an LLM judge that suggests fixes.
- Handling customer privacy: portrait-rights consent notices at onboarding, EXIF stripping, and private image storage were non-negotiable from day one.
Accomplishments that we're proud of
- A complete photo-to-post pipeline (generate, are) running against production infrastructurewithin the first weeks
- A monetization design that uses RevenueCat enand webhooks syncing entitlements to our backendwhere limits are actually enforced
- Built alongside a real salon whose staff willia TestFlight
What we learned
Shipping a narrow vertical slice beats building't want a social media suite — they wanttonight's post done before the next client sits down. Every design decision followed from that.
What's next for SalonPost
- TestFlight beta with salon staff, App Store launch in early September
- v1.1 during Shipaton: 20 caption templates, a customer privacy, full English localization, and OneSignal push reminders
- Paywall A/B testing (time-saved vs. client-ac RevenueCat data
Built With
- claude
- expo.io
- gemini
- hono
- react-native
- revenuecat
- supabase
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.