Resume - Intelligent CV maker is Intelligent CV's free, ad-supported Android CV builder (Play package icv.resume.curriculumvitae, listed on the store as Intelligent CV). Jobseekers pick a UI language, create named profiles, and fill a full curriculum vitae in an in-app editor: personal details, job title, education, experience, skills, projects, publications, languages, interests, achievements, activities, references, a career objective, a cover letter, a photo and a signature. They then choose among hundreds of Professional (PR) and Modern (MO) templates — the Play listing claims 700+ — unlock selected layouts by watching a rewarded ad, preview and print to PDF, and keep a Downloads list of generated files. Home-screen PDF tools cover merge, split, compress, image-to-PDF, password protect/unlock and sign. Monetization is ads plus an optional premium flag rather than a required in-app purchase; cover-letter copy ships for English, Spanish, Italian, Portuguese, French and German. The app reports tens of millions of Play installs and a 4.5-star rating, with extra country gating (an indianUser preference, rating suppression in Indonesia and Turkey, and a device-block remote flag). It sits with other mobile CV makers such as CV Engineer and the resume tools inside Naukri, Indeed and LinkedIn rather than a single-country job board.
Named profile documents persist as profileData blobs keyed by profileName: contact lives on basicDetails.rname, remail, rphone and raddress1; strengths and hobbies sit on rstrength and rhobby; school rows are education.values[] with rcourse, runiversity, rmark and ryear; jobs are experience.values[] with rorganization, rdesignation, rorgfrom, rorgto and rrole; skills are value plus a 1–5 level; projects carry rptitle, rpdesc and rpduration; referees are rrefname, rrefdesignation, rreforg, rrefemail and rrefphone.
Layout choice is a separate catalog. A remote flags payload lists each layout’s id, template file stem, type (PR or MO) and pro bit; a rewarded unlock writes UnlockedTemplates.templateName and unlockedTime. Cover letters ride the same document as coverLetter.content, design, includePhoto and includeSign, with signature.values.sign for the footer image.
Generated PDFs show up as SaveWork rows (name, previewUrl, fileUrl, pathDisplay, updatedTime). ATS connectors, template-analytics dashboards and HRIS backup importers consume those fields; openData Studio turns them into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Fetch remote config (templates and flags)
POST
/v1/config/flagsopendataFetches the live template catalog (id, display, template, type PR/MO, pro) and feature flags that gate cover letters, CV analysis, import and export, PDF tools, device blocks and social links.
Auth: App identity for project intelligent-cv (no end-user login).
- templates
- id
- display
- template
- type
- pro
- allow_cover_letter
- allow_analysis
- allow_detailed_analysis
- allow_import_export
- pro_enabled
- latest_version
- force_latest_version
- device_blocked
- device_blocked_models
- feedback_mail
- social_media
- imageUrl
- targetUrl
- schedule_enabled
- show_merge
- show_sign
POST /v1/config/flags HTTP/1.1 Content-Type: application/json X-App-Key: <google_api_key> { "appId": "<app-id>", "appInstanceId": "<fid>", "countryCode": "US", "languageCode": "en", "appVersion": "8.9", "packageName": "icv.resume.curriculumvitae" }{ "entries": { "templates": "[{\"id\":\"1\",\"display\":\"1\",\"template\":\"template1\",\"type\":\"PR\"},{\"id\":\"55\",\"display\":\"49\",\"template\":\"template55\",\"type\":\"MO\",\"pro\":true}]", "allow_cover_letter": "true", "allow_analysis": "none", "allow_detailed_analysis": "pro", "allow_import_export": "all", "pro_enabled": "false", "latest_version": "0", "force_latest_version": "false", "device_blocked": "false", "device_blocked_models": "[]", "feedback_mail": "[email protected]", "social_media": "[{\"imageUrl\":\"asset://twitter.png\",\"targetUrl\":\"https://example.com/intelligent_cv\"}]", "schedule_enabled": "true", "show_merge": "true", "show_sign": "false" } }Load CV profile editor
GET
/v1/cv-docs/{profileName}/editoropendataOpens the named-profile editor and hydrates selectedProfile.basicDetails (rname, remail, rphone, raddress1, optional linkedin/website/salary/photo/ethinicity/medicalCondition) plus jobTitle and sortOrder.
Auth: Local editor session only. Profile payload is read back as Android.readProfile(profileName); no server session.
- profileName
- basicDetails
- rname
- remail
- rphone
- raddress1
- rdob
- rnationality
- website
- salary
- drivingLicence
- ethinicity
- medicalCondition
- photo
- rdesc
- visible
- jobTitle
- sortOrder
GET /v1/cv-docs/Default/editor HTTP/1.1 Accept: application/json{ "profileName": "Default", "basicDetails": { "rname": "Alex Rivera", "remail": "[email protected]", "rphone": "+1 415 555 0100", "raddress1": "San Francisco, CA", "rdob": {"rdesc": "1994-04-12", "visible": true}, "rnationality": {"rdesc": "US", "visible": false}, "linkedin": {"rdesc": "linkedin.com/in/alexrivera", "visible": true}, "website": {"rdesc": "alexrivera.dev", "visible": true}, "salary": {"rdesc": "120000", "visible": false}, "drivingLicence": {"rdesc": "C", "visible": false}, "ethinicity": {"rdesc": "Hispanic or Latino", "visible": false}, "medicalCondition": {"rdesc": "", "visible": false}, "photo": {"rdesc": "data:image/jpeg;base64,...", "visible": true} }, "jobTitle": {"values": {"value": "Product Manager"}}, "sortOrder": ["objective", "experience", "education", "skills"] }Save CV profile document
PUT
/v1/cv-docs/{profileName}opendataPersists the editor's selectedProfile JSON as UserProfile.profileData: education.values (rcourse, runiversity, rmark, ryear), experience.values (rorganization, rdesignation, rorgfrom, rorgto, rrole), skills.values (value, level 1–5), project.values (rptitle, rpdesc, rpduration), reference.values (rrefname, rrefdesignation, rreforg, rrefemail, rrefphone) and publication.values (rtitle, rdesc).
Auth: Device-local. saveProfile writes Room UserProfile (profileName, profileData, name, email, photo, updatedTime) and/or a file under the Profiles directory. PreferenceManager UserId is a local analytics identifier, not an account.
- id
- profileName
- profileData
- name
- photo
- updatedTime
- education
- values
- visible
- rcourse
- runiversity
- rmark
- ryear
- experience
- rorganization
- rdesignation
- rorgfrom
- rorgto
- rrole
- skills
- value
- level
- project
- rptitle
- rpdesc
- rpduration
- reference
- rrefname
- rrefdesignation
- rreforg
- rrefemail
- rrefphone
- publication
- rtitle
- rdesc
- rstrength
- rhobby
- robjective
- rdeclaration
- rplace
- rresumedate
PUT /v1/cv-docs/Default HTTP/1.1 Content-Type: application/json { "profileName": "Default", "name": "Alex Rivera", "email": "[email protected]", "photo": "file:///data/user/0/icv.resume.curriculumvitae/files/cv-docs/photo.jpg", "profileData": { "basicDetails": {"rname": "Alex Rivera", "remail": "[email protected]", "rphone": "+1 415 555 0100", "rstrength": "Stakeholder alignment", "rhobby": "Trail running", "robjective": "Ship applicant workflows that hiring teams actually use.", "rdeclaration": "I confirm the information is accurate.", "rplace": "San Francisco", "rresumedate": "2026-10-09"}, "education": {"values": [{"rcourse": "BSc Computer Science", "runiversity": "Example University", "rmark": "3.7", "ryear": "2016"}], "visible": true}, "experience": {"values": [{"rorganization": "Acme Corp", "rdesignation": "Product Manager", "rorgfrom": "2020-01", "rorgto": "2024-06", "rrole": "Shipped the applicant workflow."}], "visible": true}, "skills": {"values": [{"value": "SQL", "level": 4}], "visible": true}, "project": {"values": [{"rptitle": "Internal jobs board", "rpdesc": "Matched roles to CVs by title.", "rpduration": "2023"}], "visible": true}, "reference": {"values": [{"rrefname": "Jordan Lee", "rrefdesignation": "Engineering Manager", "rreforg": "Acme Corp", "rrefemail": "[email protected]", "rrefphone": "+1 415 555 0199"}], "visible": true}, "publication": {"values": [{"rtitle": "Hiring ops notes", "rdesc": "Internal playbook on structured CVs."}], "visible": true} } }{ "id": 12, "profileName": "Default", "name": "Alex Rivera", "email": "[email protected]", "photo": "file:///data/user/0/icv.resume.curriculumvitae/files/cv-docs/photo.jpg", "updatedTime": 1760006400000 }Load resume template HTML
GET
/v1/layouts/{template}opendataLoads a catalogued layout (Professional PR or Modern MO). The template picker records templateName plus unlockedTime when a rewarded ad unlocks a pro layout.
Auth: Local editor. Pro templates (TemplateItem.pro) require an unlocked UnlockedTemplates row or a rewarded-ad unlock in the template picker.
- id
- display
- template
- type
- pro
- unlocked
- unlockedTime
- profileName
- templateType
GET /v1/layouts/template55?templateType=MO&profile=Default HTTP/1.1 Accept: application/json{ "id": "55", "display": "49", "template": "template55", "type": "MO", "pro": true, "unlocked": true, "unlockedTime": 1760006400000, "profileName": "Default" }Read cover letter block
GET
/v1/cv-docs/{profileName}/cover-letteropendataReturns the cover-letter object on selectedProfile: HTML content, design (e.g. simple), includePhoto / includeSign flags, and the signature.values.sign image used in the letter footer.
Auth: Same local editor session. Gated by remote flag allow_cover_letter (default true) and canShowCoverLetter(); COVER_LETTER_LANG is en, es, it, pt, fr, de.
- coverLetter
- visible
- content
- design
- includePhoto
- includeSign
- signature
- values
- sign
- basicDetails
- rname
- language
GET /v1/cv-docs/Default/cover-letter HTTP/1.1 Accept: application/json{ "coverLetter": { "visible": true, "content": "<p>Dear hiring manager,</p><p>I am applying for the Product Manager role.</p>", "design": "simple", "includePhoto": false, "includeSign": true }, "signature": { "values": {"sign": "data:image/png;base64,..."} }, "basicDetails": {"rname": "Alex Rivera"}, "language": "en" }List generated PDF downloads
GET
/v1/generated-pdfsopendataPages the Downloads screen from the SaveWork table: generated PDF name, previewUrl, internalFileUrl, shareable fileUrl, size, sdkVersion, appVersion, pathDisplay and updatedTime.
Auth: Device-local Room table SaveWork. No network credential.
- items
- id
- name
- previewUrl
- internalFileUrl
- fileUrl
- size
- sdkVersion
- appVersion
- pathDisplay
- updatedTime
GET /v1/generated-pdfs HTTP/1.1 Accept: application/json{ "items": [{ "id": 31, "name": "Alex_Rivera_CV.pdf", "previewUrl": "/data/user/0/icv.resume.curriculumvitae/cache/Preview/preview_image.png", "internalFileUrl": "/data/user/0/icv.resume.curriculumvitae/files/Intelligent CV/Alex_Rivera_CV.pdf", "fileUrl": "content://icv.resume.curriculumvitae.fileprovider/generated/Alex_Rivera_CV.pdf", "size": "184320", "sdkVersion": 34, "appVersion": 809000, "pathDisplay": "Intelligent CV/Generated", "updatedTime": 1760006400000 }] }Export encrypted profile backup
POST
/v1/backupsopendataWrites an encrypted .bkp of UserProfile rows (icvprofiles prefix) so another install can import the same profileName / profileData pack.
Auth: Local file picker. Gated by remote flag allow_import_export (default "all") and enable_export. Payload is encrypted with the remote key value; file prefix icvprofiles, extension bkp.
- profiles
- profileName
- name
- photo
- profileData
- updatedTime
- status
- filePrefix
- extension
- profileCount
POST /v1/backups HTTP/1.1 Content-Type: application/json { "profiles": [{ "profileName": "Default", "name": "Alex Rivera", "email": "[email protected]", "photo": "", "profileData": "{\"basicDetails\":{\"rname\":\"Alex Rivera\"}}", "updatedTime": 1760006400000 }] }{ "status": "OK", "filePrefix": "icvprofiles", "extension": "bkp", "profileCount": 1 }Send in-app feedback email
POST
/v1/feedbackopendataPosts feedback (including analysis-feedback dialogs), appending app version 809000, language, telephony country, PreferenceManager UserId and a push token.
Auth: HTTP Basic with a mail-relay API key. Recipient comes from remote flag feedback_mail.
- from
- to
- subject
- text
- id
- message
- appVersion
- language
- country
- userId
- firebaseToken
- isPremium
POST /v1/feedback HTTP/1.1 Authorization: Basic <base64-api-key> Content-Type: application/x-www-form-urlencoded [email protected]&[email protected]&subject=Intelligent%20CV%20Analysis%20Feedback&text=App%20Version%3A%20809000%0ALanguage%3A%20en%0ACountry%3A%20US%0AUser%20Identifier%3A%20%3CuserId%3E%0APush%20Token%3A%20%3Ctoken%3E{ "id": "<message-id>", "message": "Queued. Thank you." }Load localized notification copy
GET
/v1/tips/{lang}opendataReturns NotificationItemVO rows (title, content) for the daily-tips alarm.
Auth: Bundled asset, selected by PreferenceManager language. Shown when remote flags schedule_enabled and show_notif are true.
- notifications
- title
- content
GET /v1/tips/en HTTP/1.1 Accept: application/json{ "notifications": [{ "title": "Resume tip", "content": "Quantify impact in each experience.rrole bullet." }] }Open PDF sign tool
GET
/v1/pdf/sign-workspaceopendataLoads the bundled sign-PDF editor. PreferenceManager.getSignImages() stores prior strokes; enable_sign_new_crop switches the crop pipeline.
Auth: Local editor. Home PDF-tools card is gated by remote flag show_sign (default false) and enable_sign_new_crop for the crop flow.
- tool
- signImages
- enableSignNewCrop
GET /v1/pdf/sign-workspace HTTP/1.1 Accept: application/json{ "tool": "sign", "signImages": ["file:///data/user/0/icv.resume.curriculumvitae/files/sign/sign_1.png"], "enableSignNewCrop": true }
Data categories
- resume profiles
- education and experience
- cover letters
- resume templates
- pdf exports
- remote feature flags
Where teams use this data
ATS intake from structured CV JSON
An applicant-tracking connector maps profileData.basicDetails.rname / remail / rphone, education.values (rcourse, runiversity, ryear), experience.values (rorganization, rdesignation, rorgfrom, rorgto, rrole), skills.values (value, level) and project.values (rptitle, rpdesc, rpduration) into a candidate record without OCR.
Template marketplace analytics
A design-ops dashboard reads the Remote Config templates array (id, type PR/MO, pro) plus UnlockedTemplates.templateName / unlockedTime to see which Modern layouts jobseekers actually unlock.
Cover-letter and signature packet
A recruiter portal pulls coverLetter.content, coverLetter.design, includeSign and signature.values.sign with basicDetails.rname to render the same letter the app prints.
Encrypted profile backup into HRIS
A device-migration or HRIS import consumes the icvprofiles .bkp export (profileName, profileData, updatedTime) after decrypting with the remote key, instead of re-typing CVs.
Frequently asked questions
What is stored in an Intelligent CV profile?
Each UserProfile row holds profileName, a profileData JSON document, plus denormalised name, email, photo and updatedTime. Inside profileData, selectedProfile carries basicDetails (rname, remail, rphone, raddress1, rstrength, rhobby and optional linkedin, website, salary, photo), education.values, experience.values, skills.values (value, level 1–5), project.values (rptitle, rpdesc, rpduration), reference.values, publication.values, coverLetter and signature.
How does the template catalog work?
A remote flags payload under templates is a JSON array of TemplateItem objects: id, display, template (the HTML stem), type PR (Professional) or MO (Modern), and an optional pro flag. Opening a layout loads that stem from the layouts catalog; pro layouts are stored in UnlockedTemplates after a rewarded ad.
Is there a user account or OAuth login?
No. Profiles stay on-device (Room plus a Profiles directory). PreferenceManager UserId is a locally generated analytics id sent with in-app feedback and product analytics. Remote flags and ads use the app identity for project intelligent-cv, not an end-user password.
Can I export CVs besides PDF?
Yes. When allow_import_export is enabled, a backup write produces an encrypted .bkp (prefix icvprofiles) of UserProfile rows that a matching import can read on another device. Day-to-day sharing is still PDF via the Downloads list (SaveWork.fileUrl).
Apps similar to Resume - Intelligent CV maker
- Resume Builder - CV Engineer — CV Engineer is a free Android resume builder that creates ATS-oriented CVs with recruiter-written templates, AI editing, a mistake checker, and import from PDF or Word.
- Resume.io — Resume.io is an online resume builder with ATS-oriented templates, AI writing and review, PDF and DOCX export, and a cover-letter builder.
- Kickresume — Kickresume is an online CV and cover-letter builder with AI writing, LinkedIn import, an ATS checker, and a website builder that turns a resume into a personal site.
- Novorésumé — Novorésumé is a browser resume builder with ATS-oriented templates, an AI assistant, a cover-letter generator, and PDF export with a real text layer.
- Indeed Job Search — Indeed is a job-search app that lets candidates upload a resume or use Indeed’s resume builder, then apply with the saved resume from the device.
- LinkedIn: Community & Network — LinkedIn is a professional network whose Quick Apply flow uses a member profile or resume to apply for jobs in a few clicks.
- KitaLulus: Find Job & CV Maker — KitaLulus is an Indonesian job portal whose free CV maker builds an online professional CV alongside vacancy search and a customizable profile.
- Naukri: Job Search App — Naukri is India’s job-search app that includes AI-powered resume tools and interview-preparation features among its career services.
Topics
- intelligent cv api
- intelligent cv profileData
- resume builder education.values
- cv template PR MO
- coverLetter.content
- intelligent cv pdf export
- remote config templates
- cv maker rname rcourse
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use