ðŸĪ– AI_ARCHITECTURE.md - AI System Architecture & Models (āļĢāļ°āļšāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ›āļąāļāļāļēāļ›āļĢāļ°āļ”āļīāļĐāļāđŒāđāļĨāļ° AI āđ‚āļĄāđ€āļ”āļĨ)

This document defines the AI pipelines, prompt strategies, OCR engines, safety rules, and model abstractions used in SplitDee.
āđ€āļ­āļāļŠāļēāļĢāļ‰āļšāļąāļšāļ™āļĩāđ‰āļāļģāļŦāļ™āļ”āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĢāļ°āļšāļšāļ—āđˆāļ­āļĨāļģāđ€āļĨāļĩāļĒāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ AI, āđāļœāļ™āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ„āļģāļŠāļąāđˆāļ‡ Prompt, āļāļĨāđ„āļāļ•āļąāļ§āļŠāđāļāļ™ OCR, āļāļŽāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ—āļēāļ‡āđ€āļ™āļ·āđ‰āļ­āļŦāļē āđāļĨāļ°āđ€āļāļ“āļ‘āđŒāļĄāļēāļ•āļĢāļāļēāļ™āđ‚āļĄāđ€āļ”āļĨāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļŠāļģāļŦāļĢāļąāļšāđ‚āļ„āļĢāļ‡āļāļēāļĢ SplitDee


ðŸ‡đ🇭 āļ āļēāļĐāļēāđ„āļ—āļĒ (āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™)

1. āļ āļēāļžāļĢāļ§āļĄāļĢāļ°āļšāļšāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒ AI (AI System Overview)

SplitDee āļ™āļģāđ‚āļĄāđ€āļ”āļĨāļ›āļąāļāļāļēāļ›āļĢāļ°āļ”āļīāļĐāļāđŒāļĄāļēāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™āļŠāļ­āļ‡āļ—āđˆāļ­āļŦāļĨāļąāļ:

  • āļĢāļ°āļšāļšāļ•āļĢāļ§āļˆāļĢāļđāļ›āļ āļēāļžāđ€āļ­āļāļŠāļēāļĢ (OCR Pipeline): āđƒāļŠāđ‰āđāļāļ°āļĢāļŦāļąāļŠ Mini-QR āļˆāļēāļāļŠāļĨāļīāļ›āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļ˜āļ™āļēāļ„āļēāļĢ āđāļĨāļ°āļŠāđˆāļ‡āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ•āļąāļ§āļ­āļąāļāļĐāļĢāļĢāļēāļĒāļāļēāļĢāļ­āļēāļŦāļēāļĢāļˆāļēāļāļŠāļĨāļīāļ›āđƒāļšāđ€āļŠāļĢāđ‡āļˆāļĢāđ‰āļēāļ™āļ„āđ‰āļē
  • āļĢāļ°āļšāļšāļŠāļĢāđ‰āļēāļ‡āļĄāļĩāļĄāļ—āļ§āļ‡āđ€āļ‡āļīāļ™ (Reminder & Meme Engine): āļ™āļģāļ‚āđ‰āļ­āļĄāļđāļĨāļ„āđ‰āļēāļ‡āļˆāđˆāļēāļĒāļĄāļēāļ›āļĢāļ°āļāļ­āļšāļžāļĢāđ‰āļ­āļĄāļ—āđŒ āļŠāđˆāļ‡āđƒāļŦāđ‰ LLM āđāļ•āđˆāļ‡āļ›āļĢāļ°āđ‚āļĒāļ„āđāļĨāļ°āļŠāļļāđˆāļĄāļ›āļĢāļ°āļ—āļąāļšāļ„āļĢāļ­āļšāļĨāļ‡āļšāļ™āļ āļēāļžāļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡āļĄāļĩāļĄ

2. āļ—āđˆāļ­āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ OCR āđāļĨāļ°āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļĨāļīāļ›āđāļšāļšāļ­āļ°āļ‹āļīāļ‡āđ‚āļ„āļĢāļ™āļąāļŠ

  • Mini-QR Reader (āđāļŠāļāļ™āļĢāļŦāļąāļŠāļŠāļĨāļīāļ›): āļĢāļđāļ›āļ āļēāļžāļŠāļĨāļīāļ›āļˆāļ°āļ–āļđāļāļ­āđˆāļēāļ™āļŦāļē Mini-QR āļ„āļĩāļĒāđŒāļ”āđ‰āļ§āļĒ Python OpenCV/ZBar āđ€āļžāļ·āđˆāļ­āļ”āļķāļ‡āđ€āļĨāļ‚āļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļ—āļģāļĢāļēāļĒāļāļēāļĢāļ™āļģāđ„āļ›āđ€āļŠāđ‡āļ Statement āļ˜āļ™āļēāļ„āļēāļĢāđ‚āļ”āļĒāļ•āļĢāļ‡ āļŦāļēāļāļŠāđāļāļ™āđ„āļĄāđˆāđ„āļ”āđ‰āļˆāļ°āļ›āļĨāļ­āļšāļœāđˆāļ­āļ™āļ„āļĨāļēāļĒāđ„āļ›āļ•āļĢāļ§āļˆāļ•āļąāļ§āđ€āļĨāļ‚āļ˜āļ™āļēāļ„āļēāļĢāļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŠāđāļāļ™āļ•āļąāļ§āļ­āļąāļāļĐāļĢāđāļ—āļ™
  • LLM Receipt Parser (āđāļŠāļāļ™āđ€āļĄāļ™āļđāđƒāļšāđ€āļŠāļĢāđ‡āļˆ): āđ‚āļĄāđ€āļ”āļĨ AI āļˆāļ°āļ­āđˆāļēāļ™āļĢāļđāļ›āđƒāļšāđ€āļŠāļĢāđ‡āļˆāļĢāđ‰āļēāļ™āļ„āđ‰āļēāđāļĨāļ°āļŠāļāļąāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™āļŠāđ€āļ›āļ JSON (āļŠāļ·āđˆāļ­āļĢāđ‰āļēāļ™, āļĒāļ­āļ”āđ€āļ‡āļīāļ™āļĢāļ§āļĄ, āļ•āļēāļĢāļēāļ‡āļĢāļēāļĒāļāļēāļĢāļŠāļīāļ™āļ„āđ‰āļēāđāļĨāļ°āļĢāļēāļ„āļē) āđ€āļžāļ·āđˆāļ­āļŠāđˆāļ§āļĒāļāļĢāļ­āļāļšāļīāļĨāļ•āļąāđ‰āļ‡āļŦāļēāļĢāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī

3. āļĢāļ°āļšāļšāļŠāļĢāđ‰āļēāļ‡āļĄāļĩāļĄāļ—āļ§āļ‡āđ€āļ‡āļīāļ™

  • Prompt Strategy (āļĢāļ°āļ”āļąāļšāļāļēāļĢāļžāļđāļ”āļˆāļē): āđ€āļ‚āļĩāļĒāļ™ Prompt āļ„āļļāļĄāļ­āļēāļĢāļĄāļ“āđŒāļ™āđ‰āļ­āļ‡āđ‚āļĄāļˆāļīāđƒāļ™āļĢāļ°āļ”āļąāļšāđ€āļŠāļĩāļĒāļ‡āļ—āļĩāđˆāļ•āđˆāļēāļ‡āļāļąāļ™ āđ„āļ”āđ‰āđāļāđˆ āļŠāļļāļ āļēāļž (āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ—āļēāļ‡āļāļēāļĢ), āđ€āļ›āđ‡āļ™āļāļąāļ™āđ€āļ­āļ‡ (āļ āļēāļĐāļēāļžāļđāļ”āļŠāļĨāļĩāļ›āđ€āļžāļ·āđˆāļ­āļ™āļĢāđˆāļ§āļĄāļŠāļąāđ‰āļ™), āļŦāļĢāļ·āļ­āđāļ™āļ§āļĄāļĩāļĄāļ•āļĨāļāđ† (AI āđāļ•āđˆāļ‡āļ„āļģāļžāļđāļ”āļĨāđ‰āļ­āđ€āļĨāļĩāļĒāļ™āļ„āļ§āļēāļĄāļ­āđ‰āļ§āļ™āļŦāļĢāļ·āļ­āđ€āļĄāļ™āļđāļāļīāļ™āļŠāļ§āļ™āļ‚āļģ)
  • Meme Overlay (āļāļēāļĢāļ§āļēāļ”āļ„āđāļēāļ—āļąāļšāļĄāļĩāļĄ): āļ”āļķāļ‡āļ āļēāļžāļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡āļĄāļĩāļĄ āđāļ•āđˆāļ‡āđāļ„āļ›āļŠāļąāļ™āđ‚āļ”āļĒ LLM āđāļĨāļ°āļžāļīāļĄāļžāđŒāļ„āļģāļĻāļąāļžāļ—āđŒāļ—āļąāļšāļžāļīāļāđ€āļ‹āļĨāļˆāļļāļ” X-Y āļ‚āļ­āļ‡āđāļĄāđˆāđāļšāļšāļĄāļĩāļĄāļ”āđ‰āļ§āļĒ Pillow āļšāļąāļ™āļ—āļķāļāļ āļēāļžāļĨāļ‡ S3 āđāļĨāļ°āđ‚āļžāļŠāļ•āđŒāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĨāļ‡āđāļŠāļ—āļāļĨāļļāđˆāļĄāļĢāļđāļĄāđ€āļĄāļ—

4. āļāļŽāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļ‚āđ‰āļ­āļˆāļģāļāļąāļ” AI (Safety & Constraints)

  • āļāļēāļĢāļ„āļąāļ”āļāļĢāļ­āļ‡āđ€āļ™āļ·āđ‰āļ­āļŦāļē: āļšāļąāļ‡āļ„āļąāļšāļ›āđ‰āļ­āļ™ Safe Rules āđƒāļ™āļĢāļ°āļšāļšāļ„āļ§āļšāļ„āļļāļĄāļ—āļĢāļēāļŸāļŸāļīāļāļ āļēāļĐāļē āļŦāđ‰āļēāļĄ AI āļžāļīāļĄāļžāđŒāļ„āļģāļŦāļĒāļēāļšāļ„āļēāļĒ āđ€āļŠāļĩāļĒāļ”āļŠāļĩāļĢāļšāļāļ§āļ™āļŠāļąāļāļŠāļēāļ•āļīāļāļēāļ“ āļŦāļĢāļ·āļ­āļāļĨāđˆāļēāļ§āļŦāļēāđ€āļĢāļ·āđˆāļ­āļ‡āđ€āļ‡āļīāļ™āļˆāļ™āļœāļīāļ”āđƒāļˆ
  • āļĢāļ°āļšāļšāļŠāļģāļĢāļ­āļ‡āļāļĢāļ“āļĩāļĨāđ‰āļĄāđ€āļŦāļĨāļ§: āļŦāļēāļāļ„āļĩāļĒāđŒāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ AI āļŦāļ™āđˆāļ§āļ‡āđ€āļ§āļĨāļēāļŦāļĢāļ·āļ­āđāļ„āļĢāļŠ āđƒāļŦāđ‰āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđ„āļ›āļĒāļīāļ‡āļ—āļ§āļ‡āđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ›āļāļ•āļīāļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļąāļ™āļ—āļĩ
  • āļˆāļģāļāļąāļ”āļŠāļīāļ—āļ˜āļīāđŒāđāļāđ‰āđ„āļ‚āđ€āļ‡āļīāļ™: āļŦāđ‰āļēāļĄ AI āļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāļāļ”āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāđ€āļ•āļ•āļąāļŠāļšāļīāļĨāđ€āļ›āđ‡āļ™āļˆāđˆāļēāļĒāđāļĨāđ‰āļ§ āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāđ‚āļ­āļ™āļ•āđ‰āļ­āļ‡āļ—āļģāļ˜āļļāļĢāļāļĢāļĢāļĄāļœāđˆāļēāļ™āļĢāļ°āļšāļšāđāļĨāļ° Statement āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™

5. āļāļēāļĢāļŠāļĨāļąāļšāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđ‚āļĄāđ€āļ”āļĨāđāļĨāļ°āļāļēāļĢāļ„āļļāļĄāļ‡āļš (Model Abstraction & Rate Limits)

  • āļ­āļīāļ™āđ€āļ•āļ­āļĢāđŒāđ€āļŸāļŠ LLM Provider: āļŦāļļāđ‰āļĄāļĢāļ°āļšāļš API āļŦāļĨāļąāļ‡āļ„āļĨāļēāļŠāđ‚āļĄāđ€āļ”āļĨāđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāļĒāļķāļ”āļ•āļīāļ”āļ„āđˆāļēāļĒ āļ›āļąāļˆāļˆāļļāļšāļąāļ™āđƒāļŠāđ‰ Gemini Pro/Flash āđāļĨāļ°āļĢāļ­āļ‡āļĢāļąāļš GPT-4o-mini āļŠāļģāļĢāļ­āļ‡ āđāļĨāļ°āđ€āļ›āļīāļ”āļŠāđˆāļ­āļ‡āđƒāļŦāđ‰āļĢāļąāļ™āļ„āđˆāļēāļĒ LLM āđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ•āļąāļ§āđ€āļ­āļ‡āđ„āļ”āđ‰
  • āļāļēāļĢāļ„āļļāļĄāđ‚āļ„āļ§āļ•āđ‰āļēāļ„āļĨāļēāļ§āļ”āđŒ: āļˆāļģāļāļąāļ”āđāļŠāļāļ™āļ āļēāļžāļŠāļĨāļīāļ›/āđƒāļšāđ€āļŠāļĢāđ‡āļˆāļ„āļ™āļĨāļ° 10 āļĢāļđāļ›/āļ§āļąāļ™ āđāļĨāļ°āļŠāļąāđˆāļ‡āļˆāļģāļĨāļ­āļ‡āļĄāļĩāļĄāļ—āļ§āļ‡āđ€āļ‡āļīāļ™āļāļĨāļļāđˆāļĄāļĨāļ°āđ„āļĄāđˆāđ€āļāļīāļ™ 3 āļĄāļĩāļĄ/āļ§āļąāļ™ āđ€āļžāļ·āđˆāļ­āļ„āļļāļĄāļ‡āļšāļ›āļĢāļ°āļĄāļēāļ“

🇎🇧 English (For AI Agents)

1. AI System Overview

SplitDee incorporates artificial intelligence across three distinct pipelines:

  • OCR Pipeline: Evaluates bank slips to extract Mini-QR and processes merchant receipts via LLM text extraction.
  • Reminder & Meme Engine: Aggregates group spend context, feeds prompts to the LLM, and overlays generated text captions onto visual templates.

2. Asynchronous OCR & Slip Verification Pipeline

  • Mini-QR Reader: OpenCV/ZBar script scans the bank slip for a Mini-QR code. If readable, extracts the transaction reference ID. Fallbacks to Google Cloud Vision API/Tesseract on failure.
  • LLM Receipt Parser: Automatically extracts merchant name, itemized pricing, and total bill amount using structured Gemini Flash/GPT prompting returning JSON outputs.

3. AI Reminder & Meme Generator Engine

  • Prompt Strategy: Formulates prompt contexts dynamically using parameters {debtor_name}, {amount}, and {bill_title} according to selected tone models (Polite, Casual, Humorous/Meme).
  • Meme Overlay Generator: Queries random base MemeTemplate configurations, calls the LLM to generate funny text, renders it onto the image layout using Python Pillow, and saves assets to S3.

4. AI Safety Rules & Constraints

  • Content Filtering: Enforces strict system prompt filters against profanity, offensive jokes, and direct financial accusations.
  • Deterministic Fallbacks: Fallback instantly to a static text template if LLM connection fails or times out.
  • No Direct Financial Alteration: AI models cannot mutate database state. Balance clearance must occur strictly via atomic program logic.

5. Model Abstraction & Portability

  • Gateway Interface: Abstract LLMProvider decoupling backend use cases from specific LLM models (OpenAI, Gemini).
  • Supported Providers: Gemini Pro/Flash API, OpenAI GPT-4o-mini, and future local AI integrations (Ollama / Llama-3-8B).

6. Rate Limits & Budget Safeguards

  • OCR Limit: Max 10 receipt scans and 10 slip scans per user per day.
  • Meme Generation Limit: Max 3 custom memes per group per day.