Inspiration
Applying for jobs is a volume game that punishes you for playing it. The advice everyone gives is "tailor your CV to each posting" — and it's correct. ATS filters genuinely do screen on keyword overlap, and a generic CV genuinely does get buried. But tailoring one application properly takes 45 minutes: read the posting, identify what they actually want, rewrite your bullets, rework the cover letter, then do it again for the next one.
So people stop. They send the same PDF to 40 companies and wonder why nothing lands.
The existing tools didn't solve this for me. Most are web-based resume builders that want an account, a subscription, and your entire employment history on their servers before they'll do anything. And almost none of them touch the part of the process that actually decides the outcome — the interview. You can have a perfect CV and still walk into a room unprepared for the questions that specific role will generate.
I wanted the whole loop in one place, on a phone, with no sign-up: paste in a job, get everything you need for that job.
What it does
You share a job posting into Vytae from Safari: LinkedIn, Indeed, or anywhere else — via the iOS share sheet, so there's no copy-pasting. The app parses it and then, on demand, gives you:
- A tailored CV : your experience rewritten for that specific role, ATS-safe formatting, exported as PDF
- A cover letter : written for the posting, with adjustable tone and language
- A match score : how your profile actually stacks up against the offer, with the specific keywords you're missing and a prioritized list of what to fix
- Interview prep : 10 questions generated from the real job description, scored, with your strengths and weak spots mapped across competencies on a radar chart
Everything generated stays on your device. There's no account, no login, and no cloud storage of your CV or any document the app produces.
One credit covers one job and unlocks all of it. If you only want the CV, you only generate the CV — you're not charged more for using less.
How we built it
Frontend: Expo / React Native, iOS-first. All animation runs through Reanimated on the UI thread. The visual language leans as close to native iOS as Expo allows — expo-glass-effect on iOS 26, expo-blur below that, and a translucent fallback beneath that.
Backend: deliberately almost nothing. A single Cloudflare Worker. No database, no ORM, no user table.
Payments: RevenueCat handles subscriptions, entitlements, and the paywall. Weekly and monthly plans, both credit-limited.
Challenges we ran into
Modeling costs before having data. Built a full cost/margin model — per-call token estimates, prompt caching, infra, platform fees, VAT.
App Store screenshots. Tried to generate them from a design prompt. The output was unusable, mostly because asking any tool to draw iPhone hardware in CSS produces something that looks almost right and therefore looks worse than nothing. Ended up building a local gallery that renders every UI component of the app as transparent PNGs, localized, so the compositions could be assembled by hand from real assets.
Naming. Eight candidates died to trademark conflicts or existing App Store apps before landing on Vytae. The job-search space has been thoroughly mined by everyone who reached for a "job-" prefix first.
Accomplishments that we're proud of
The backend is under 200 lines. There's no database, no auth system, no user table, no file storage — and it still enforces per-period usage limits that survive app deletion and reinstall. Most apps reach for Firebase or Supabase by default; this one genuinely didn't need either, and resisting that was a real design decision rather than a shortcut.
The privacy story isn't marketing. There is no server-side copy of anyone's CV because there is nowhere to put one.
And the interview prep works better than expected. Questions generated from the actual posting surface things generic question lists never would — the specific tooling a role names, the particular scope implied by the seniority language.
What we learned
Prompt caching helps less than expected on output-heavy work. Caching discounts input tokens. When most of your spend is a model writing a two-page document, there's not much input to discount.
RevenueCat's transfer behavior setting is load-bearing. An entire anti-abuse design rests on a single dashboard toggle that has no representation in the codebase. It's now documented in the README, because nothing else would catch it if someone changed it.
What's next for Vytae
- Salary and negotiation talking points derived from the offer and role, which is the step immediately after the interview and currently unserved
- Follow-up email generation post-interview
- LinkedIn profile rewriting using the same tailoring engine
- Usage-based plan tuning — the current credit caps are set conservatively against modeled costs; real attach-rate data will show where they actually belong
- Android, once the iOS unit economics are validated
APP STORE STATUS — REVIEW PENDING
Vytae was first submitted to Apple App Store review on September 19, 2026, inside the Shipaton window. It has been through four review cycles since (rejections on Sept 21, 23, and 29, each addressed and resubmitted the same day) and is currently awaiting a decision. Two expedited review requests were filed and not granted.
The app is complete, functional, and monetizing through RevenueCat. The public App Store URL is the only thing outstanding.
To test it now: Promo code / reviewer access: Click "Have a code?" on the bottom of the paywall Your code : 4JWRF6WEYLTLTAK8YY (Sandbox only since "To create custom codes, your subscription must be approved by App Review, and your app must be in the Ready for Distribution state.")
The demo video shows the live build exactly as it will ship.
I'll update this submission with the public App Store link the moment it's approved. Happy to provide anything else needed to verify.
Built With
- expo.io
- react-native
- revenue-cat
- swift
Log in or sign up for Devpost to join the conversation.