CVora Pro - AI Resume Builder App for Android

Bluehost Shared Hosting

Overview

CVora Pro is a native Android AI Resume Analyzer built with Kotlin and Jetpack Compose (Material 3). Users manage multiple resumes, edit structured sections, see a live ATS-style score card with sub-scores and insights, paste a job description for keyword analysis, use AI-assisted actions (summaries, optimization, etc.), preview layouts, and export/share PDFs.

Data is stored locally with Room. The default AI implementation is LocalNlpAiService—template- and rules-based, no API keys and no cloud call for normal operation. You can replace it with your own AiResumeService implementation (OpenAI, Gemini, etc.).

Language: All first-party copy is English (res/values/strings.xml). resourceConfigurations += listOf("en") in app/build.gradle.kts keeps non-English locale folders from dependencies out of the APK so system-facing strings stay aligned with an English product build.

Privacy-friendly core path: resumes and ATS analysis run on-device. The manifest may include INTERNET for optional remote integrations or libraries—remove or keep according to your fork and Play Console data declarations.

Complete feature catalog

Below is a buyer-facing inventory of what the shipped app provides. Use it for marketplace listings, README excerpts, and support scripts. Items reflect the default build with LocalNlpAiService and optional AdMob.

Home screen

  • Resume list — All saved resumes with title and last-updated style presentation; tap to open the editor.
  • Create resume — New draft with smart unique naming (avoids duplicate titles; integrates ResumeTitles).
  • Delete resume — Confirmation dialog before removal.
  • Loading & errors — Full-screen loading while the list loads; snackbars for recoverable errors.
  • Optional banner ad — Bottom strip when ads_banner_enabled is on; fixed height to avoid layout jump.

Resume editor — layout & navigation

  • Top app bar — Back, save (with inline busy state), open preview.
  • Scrollable body — ATS card, horizontally scrollable tab row, and active tab content share one vertical scroll for a continuous “SaaS” feel.
  • TabsPersonal, Education, Experience, Skills, ATS & Job via ScrollableTabRow (swipe tabs on narrow screens).
  • Tab transitionsCrossfade between tab panels with eased timing.
  • Background — Premium gradient behind editor content (PremiumGradientBackground).
  • Save feedback — Snackbars for success, validation failures, generic save failures, and AI errors; state is consumed so messages do not repeat incorrectly.
  • Optimize overlay — Full-screen BlockingOverlay while “Fix My Resume” runs; success snackbar after completion; try/catch in ViewModel so failures clear busy state.

ATS score card & analytics (always visible above tabs)

  • Overall score 0–100 — Circular ring with animated sweep; label for “ATS” style positioning.
  • Sub-scores — Keyword match (only when job description is non-empty), section completeness, content quality; each with a progress bar when applicable.
  • ⓘ Info dialog — Plain-language explanation of the three pillars (keyword match, sections, content quality).
  • Empty job description — Keyword row shows N/A; prominent hint to paste a JD on the ATS tab; insights deduplicated so users are not spammed with the same message.
  • Missing keywords — Horizontal chip row when a JD is present and gaps exist.
  • Insights list — Bulleted mix of resume-quality suggestions (contact, summary, education, experience, skills) and ATS-oriented hints (measurable outcomes, action verbs, etc.).
  • Loading gateisAnalysisReady hides misleading scores until resume data is loaded into the editor.
  • Glass card presentationGlassCard with soft shadow/glow for marketplace polish.

Personal tab

  • Resume title, target role chips (9 job families), full name, email, phone, location, LinkedIn, portfolio, multi-line summary.
  • Validation — Name/email rules with inline supporting text for common issues.
  • AI on summary — Polish sentence, rewrite professional tone, action verbs; auto-generate from role; improve with optional “role focus” text field.

Education tab

  • Zero or more entries: school, degree, field, start/end year, description; add/remove per card.
  • Card-based layout with delete control.

Experience tab

  • Per role: company, job title, location, dates, long description.
  • AI — Polish, rewrite, verbs; generate with optional hints dialog; improve experience.
  • Loading overlay on card — When an experience-level AI job runs, that card shows a focused progress state.

Skills tab

  • List of skill name + level rows; add/remove.

ATS & Job tab

  • Large job description field (paste posting text).
  • Fix My Resume — Whole-resume optimization pipeline with global overlay and completion snackbar.

Preview screen

  • Template picker — Horizontal chips to switch preview template (e.g. Classic).
  • Live preview — Composable resume layout before export.
  • Save PDF — Writes to user-visible storage (MediaStore Download/CVora on API 29+, app external files on older APIs); Toast shows the saved path string.
  • Interstitial — After successful save, optional full-screen ad with cooldown and preference tracking (non-blocking if ad fails).
  • Optional bottom banner — Same AdMob banner slot as home when enabled.
  • Export busy state — Blocking overlay while PDF is generated.

Data, privacy, offline defaults

  • Local-first — All resume content in Room/SQLite on device.
  • No cloud account — No sign-in in the default product.
  • Default AI — Pattern/template driven; no third-party LLM calls unless you swap the service.

Quick-reference grid (marketing bullets)

ATS score (0–100) Circular ring, weighted blend, animated when ready. Keyword & JD Extract keywords, match %, missing chips, empty-JD UX. Multi-resume Create, list, delete, smart titles. Rich editor 5 tabs, scrollable strip, crossfade, validation. On-device AI Summary, experience, fix resume—pluggable interface. PDF save + path Paginated PDF, Toast with location, optional interstitial. Demo onboarding Seed resume, sample JD, one-time auto-open. Optional AdMob XML toggles, English-only resource packaging option.

ATS & job description

Scoring and insights are implemented in AtsScoreEngine and related analyzers.

  • Overall score — Blended ATS-style 0–100 from section completeness, keyword alignment (when JD exists), and content-quality heuristics.
  • Keyword match — Only active when the job description field is non-empty; compares extracted JD keywords to resume corpus (summary, skills, experience, etc.).
  • Section completeness — Contact, summary, education, experience, skills.
  • Content quality — Measurable outcomes, strong verbs, experience depth (heuristic).
  • Empty JD — Keyword row shows N/A; yellow hint to paste a JD on the ATS tab; duplicate “paste JD” insights are suppressed.
  • LoadingisAnalysisReady is false until editor state has finished loading the resume.

First launch & demo

  1. Bootstrap — In CvoraiApplication, if preferences indicate first bootstrap and the DB is empty, ResumeRepository.seedDemoResume() runs.
  2. Sample job description — The demo uses ResumeRepository.DEMO_JOB_DESCRIPTION so ATS keyword match works immediately.
  3. Auto-open editor (once)AppPreferences tracks hasAutoOpenedDemoEditor. After resumes load on Home, the app navigates to the editor for the resume with the lowest id (usually the demo), once per install, with a short delay to reduce flicker.

To change or disable demo behavior, edit CvoraiApplication.kt, ResumeRepository.kt, HomeScreen.kt (LaunchedEffect), and AppPreferences.kt.

User guide (end users)

Step-by-step flow for job seekers using the app as shipped. Wording can be reused in in-app help or store description.

  1. Home — See all resumes. Tap one to edit, or use Create for a new draft (title is suggested automatically to avoid duplicates). Long-press or use delete where offered; confirm when asked.
  2. First launch — You may land directly in a demo resume once. Edit it or create your own; the demo illustrates ATS with a sample job description.
  3. Editor top — Use Back to return home, Save to persist (watch for validation messages), Preview to see print layout before PDF.
  4. ATS card — Stays above the tabs. Overall ring score and bars update after your resume loads. Tap to read how keyword, section, and content scores work.
  5. Personal tab — Fill contact, links, summary, and pick a target role chip so tone defaults make sense. Use AI chips on the summary if you want quick rewrites (requires patience while the overlay runs).
  6. Education / Experience / Skills — Add blocks with the add actions; remove cards you do not need. On Experience, AI actions apply to each role; a small loading state may appear on that card.
  7. ATS & Job tab — Paste the full job posting text here. That enables keyword match, missing-keyword chips, and richer insights on the ATS card. If empty, the app shows N/A and hints instead of fake keyword percentages.
  8. Fix My Resume — Runs a whole-document optimization from the ATS tab; a full-screen blocking overlay appears until finished. Read the snackbar for success or errors.
  9. Preview — Switch template chips if more than one is available. Check pagination and spacing before export.
  10. Save PDF — From preview, save to device storage. A Toast shows where the file went (path varies by Android version). After a successful save, an interstitial ad may appear if the developer enabled it — your PDF is already saved.
  11. Ads — A banner may sit at the bottom of Home or Preview when enabled; it does not replace app content and uses a fixed-height area.

Requirements (product & environment)

Use this section for store listings, buyer expectations, and developer onboarding. If you change minSdk, JDK, or Gradle versions, update the tables here so documentation stays accurate.

End-user / device requirements

Item Value Notes
Minimum Android API 24 (Android 7.0) minSdk = 24 in app/build.gradle.kts.
Target SDK API 36 Storage, backup, and ad-related behavior follow current platform expectations.
Compile SDK 36 (with minor API level as set in Gradle) Must match installed SDK Platform in Android Studio.
Recommended test range API 24, 29, 33–36 Covers legacy devices, scoped storage transition, and latest emulators.
Network Optional for core features Editing, Room, default AI, and ATS work offline. Needed for AdMob and any remote API you add.
Google Play Services Ads only play-services-ads when banners or interstitials are enabled.
UI language English Strings in res/values/strings.xml. Optional: resourceConfigurations += listOf("en") strips non-English dependency locales from the APK.

Developer workstation requirements

Item Details
Android Studio Latest stable; must support the project’s AGP (see gradle/libs.versions.toml, currently AGP 9.1.0).
JDK JDK 11+ for compiling; project sets Java 11 bytecode (compileOptions in app/build.gradle.kts). Use the JDK bundled with Android Studio unless you have a specific toolchain policy.
Gradle Wrapper included (gradlew); do not assume a global Gradle install version.
SDK components Android SDK Platform matching compileSdk, build-tools as prompted by sync, and at least one emulator image or physical device with USB debugging.

Functional requirements (what the shipped product does)

  • Maintain multiple resumes locally (create, open, edit, delete) with persistent storage.
  • Show an ATS-style overall score and sub-scores that react to resume text and optional job description.
  • Provide actionable insights (completeness, keywords, writing tips) without claiming a specific employer’s ATS.
  • Offer AI-assisted actions on summary, experience, and full-resume “fix” flows via pluggable AiResumeService (default: on-device, no API key).
  • Preview the resume and export a multi-page PDF to user-visible storage, with a clear success path (Toast path).
  • Respect AdMob configuration: master switch plus separate banner and interstitial flags; no crash when ads fail.
  • On first install, optionally seed demo content and auto-open the editor once for onboarding.

Non-functional requirements

  • UX: Single vertical scroll in the editor; horizontal tab row for many sections; crossfade between tabs.
  • Reliability: Long-running AI and PDF operations show blocking UI; errors clear busy state.
  • Maintainability: Ad unit IDs, app id, cooldown interval, and banner slot height are in XML (admob_config.xml), not scattered as magic numbers in Kotlin.
  • Privacy default: No mandatory account; resume data stays on device unless you add sync.

Demo

Demo Link: https://demo.products.techrobot.in/cvora-pro/v1.0/app-debug.apk

Changelog

27 March 2026 – Version 1.0

 - Initial Release 

0 average based on 0 ratings.

techrrobot

techrrobot

Visit Author's Portfolio

View Portfolio
Last Update 2026-04-06
Created 2026-04-01
Sales 1
Discussion Comments
Software Version Android 15.0 Android 12.0 Android 11.0 Android 10.0 Android 9.0
Files Included .apk .xml
Video Preview Resolution