jamie10x@portfolio:~$ cat projects/cardlens.md

CardLens

A native Android business-card scanner that turns card photos into organized contacts and follow-up reminders, with on-device text recognition and local storage.

← All projects
CardLens — Application screenshot
Application screenshot
Published2026

My contribution

Android Developer

Built the scan-to-contact workflow, from camera capture and gallery import to editable OCR results, searchable contact profiles, reminder scheduling, and CSV export. Developed the Kotlin and Jetpack Compose application and published it on Google Play.

Inside the product

Select a screenshot to enlarge it.

Architecture overview

01

Kotlin / Jetpack Compose / MVI

02

CameraX / ML Kit OCR

03

Room / Flow / WorkManager

Engineering approach

On-device recognition

CameraX handles capture and ML Kit reads text locally. A review step lets users correct extracted fields before saving a contact, rather than treating OCR output as final.

Local data, reactive screens

Room persists contacts and follow-ups. Coroutines and Flow feed ViewModel state into Compose screens, with explicit user actions and Koin dependency injection.

From a scan to a follow-up

WorkManager schedules reminder notifications, while contact status and completion tracking support the next conversation. CSV export lets users take their contact data with them.

Core features

  • Camera capture and gallery import with on-device OCR
  • Review and edit extracted contact details before saving
  • Search contacts, filter by status, and keep meeting notes
  • Schedule follow-ups and track their completion
  • Local contact storage and CSV export
  • English and Uzbek interfaces

Technology stack

KotlinJetpack ComposeCameraXML KitRoomCoroutines / FlowKoinWorkManagerDataStoreMaterial 3