Odel
prismSplit

prismSplit

@architagrawalCommunication1TypeScriptUpdated 1w ago

Split bills from your AI: read bills & balances, create equal splits, request settlements.

Server endpointStreamable HTTP

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

PrismSplit

The Standard for Shared Finance

Refracting the chaos of group expenses into clarity.


Status Framework React Native TypeScript


The Problem

Most expenses aren't split 50/50.

You order a steak, they order a salad. You share an appetizer, but someone else had three drinks.

  • "Why am I paying for your cocktail?" — traditional "even split" apps are unfair.
  • "I'll figure out the math later." — manual itemization on napkins is error-prone.
  • "Who had the extra side?" — confusion leads to social friction.

The result? You pay more than your fair share just to avoid the hassle.


The Solution

PrismSplit: Item-Level Bill Splitting with AI Receipt Scanning.

We built the system designed for true fairness. PrismSplit replaces "even splits" with granular precision, allowing everyone to pay exactly what they owe.

  • Scan It. Point your camera at a receipt — AI extracts every item in seconds.
  • Itemize It. Break down bills item-by-item with inline editing.
  • Split It. Equal, percentage, shares, or exact amounts — per item or per bill.
  • Settle It. Real-time balances, one-tap settlement.

Key Features

AI Receipt Scanning

Capture a receipt photo → AI extracts merchant, items, tax, tip → review and edit inline → create bill. Handles multi-image receipts with parallel upload and discount normalization.

Smart Bill Creation

  • Dual-mode entry: Simple amount or itemized breakdown
  • Ledger-style item editor: Focus-driven expandable rows, auto-advance keyboard flow, swipe-to-delete
  • Auto-category detection: Type "uber" → auto-selects Transport
  • 4 split methods: Equal (toggle participants), Unequal (exact amounts), Percentage, Shares — with live redistribution

Groups & Social

  • Invite links & QR codes for instant group joining
  • Guest members — add friends who don't have the app yet; they claim their history on signup
  • Multi-currency support per group
  • Group quota system with tier-based limits

Financial

  • Real-time balances with animated number transitions
  • Settlement tracking with one-tap settle-up
  • Bill-level and item-level discounts — correctly calculated through the entire stack
  • Tax & tip intelligence — proportional or equal distribution with inline mode selector

Tech Stack

LayerTechnologyPurpose
FrameworkExpo SDK 54 + React Native 0.81Cross-platform mobile
LanguageTypeScriptType safety
BackendSupabasePostgreSQL, Auth, Realtime, Edge Functions, Storage
StateZustand + TanStack QueryClient state + server cache with optimistic updates
UITamaguiCompiled styles, theming, 60fps animations
AnimationsReact Native ReanimatedLayout transitions, gesture-driven interactions
StorageMMKV + EncryptedStorageOffline cache + secure keychain
AIGemini (via Edge Functions)Receipt OCR and item extraction
AnalyticsPostHog + Firebase + SentryUsage tracking, crash reporting, error monitoring
ValidationZod + React Hook FormRuntime schema validation

Design System

4-font typography system with strict role separation:

  • Sora — Body text, inputs, descriptions
  • Space Grotesk — Page titles, hero text
  • Outfit — UI chrome: badges, labels, section headers
  • SpaceMono — Currency amounts, tabular numbers

Theme-aware components with light/dark mode, brand color overrides, and 12-color avatar palette.


Architecture

src/
├── app/                    # Expo Router (file-based routing)
│   ├── (auth)/             # Auth screens (login, signup)
│   ├── (tabs)/             # Main tabs (Home, Groups, Activity, Friends)
│   ├── bill/               # Bill flows (create, edit, scan, review, processing)
│   └── group/              # Group screens (details, settings, edit)
├── components/
│   ├── ui/                 # Design system (Avatar, SwipeableRow, Button, etc.)
│   ├── bill/               # Bill components (LedgerItemRow, SplitModal, etc.)
│   ├── home/               # Dashboard (BalanceCard, SmartFeed, TopCircle)
│   └── group/              # Group components
├── hooks/                  # Custom hooks (useThemeColors, useAnalytics, etc.)
├── lib/
│   ├── store/              # Zustand stores (auth, bills, groups, UI, quota)
│   ├── services/           # Service layer (billService, notifications)
│   ├── utils/              # Utilities (billCalculations, formatting)
│   └── supabase.ts         # Supabase client singleton
├── theme/                  # Design tokens, typography, themes
└── types/                  # Shared TypeScript interfaces

Data Flow

graph LR
    User -->|Interacts| UI[Tamagui UI]
    UI -->|Updates| Store[Zustand Store]
    Store -->|Syncs| Query[TanStack Query]
    Query -->|Persists| DB[(Supabase Postgres)]
    DB -->|Pushes| Realtime[Realtime Events]
    Realtime -->|Refreshes| UI
    Camera -->|Captures| Upload[Supabase Storage]
    Upload -->|Processes| Edge[Edge Function + Gemini]
    Edge -->|Returns| Review[Structured Items]
    Review -->|Creates| Store

Getting Started

Prerequisites

  • Node.js 18+
  • Expo CLI (npm install -g expo-cli)
  • iOS Simulator / Android Emulator / Physical device with Expo Go

Installation

git clone https://github.com/architagrawal/prismsplit.git
cd prismsplit/src
npm install

Configuration

Create a .env file in src/ with your Supabase credentials:

EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_KEY=your-anon-key-here

Run

npx expo start

Project Status

Active Development — V1.1 shipped with AI receipt scanning, ledger-style item editor, and redesigned split flow.

Recent (April 2026)

  • Redesigned itemize modal with ledger-style inline editing
  • Redesigned receipt review screen with inline item editing
  • Redesigned split customization modal
  • Redesigned alert dialog system
  • Auto-advance keyboard flow across item fields
  • Scroll-synced keyboard management
  • Item validation with auto-focus on incomplete fields

Planned

  • Smart Feed with pending approvals and settle requests
  • Offline write queue with conflict resolution
  • Self-select flow (each participant claims their own items)

ArchitectureFeaturesContributing


Copyright (c) 2025-2026 Archit Agrawal. All rights reserved.