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

  1. Snap or pick one photo of your finished work (haircut, color, nails, lashes, makeup — any beauty service).
  2. AI generates a natural Japanese or English caption plus up to 30 optimized hashtags, informed by what's actually in the photo.
  3. A quality badge (pass / needs review) checks the caption against Japanese advertising regulations before you post.
  4. Optional AI photo enhancement cleans up lighting, color, and background clutter — without touching the actual work.
  5. 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

Share this project:

Updates

Submission history