ðĪ 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
MemeTemplateconfigurations, 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
LLMProviderdecoupling 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.