DevPortfolio — Requirements
Personas
- Junior dev — first job hunt, wants a striking portfolio they can scan to a QR code at meetups.
- Senior IC — wants to share a curated set of side projects with one tap from their iPhone to a recruiter’s screen.
- Recruiter — receives a portfolio link, scans it, browses the contents on her own phone, or views in AR if she’s curious.
User stories
Setup
- First launch shows a 2-screen onboarding (what the app does, “upload your resume to get started”).
- User picks a resume PDF from Files, iCloud Drive, or Photos.
- The app extracts text via Vision’s
VNRecognizeTextRequest, then runs each paragraph through a CoreML text classifier to label it (experience / skill / education / project / other). - The user reviews the classification, can edit labels, and saves.
Portfolio building
- After parsing, the app shows the structured portfolio: Profile (name, title), Experience (list of roles), Skills (chips), Projects (cards with titles + descriptions), Education.
- Each section is editable — user can rename, reorder, hide.
- User can add Projects manually (title, summary, image, link).
Sharing
- Tapping “Share” generates a QR code linking to a portfolio URL (
devportfolio://portfolio/{id}orhttps://yourorg.com/p/{id}if you host a redirect). - The recipient can tap the link on their phone (with the app installed) to view; without the app, they see a web view fallback.
- Sharing a portfolio always uses the user’s current version (no stale snapshots).
AR mode
- From Projects, tap “AR” to enter ARKit mode.
- The app detects horizontal planes and places one card per project floating above the plane.
- User can tap a card to expand it; pinch to scale; rotate via two-finger drag.
- Recording an AR session as a video is supported via
RealityKit’sARView.snapshot(...)over time, or a simpler “save AR screenshot” button.
Privacy
- Resume parsing is fully on-device. The PDF is never uploaded.
- The CoreML model is bundled, not downloaded.
- The portfolio URL points to user-owned data (CloudKit private DB); only the URL holder can resolve it.
Acceptance criteria
- Cold launch: < 1.5 s
- Resume parsing (1-page PDF): < 3 s end-to-end on iPhone 13
- Classifier accuracy on labeled test set: ≥ 80%
- AR mode FPS: ≥ 30 FPS on iPhone 13 in good lighting
- AR plane detection: < 5 s to detect first horizontal plane
- App size including model: < 50 MB
- Crash-free sessions: ≥ 99.5% in first 7 days post-launch
Non-goals
- No portfolio web hosting (the QR code can point to a static page you host elsewhere; the iOS app is the canonical viewer).
- No multi-page resume tracking beyond plain text extraction (no preserving original PDF layout).
- No collaborative editing.
- No analytics dashboard (“who viewed your portfolio”) — privacy invasive and out of scope.
Constraints
- iOS 17+, ARKit-capable device required for AR mode (older iPads work for non-AR features).
- Apple Developer Program (CloudKit + App Store)
- The CoreML model must be redistributable under a permissive license (we’ll train ours from open data).
Next: Architecture