ראינו את זה קורה: משתמש עם חמישה כרטיסי בנק, שתי הלוואות, וללא כלי לניתוח מאוחד. נתונים מפוזרים מסתירים את התמונה האמיתית—הוצאות בכרטיס אחד חופפות למסגרות אשראי, בעוד חסכונות יושבים בפיקדון בריבית נמוכה. העוזר החכם שלנו (AI) מכנס הכל לאפליקציית ניתוח תקציב אחת, בונה תקציב שקוף, ונותן עצות מעשיות, לא קלישאות גנריות כמו "צמצמו הוצאות". אנחנו מספקים פתרון מפתח-ביד, משתלבים עם כל API בנקאי ומבטיחים טיפול מאובטח בנתונים. מעל 50 פרויקטים פינטק שהושקו, כל אחד עוזר למשתמשים לחסוך בממוצע 110–160 דולר בחודש בהוצאות לא חיוניות. הניסיון המוסמך שלנו מבטיח תוצאה שאפשר לסמוך עליה.
כיצד העוזר החכם (AI) אוסף נתונים? (איגום נתונים פיננסיים)
איגום נתונים הוא השכבה הראשונה והקריטית ביותר. אנו משתמשים בשלושה מקורות:
- Open Banking / PFM API: Plaid (ארה"ב/אירופה), Salt Edge (חבר העמים ואירופה), Tinkoff API (רוסיה). מחזיר עסקאות מסווגות, יתרות, היסטוריה של 12+ חודשים. דורש הרשאת OAuth.
- עסקאות Apple Pay / Google Pay דרך PassKit / Google Wallet API. גישה מוגבלת, אך בעלת ערך לאפליקציות מורשות.
- קלט ידני כגיבוי, עם מילוי אוטומטי של קטגוריה וסכום על ידי AI באמצעות זיהוי קבלות ממצלמה.
// iOS - инициация 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
}
} אילו שיטות סיווג עסקאות משמשות? (סיווג עסקאות: חוקים מול AI)
בנקים מספקים קטגוריות לא עקביות—התפקיד שלנו הוא לאחד אותן. אנו משתמשים בגישה דו-שלבית המיישמת סיווג הוצאות אוטומטי:
| שיטה | כיסוי | מהירות | עלות | דיוק |
|---|---|---|---|---|
| חוקים (קודי MCC, סוחרים ידועים) | 70–80% מהעסקאות | ~1 אלפית השנייה | כמעט אפס | 95%+ עבור עסקאות טיפוסיות |
| AI (LLM) | ה-10–15% הנותרים | ~500 אלפיות השנייה | עלות אסימונים | 85–90% עבור עסקאות לא סטנדרטיות |
חוקים מהירים פי 10 וזולים פי 1000 מ-AI, אך AI חיוני עבור 10-15% מהעסקאות הלא סטנדרטיות שחוקים היו מסווגים שגוי. השילוב הזה מבטיח דיוק כולל של מעל 95%.
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
ניתוח הוצאות הוא קוד דטרמיניסטי; AI נדרש לפרשנות. ראשית, אנו בונים תמונת מצב פיננסית: הכנסה, הוצאות לפי קטגוריה, שיעור חיסכון, תשלומים חוזרים וחריגות. לאחר מכן אנו יוצרים תובנה באמצעות LLM. ה-AI מייצר המלצות פיננסיות מותאמות אישית על סמך התנהגות המשתמש.
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: "USD")))" }
.joined(separator: "\n")
let prompt = """
Financial data for this month:
Income: \(snapshot.monthlyIncome.formatted(.currency(code: "USD")))
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)
}הביטוי "ללא עצות גנריות" בהנחיה הוא קריטי: בלעדיו, המודל פולט "צמצמו הוצאות מזון" במקום מספרים ספציפיים. מדריך ההנחיות של OpenAI
חיזוי ותחזית חיסכון
לחישוב זמן השגת היעד, אנו משתמשים בנוסחה פשוטה ב-Kotlin. תחזית החיסכון המופעלת על ידי AI שלנו צופה יתרות עתידיות על סמך מגמות הוצאות.
// Android - расчёт срока достижения цели
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 משמש לאופטימיזציה: הוא מוצא קטגוריות עם הפוטנציאל הגדול ביותר להפחתת הוצאות (עד 25%) ומציע להפנות אותן לחיסכון.
כיצד לחבר את הבנק שלך? שלב אחר שלב
- בחרו בנק מהבנקים הנתמכים—אנו מספקים רשימה של 50+ בנקים דרך Plaid ו-Salt Edge.
- אשרו באמצעות OAuth—האפליקציה מפנה אתכם לדף הבנק, שם תזינו שם משתמש וסיסמה (הנתונים לא מועברים אלינו).
- אשרו גישה—לאחר התחברות מוצלחת, תקבלו אסימון שנשמר מקומית.
- הגדירו קטגוריות—AI מחלק אוטומטית עסקאות, אך ניתן לשנות ידנית כל קטגוריה.
- ניתוח—בזמן אמת, האפליקציה בונה תקציב, תחזיות ונותנת המלצות.
אנונימיזציה של נתונים פיננסיים לעיבוד LLM
לא ניתן לשלוח נתונים פיננסיים גולמיים. צינור האנונימיזציה שלנו:
- סכומים מעוגלים לסדרי גודל (לא סכומים מדויקים, אלא הערכות גסות)
- שמות חנויות מוצפנים או מוחלפים בקטגוריה
- לעולם לא נשלחים מספרי חשבון, פרטי התחברות או שמות מלאים
ב-iOS, אנו משתמשים ב-// iOS - инициация 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 } } לאחסון עסקאות מקומי—הקובץ מוצפן עם מפתח שאינו נגיש בזמן שהמכשיר נעול. באנדרואיד, אנו משתמשים ב-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 } + 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: "USD")))" } .joined(separator: "\n") let prompt = """ Financial data for this month: Income: \(snapshot.monthlyIncome.formatted(.currency(code: "USD"))) 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) } מ-// Android - расчёт срока достижения цели 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) } . בנוסף, אנו מצפינים נתונים בתעבורה עם TLS 1.3. אבטחה מובטחת עם תקני הצפנה מוסמכים.
רשימת בנקים נתמכים דרך Open Banking
Plaid: 12,000+ מוסדות פיננסיים בארה"ב, קנדה, אירופה. Salt Edge: 6,000+ בנקים בחבר העמים, אירופה, אסיה. Tinkoff API: כל כרטיסי וחשבונות Tinkoff. עבור בנקים אחרים, קלט ידני עם זיהוי קבלות AI.מה כלול בעבודה
אנו מספקים:
- תיעוד ארכיטקטורה ואינטגרציה
- גישה ל-SDK (iOS/Android) עם דוגמאות
- הגדרת צד שרת להעשרת נתונים
- תמיכה טכנית במהלך היישום
- הכשרת צוות על מודלי AI
לצוות יש ניסיון של 5+ שנים בפינטק והשיק מעל 50 פרויקטים עם AI ו-Open Banking. צרו קשר—ונכין ארכיטקטורה לפרויקט שלכם.
הערכות לוחות זמנים
| שלב | משך |
|---|---|
| ניתוח בסיסי עם קלט ידני + תובנות AI | החל משבוע אחד (החל מ-$1,500) |
| יישום מלא עם Open Banking, סיווג אוטומטי, יעדים | 6–10 שבועות |
העלות מחושבת באופן אישי. נעריך את הפרויקט שלכם.







