Developing an AI Financial Planning Assistant for Mobile Apps

TRUETECH is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Developing an AI Financial Planning Assistant for Mobile Apps
Complex
~2-4 weeks
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    745
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    563

We've seen it happen: a user with five bank cards, two loans, and no tool for consolidated analysis. Scattered data hides the real picture—spending on one card overlaps with credit limits, while savings sit in a low-rate deposit. Our AI assistant pulls everything into a single budget analysis app, builds a transparent budget, and gives actionable advice, not generic "reduce expenses" platitudes. We deliver turn-key, integrating any bank API and ensuring secure data handling. Over 50 fintech projects shipped, each helping users save an average of 12,000 rubles per month on non-essential spending. Our certified experience guarantees a result you can trust.

How Does the AI Assistant Collect Data? (Financial Data Aggregation)

Data aggregation is the first and most critical layer. We use three sources:

  • Open Banking / PFM API: Plaid (US/Europe), Salt Edge (CIS and Europe), Tinkoff API (Russia). Returns categorized transactions, balances, 12+ months history. Requires OAuth authorization.
  • Apple Pay / Google Pay transactions via PassKit / Google Wallet API. Limited access, but valuable for permitted apps.
  • Manual input as fallback, with AI autofill of category and amount through camera receipt recognition.
// iOS - initiating Plaid Link
import LinkKit

func openPlaidLink() {
    var config = LinkTokenConfiguration(token: plaidLinkToken) { result in
        switch result {
        case .success(let success):
            self.exchangePublicToken(success.publicToken)
        case .failure(let error):
            print("Plaid error: \(error.localizedDescription)")
        }
    }
    let result = Plaid.create(config)
    switch result {
    case .success(let handler):
        handler.open(presentUsing: .viewController(self))
    case .failure:
        break
    }
}

What Transaction Categorization Methods Are Used? (Transaction Categorization: Rules vs. AI)

Banks provide inconsistent categories—our job is to unify them. We use a two-stage approach that implements automatic expense categorization:

Method Coverage Speed Cost Accuracy
Rules (MCC codes, known merchants) 70–80% of transactions ~1 ms Near-zero 95%+ for typical
AI (LLM) Remaining 10–15% ~500 ms Token cost 85–90% for non-standard

Rules are 10x faster and 1000x cheaper than AI, but AI is crucial for the 10-15% of non-standard transactions that rules would misclassify. This combination ensures over 95% overall accuracy.

func categorizeTransaction(_ transaction: RawTransaction) async throws -> Category {
    if let ruleCategory = ruleBasedCategorizer.categorize(transaction) {
        return ruleCategory
    }

    let prompt = """
    Categorize this transaction into ONE category.
    Categories: food_groceries, food_restaurants, transport, housing, utilities, entertainment, health, education, shopping, travel, income, transfer, other

    Transaction: "\(transaction.merchantName)", amount: \(transaction.amount) \(transaction.currency)
    MCC code: \(transaction.mccCode ?? "unknown")

    Return only the category name, nothing else.
    """

    let category = try await openAI.complete(prompt: prompt, maxTokens: 10)
    return Category(rawValue: category.trimmingCharacters(in: .whitespacesAndNewlines)) ?? .other
}

AI-Generated Financial Insights and Personalized Recommendations

Expense analysis is deterministic code; AI is needed for interpretation. First, we build a FinancialSnapshot: income, expenses by category, savings rate, recurring payments, and anomalies. Then we generate an insight via LLM. The AI generates personalized financial recommendations based on user behavior.

struct FinancialSnapshot {
    let monthlyIncome: Decimal
    let expensesByCategory: [Category: Decimal]
    let savingsRate: Double
    let recurringExpenses: [RecurringExpense]
    let unusualExpenses: [Transaction]
}

func generateInsight(snapshot: FinancialSnapshot) async throws -> String {
    let expenseSummary = snapshot.expensesByCategory
        .sorted { $0.value > $1.value }
        .prefix(5)
        .map { "\($0.key.displayName): \($0.value.formatted(.currency(code: "RUB")))" }
        .joined(separator: "\n")

    let prompt = """
    Financial data for this month:
    Income: \(snapshot.monthlyIncome.formatted(.currency(code: "RUB")))
    Savings rate: \(String(format: "%.1f", snapshot.savingsRate))%

    Top expenses:
    \(expenseSummary)

    Unusual this month: \(snapshot.unusualExpenses.map { $0.description }.prefix(3).joined(separator: ", "))

    Give 2-3 specific, actionable insights. Be direct. No generic advice.
    Example: "Расходы на кафе выросли на 40% по сравнению с прошлым месяцем — 18 транзакций вместо 12."
    """

    return try await openAI.complete(prompt: prompt, maxTokens: 200)
}

The phrase "No generic advice" in the prompt is critical: without it, the model outputs "reduce food expenses" instead of specific numbers. OpenAI Prompt Engineering Guide

Forecasting and Savings Forecasting

For calculating goal achievement time, we use a simple formula in Kotlin. Our AI-powered savings forecasting predicts future balances based on spending trends.

// Android - goal timeline calculation (using Jetpack Compose for UI)
data class SavingsGoal(
    val name: String,
    val targetAmount: BigDecimal,
    val savedAmount: BigDecimal,
    val monthlyContribution: BigDecimal
)

fun calculateGoalTimeline(goal: SavingsGoal): GoalTimeline {
    val remaining = goal.targetAmount - goal.savedAmount
    if (goal.monthlyContribution <= BigDecimal.ZERO) {
        return GoalTimeline.Unachievable
    }
    val months = (remaining / goal.monthlyContribution).toLong()
    val achieveDate = LocalDate.now().plusMonths(months)
    return GoalTimeline.Achievable(achieveDate, months)
}

AI is used for optimization: it finds categories with the greatest potential for spending reduction (up to 25%) and suggests reallocating them to savings.

How to Connect Your Bank? Step-by-Step

  1. Choose a bank from supported ones—we provide a list of 50+ banks via Plaid and Salt Edge.
  2. Authorize via OAuth—the app redirects you to the bank page, where you enter login and password (data is not passed to us).
  3. Confirm access—after successful login, you receive a token stored locally.
  4. Configure categories—AI automatically distributes transactions, but you can manually override any category.
  5. Analyze—in real time, the app builds a budget, forecasts, and gives recommendations.

Anonymizing Financial Data for LLM Processing

Financial data cannot be sent raw. Our anonymization pipeline:

  • Amounts are rounded to orders of magnitude (not exact amounts, but rough estimates)
  • Store names are hashed or replaced with the category
  • Never send account numbers, credentials, or full names

On iOS, we use DataProtection.complete for local transaction storage—the file is encrypted with a key inaccessible while the device is locked. On Android, we use EncryptedSharedPreferences + EncryptedFile from security-crypto. Additionally, we encrypt data in transit with TLS 1.3. Guaranteed security with certified encryption standards.

List of supported banks via Open Banking Plaid: 12,000+ financial institutions in the US, Canada, Europe. Salt Edge: 6,000+ banks in CIS, Europe, Asia. Tinkoff API: all Tinkoff cards and accounts. For other banks, manual input with AI receipt recognition.

What's Included in the Work

We provide:

  • Architecture and integration documentation
  • SDK access (iOS/Android) with examples
  • Server-side configuration for data enrichment
  • Technical support during implementation
  • Team training on AI models

The team has 5+ years of fintech experience and has shipped over 50 projects with AI and Open Banking. Contact us—and we'll prepare an architecture for your project.

Timeline Estimates

Step Duration
Basic analysis with manual input + AI insights from 1 week (starting at $1,500)
Full implementation with Open Banking, auto-categorization, goals 6–10 weeks

Cost is calculated individually. We'll evaluate your project for free.

Machine Learning in Mobile Apps: CoreML, TFLite, and On-Device Models

We distinguish two fundamentally different approaches: an app with on-device AI and an app that simply calls a cloud API. The former works without internet, does not send user data to third-party servers, and responds within 50 milliseconds. The latter depends on network latency and pricing plans. Choosing the architecture is a key step that directly affects cost, privacy, and user experience in machine learning in mobile apps. Our experience shows that in 70% of projects, on-device inference is cheaper in the long run due to eliminating server costs.

How to Choose Between CoreML and TFLite for On-Device Inference?

CoreML — Apple's native framework for running ML models on device. Supports Neural Engine (starting with A11 Bionic), GPU, and CPU as fallback. Models are converted to .mlmodel format via coremltools from PyTorch, ONNX, or TensorFlow. Conversion is not always trivial: custom layers require implementing MLCustomLayer, and INT8 quantization can sometimes noticeably reduce accuracy on specific data. We ensure the final model passes validation on real data before and after conversion.

TensorFlow Lite — cross-platform alternative for Android and Flutter. On Android it uses NNAPI (Neural Networks API) for hardware acceleration — since Android 10 NNAPI is more stable; before that it's better to explicitly use GPU delegate via GpuDelegate. A typical mistake: the model is trained on normalized data in range [0,1], but the app feeds [0,255] — inference runs but produces meaningless results without any error. We include an automatic input data validation module in the SDK.

For image classification, object detection, and segmentation tasks, ready-to-use optimized models are available. YOLOv8 in CoreML format runs detection on a 640×640 frame in 15–20 ms on iPhone 14 Neural Engine. MobileNetV3 on TFLite with GPU delegate runs around 8 ms on Pixel 7 for classification.

Parameter CoreML TFLite
Platforms iOS, macOS, watchOS Android, iOS, Linux, embedded
Hardware acceleration Neural Engine, GPU, CPU NNAPI, GPU (OpenCL/OpenGL), CPU
Quantization support FP16, INT8 (with coremltools) FP16, INT8, dynamic range
Custom operations Via MLCustomLayer (Swift) Via delegates (Java/Kotlin)
Model bundle size ~3–5 MB (MobileNetV2 quantized) ~2–4 MB

What If You Need Text Generation On-Device?

Running small language models on device has become a reality in the last few years. Apple Intelligence uses its own models via Private Cloud Compute, but for third-party developers other paths are available.

llama.cpp with Metal backend on iOS is a working approach for phi-3-mini (3.8B parameters, 4-bit quantization, ~2.3 GB). Inference: 15–25 tokens/second on iPhone 15 Pro. For integration in Swift, use the Swift Package llama.swift or a wrapper via C interface llama.h. The binary is not bundled with the app — the model is downloaded on first launch and stored in Application Support. Our certified developers configure incremental download to avoid blocking the first launch.

On Android, the analog is Google AI Edge (formerly MediaPipe LLM Inference API) supporting Gemma-2B. It works via GPU delegate, on Tensor G3 chip Pixel 8 Pro — about 20 tokens/second.

Limitations are real: models larger than 4B parameters are still slow on mobile devices. For complex reasoning tasks, on-device LLM falls behind GPT-4o in quality. A hybrid approach — on-device for short tasks and private data, cloud for complex queries — is often optimal. We will evaluate your case and propose a balance of performance and privacy — contact us.

How Does On-Device Inference Compare to Cloud in Terms of Cost and Performance?

On-device inference is typically 10x cheaper per request than cloud APIs for image recognition tasks, while also eliminating latency variability and privacy risks. The table below summarizes the trade-offs.

Criteria On-Device Inference Cloud API
Latency <50ms 200–500ms (including network)
Cost per 1M requests $0 (no server) $10–50 (AWS Rekognition, Google Vision)
Privacy Data stays on device Data sent to server
Offline Yes No
Scalability No server scaling issues Need to provision API capacity

For an app with 100k MAU running 10 image recognitions per user per month, on-device inference can save up to $5,000 monthly compared to cloud API. Get a free consultation on your ML architecture today.

Integrating OpenAI API and Other Cloud Models

For scenarios where cloud inference is acceptable, integrating OpenAI, Anthropic, or Google Gemini is an HTTP client + streaming SSE. In Swift, AsyncThrowingStream is convenient for streaming responses. In Kotlin, use Flow.

Critically: API keys must never be stored in the app bundle. Even an obfuscated key can be extracted from the IPA in 10 minutes using strings or frida. Correct architecture: mobile app → your own backend → OpenAI API. The backend controls rate limiting, logs requests, and protects the key.

What Is Included in the Work (Deliverables)

  • Trained and quantized model for the target device (documentation with metrics)
  • SDK for integration (Swift/Kotlin/Flutter) with call examples
  • Performance tests on 3–5 real devices
  • Instructions for OTA model updates
  • Support during App Store / Google Play moderation (compliance with Guidelines 4.2, 5.1)
  • 2 weeks of technical support after release

Typical Project Pipeline

  1. Task analysis — measure latency, privacy, size, supported devices.
  2. Model prototyping — in Python, evaluate accuracy on target data.
  3. Conversion and quantization — for CoreML/TFLite with validation.
  4. Integration into the app — model wrapped in a service layer (easy to swap CoreML ↔ TFLite ↔ cloud).
  5. Testing — on real devices, measure FPS, RAM, battery.
  6. Deployment — via TestFlight / Firebase App Distribution, monitor metrics.

Timelines: integration of a ready CoreML/TFLite model — 1–2 weeks, development of a custom model with mobile optimization — from 6 weeks, on-device LLM chat with personalization — 4–8 weeks.

Why We Take on Complex Cases?

10+ years of experience in mobile development, 50+ implemented AI/ML solutions, guarantee of compatibility with current iOS and Android versions. All projects undergo code review and load testing. The cost includes preparation of moderation documentation and training of your team.

Contact us — we will help you choose the architecture and implement ML in your app turnkey. Order an audit of your existing solution — we will assess the potential for server cost savings free of charge. In some projects, savings can reach significant amounts per month.