AI-Powered Android Personal Assistant
Voice commands • Finance tracking • Location reminders • Smart scheduling
- Download APK
- Features
- Screenshots
- Requirements
- Installation
- Configuration
- Usage Guide
- Voice Commands
- Project Structure
- Tech Stack
- Contributing
- License
⬇️ Download Smart Calendar v0.0.1 Beta
- Download the APK
- Disable Play Protect (required for APK installation)
- Install the APK
Google Play Protect blocks APK installations from unknown sources as a safety measure. Since this app isn't on the Play Store, you need to temporarily disable it. Don't worry — the app is open source and safe. You can re-enable it after installation.
- Open Google Play Store
- Tap your profile icon (top right)
- Tap Play Protect
- Tap Settings (gear icon)
- Turn OFF Scan apps with Play Protect
- Confirm by tapping Turn off
After installing the APK, you can re-enable Play Protect for continued protection.
- Open the app
- Grant requested permissions (microphone, notifications, etc.)
- Configure your AI provider in Settings (Ollama or OpenAI)
Talk naturally to your assistant:
- "Remind me to call John at 3 PM tomorrow"
- "I spent 500 birr on groceries today"
- "Set an alarm for 7 AM every weekday"
- "Remind me to buy milk when I reach the store"
Say "Kiro" followed by your command — even with your phone in your pocket. Custom implementation using Android's AudioRecord API with support for variants: Kiro, Kyro, Kero, Cairo, Kira.
Geofencing-powered reminders that trigger when you arrive or leave locations:
- Named places (home, work, gym)
- Generic categories (any store, pharmacy)
- Custom radius and time constraints
- AI-powered SMS parsing for automatic transaction detection
- Manual entry with categorization
- Budget management with 80% warnings
- Spending insights and analytics
- Priority levels with color coding
- Categories: Work, Personal, Shopping, Health
- Recurring schedules (daily, weekly, monthly)
- Snooze options and rich notifications
- Voice Button (2x2) — One-tap voice input
- Next Up (3x1) — Upcoming reminder display
- Chat Widget (4x3) — Full chat interface
Persistent overlay for quick access from any app.
| Launch Screen | AI Assistant | Calendar |
|---|---|---|
![]() |
![]() |
![]() |
| Finance | Planner | Location Reminder |
|---|---|---|
![]() |
![]() |
![]() |
| Tool | Version | Download |
|---|---|---|
| Android Studio | Hedgehog (2023.1.1) or later | Download |
| JDK | 17 or later | Download |
| Git | Latest | Download |
| Requirement | Version |
|---|---|
| Minimum SDK | 26 (Android 8.0 Oreo) |
| Target SDK | 34 (Android 14) |
| Compile SDK | 34 |
| Kotlin | 1.9.20 |
| Gradle | 8.2 |
- Install Ollama
- Pull a model:
ollama pull llama3.2orollama pull mistral - Run:
ollama serve - Default endpoint:
http://localhost:11434
- Get API key from OpenAI Platform
- Configure in app settings
git clone https://github.com/GPT-Calendar/smart-calendar.git
cd smart-calendar- Launch Android Studio
- Select File → Open
- Navigate to the cloned
smart-calendarfolder - Click OK and wait for Gradle sync to complete
If you see SDK errors:
- Go to File → Project Structure → SDK Location
- Set Android SDK path (usually
~/Android/Sdkon Linux/Mac orC:\Users\<user>\AppData\Local\Android\Sdkon Windows)
Via Android Studio:
- Click Build → Make Project or press
Ctrl+F9/Cmd+F9
Via Command Line:
# Windows
gradlew.bat build
# macOS/Linux
./gradlew buildPhysical Device:
- Enable Developer Options on your Android device
- Enable USB Debugging
- Connect via USB
- Select your device in Android Studio
- Click Run (green play button) or press
Shift+F10
Emulator:
- Open Device Manager in Android Studio
- Create a new virtual device (API 26+)
- Select the emulator and click Run
Via Command Line:
# Install debug APK
gradlew.bat installDebug # Windows
./gradlew installDebug # macOS/LinuxAfter installing the app, configure your AI provider:
- Open the app
- Go to Settings (gear icon)
- Select AI Provider
- Choose Ollama or OpenAI
Endpoint: http://10.0.2.2:11434 (for emulator)
http://<your-ip>:11434 (for physical device)
Model: llama3.2, mistral, or any installed model
API Key: sk-your-api-key-here
Model: gpt-4o-mini (recommended) or gpt-4o
Grant these permissions when prompted:
| Permission | Purpose | Required |
|---|---|---|
| Microphone | Voice input & wake word detection | Yes |
| Notifications | Reminder alerts | Yes |
| Location | Geofencing reminders | For location features |
| Background Location | Geofencing when app closed | For location features |
| SMS | Auto-detect bank transactions | For finance features |
| Display Over Apps | Floating chat bubble | For bubble feature |
| Exact Alarms | Precise reminder timing | Yes |
- Grant Permissions — Accept required permissions for full functionality
- Configure AI — Set up Ollama or OpenAI in Settings
- Test Voice — Tap the microphone and say "Remind me to test in 1 minute"
Voice:
- Tap microphone → "Remind me to [task] at [time]"
Text:
- Type in chat → "Remind me to call mom tomorrow at 3 PM"
Calendar:
- Navigate to Calendar tab → Tap date → Add reminder
- Enable wake word in Settings
- Say "Kiro" followed by your command
- Example: "Kiro, remind me to take medicine at 8 PM"
- Long-press home screen
- Select Widgets
- Find Smart Calendar widgets
- Drag to home screen
Automatic (SMS):
- Grant SMS permission
- Bank transactions are auto-detected
Manual:
- Say "I spent 50 dollars on lunch"
- Or use Finance tab → Add Transaction
- Grant location permissions
- Say "Remind me to buy milk when I reach the store"
- Or specify: "Remind me to check email when I get home"
| Command | Example |
|---|---|
| At specific time | "Remind me to call mom at 3 PM" |
| In duration | "Remind me to check oven in 30 minutes" |
| On specific day | "Remind me to submit report on Friday at 10 AM" |
| Recurring | "Remind me to take medicine every day at 8 AM" |
| Command | Example |
|---|---|
| When arriving | "Remind me to buy milk when I reach the store" |
| When leaving | "Remind me to text mom when I leave work" |
| At named place | "Remind me to workout when I get to the gym" |
| Command | Example |
|---|---|
| Add task | "Add task finish the report" |
| With priority | "Create task call client with high priority" |
| Complete task | "Mark buy groceries as done" |
| Command | Example |
|---|---|
| Simple alarm | "Set alarm for 7 AM" |
| Recurring | "Set alarm for 6:30 AM every weekday" |
| Named alarm | "Set alarm called morning workout for 5:30 AM" |
| Command | Example |
|---|---|
| Expense | "I spent 500 birr on groceries" |
| Income | "I received 5000 birr salary" |
| Category | "I spent 200 on transportation today" |
smart-calendar/
├── app/
│ ├── src/main/
│ │ ├── java/com/example/voicereminder/
│ │ │ ├── data/ # Data layer
│ │ │ │ ├── ai/ # AI service abstractions
│ │ │ │ ├── dao/ # Room DAOs (8 tables)
│ │ │ │ ├── entity/ # Database entities
│ │ │ │ ├── repository/ # Repository implementations
│ │ │ │ └── settings/ # App preferences
│ │ │ ├── domain/ # Business logic
│ │ │ │ ├── models/ # Domain models
│ │ │ │ └── *.kt # Managers & services
│ │ │ ├── presentation/ # UI layer (Jetpack Compose)
│ │ │ │ ├── alarms/ # Alarm screens
│ │ │ │ ├── calendar/ # Calendar screens
│ │ │ │ ├── chat/ # Chat interface
│ │ │ │ ├── components/ # Shared UI components
│ │ │ │ ├── finance/ # Finance screens
│ │ │ │ ├── map/ # Map screen
│ │ │ │ ├── planner/ # Unified planner
│ │ │ │ ├── settings/ # Settings screens
│ │ │ │ ├── splash/ # Splash screen
│ │ │ │ ├── tasks/ # Task screens
│ │ │ │ └── ui/theme/ # Theme & colors
│ │ │ ├── receivers/ # Broadcast receivers
│ │ │ ├── sms/ # SMS parsing
│ │ │ ├── widget/ # Home screen widgets
│ │ │ └── VoiceReminderApplication.kt
│ │ ├── res/ # Resources
│ │ └── AndroidManifest.xml
│ └── build.gradle.kts
├── gradle/
├── build.gradle.kts # Root build config
├── settings.gradle.kts
└── README.md
| Category | Technology |
|---|---|
| Language | Kotlin 1.9.20 |
| UI Framework | Jetpack Compose |
| Design System | Material 3 |
| Database | Room (SQLite) |
| AI Integration | Ollama API, OpenAI API |
| Maps | OSMDroid (OpenStreetMap) |
| Location | Android Geofencing API |
| Voice Input | SpeechRecognizer |
| Voice Output | TextToSpeech |
| Wake Word | AudioRecord (custom) |
| Async | Kotlin Coroutines, Flow |
| Background | WorkManager, Foreground Services |
| Widgets | AppWidgetProvider |
| Build | Gradle (Kotlin DSL) |
Color Strategy (60-30-10):
- 60% White (#FFFFFF) — Backgrounds
- 30% Deep Blue (#305CDE) — Branding, headers
- 10% Light Blue (#5D83FF) — Accents, CTAs
Typography: Roboto font family
Accessibility:
- 48dp minimum touch targets
- 4.5:1 contrast ratio
- Screen reader support
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
Gradle sync failed:
# Clean and rebuild
gradlew.bat clean build # Windows
./gradlew clean build # macOS/LinuxSDK not found:
- Check
local.propertieshas correctsdk.dirpath - Or set
ANDROID_HOMEenvironment variable
Voice not working:
- Check microphone permission is granted
- Ensure device has Google Speech Services
AI not responding:
- Verify Ollama is running:
curl http://localhost:11434/api/tags - Check API key for OpenAI
- Verify network connectivity
Location reminders not triggering:
- Grant background location permission
- Disable battery optimization for the app
Technologies Combined:
- Voice AI (natural language understanding)
- Finance Tracking (SMS parsing, budgeting)
- Location Services (geofencing, maps)
- Task Management (reminders, tasks, alarms)
- Widget System (home screen integration)
Development: 90% vibe coding, 10% spec-driven development with Ai IDE
Personal Use License — See LICENSE file
This software is for personal use only. Commercial use, distribution, and derivative works are prohibited.
"Speak it. Track it. Never forget it."
Built with ❤️





