What it is

Copout is a Magic-8-Ball for getting out of things. Pick your situation — running late or cancelling plans — then who you're dodging (work, a friend, or family), give your phone a shake, and out pops a believable, ready-to-use excuse from a hand-written library of 1,200. Tap "Use this one" and it copies straight to your clipboard and saves it — and Copout never offers you the same excuse twice. It runs fully offline: no account, no sign-up, no waiting.

Inspiration

Everyone knows the freeze of trying to invent a plausible reason to bail — and the worse feeling of reusing the same tired one. We wanted to turn that dreaded moment into a single shake: a fast, funny way out when you need one and your imagination's on empty.

How we built it

  • SwiftUI + SwiftData, with the project generated by XcodeGen.
  • The 1,200-line excuse library lives entirely on-device — no backend, no network call in the core loop — so it's instant and works offline.
  • Monetization runs entirely through RevenueCat Ads over Google AdMob: a banner, a frequency-capped interstitial, and a rewarded video. loadAndTrack wraps every ad call so impressions, clicks, and revenue report into one RevenueCat dashboard.
  • Google UMP handles consent and SKAdNetwork handles attribution. Non-personalized ads only — no IDFA request, no ATT prompt.

Challenges we ran into

  • Funding a free app with ads without wrecking the "shake → laugh" loop — solved by tying each ad to a moment of user intent rather than raw volume.
  • Keeping everything offline and instant.
  • Guaranteeing an excuse never repeats within a category.
  • Clearing App Store review, including an initial Guideline 2.1 information request.

What we learned

Using RevenueCat Ads as a single source of truth for ad revenue across formats made monetization measurable from day one — and that measurability is what shaped where each ad belongs. We also learned the unglamorous side of shipping: app-ads.txt / AdMob setup and the App Store review dance.

What's next

Seasonal and situational excuse packs, shareable excuses, and an optional AI mode for fully bespoke excuses on demand.

Built With

  • admob
  • google-admob
  • google-ump
  • ios
  • ipados
  • offline
  • revenuecat
  • revenuecat-ads
  • skadnetwork
  • swift
  • swiftdata
  • swiftui
  • xcode
  • xcodegen
Share this project:

Updates

Submission history