Version: 1.0 (MVP) Author: [You] Target ship date: End of weekend Platform: iOS (React Native + Expo) Status: Draft
Split is an iOS app for Filipinos that turns a restaurant or group expense receipt into exact peso amounts per person, then opens GCash or Maya pre-filled to send/request the payment in two taps.
One-liner: Splitting a bill in GCash takes 5+ taps per person. Split makes it 2 taps total.
When Filipinos split a bill with friends, the current flow is:
- Someone (the "ate" of the group) calculates shares mentally or on a calculator
- Each person opens GCash or Maya
- Types in the recipient's mobile number
- Types in the amount (and usually gets it slightly wrong)
- Sends — and then there's a back-and-forth confirming who paid what
This is annoying for groups of 3+, especially when items are unevenly distributed (one person had drinks, another didn't). Splitwise exists but: (a) requires everyone to install it, (b) doesn't integrate with PH payment apps, (c) overkill for one meal.
The insight: Most splits are one-shot, not ongoing balances. Users want a calculator with a payment shortcut, not an accounting system.
Primary: Filipinos aged 20–35, urban (Metro Manila, Cebu, Davao), who:
- Eat out with friends 1+ times per week
- Use GCash and/or Maya as their primary payment method
- Are the "designated splitter" in their friend group, OR are tired of the designated splitter getting it wrong
Secondary: Office workers ordering group food delivery (Grab Food, Foodpanda) where one person pays and collects from others.
Market size (rough): GCash has ~80M registered users in the Philippines. Conservatively, 5-10M are in the target demographic and split bills regularly. Capturing even 0.1% is 5k–10k users.
- Compute exact per-person amounts in under 30 seconds of input
- Open GCash or Maya with the amount pre-filled (recipient still entered manually due to OS limits, but amount is one less thing to fat-finger)
- Support uneven splits (item-by-item assignment)
- Save split history locally so users can re-reference past splits
- Feel fast and satisfying — haptics, smooth transitions, no loading spinners
- ❌ User accounts / auth
- ❌ Backend / cloud sync
- ❌ Multi-device sync
- ❌ Tracking ongoing balances between friends (Splitwise's job)
- ❌ Direct API integration with GCash/Maya (their public APIs don't support this; deep links are the workaround)
- ❌ Receipt OCR (great v2 feature, kills the weekend timeline)
- ❌ Android (later)
- ❌ Currency support beyond PHP
As a user paying for the group, I want to:
- Enter the total bill quickly and split it evenly across N people
- Optionally mark that certain people had extra items (drinks, extra mains) so they pay more
- Add tip and service charge handling (10% service charge is standard in PH)
- Tap a person's share to open GCash/Maya with the amount ready, so I can request payment fast
- Save the split so I can pull it up later if someone asks "wait, how much did I owe again?"
As a user being asked to pay my share, I want to:
- Receive the amount via screenshot or shared link
- Know exactly what I'm paying for (item-level breakdown)
- Open app → land on New Split screen
- Enter total amount (large numpad, no decimals required, peso symbol prefixed)
- Tap "+" to add people (default 2; quick add up to 10)
- Optionally add service charge toggle (10%) and tip
- See per-person amount instantly at the bottom
- Tap a person → bottom sheet with "Send via GCash" / "Send via Maya" / "Copy amount"
- Deep link opens the payment app
- Same as A through step 3
- Tap "Itemize" toggle
- Add items: name + price + tap to assign to person(s)
- App computes uneven shares including shared items split among assignees
- Same payment flow as Flow A
- Tap history icon on home
- List of past splits with date, total, # of people
- Tap a split to view the breakdown again
- Long-press to delete
| ID | Requirement |
|---|---|
| F1 | Input total amount via numeric keypad |
| F2 | Add/remove people, each with a label (defaults to "Person 1", "Person 2"; tap to rename) |
| F3 | Even split calculation, rounded to nearest peso (configurable: round up to ensure payer is covered) |
| F4 | Service charge toggle (10% default, editable) |
| F5 | Tip entry (flat amount or %) |
| F6 | Itemized mode: add items, assign to one or more people |
| F7 | Per-person amount display, updated live |
| F8 | Deep link to GCash with amount: gcash://... or fallback URL |
| F9 | Deep link to Maya with amount |
| F10 | Copy-to-clipboard for amount |
| F11 | Save split to local history (AsyncStorage or expo-sqlite) |
| F12 | View past splits |
| F13 | Delete past splits |
| F14 | Haptic feedback on key interactions (add person, compute, copy, send) |
| ID | Requirement |
|---|---|
| N1 | Share split as image (export to Photos / share sheet) |
| N2 | Frequent contacts: remember names you've split with before |
| N3 | Dark mode |
| N4 | Currency formatter with thousands separator (₱1,234.50) |
| N5 | "Round up to nearest 5 pesos" option (common in PH) |
- Receipt photo / OCR
- Group balances over time
- Push notifications
- iCloud sync
- Framework: React Native (Expo SDK 51+)
- Routing: Expo Router (file-based)
- State: Zustand or React Context (avoid Redux — overkill)
- Storage: AsyncStorage for history; expo-secure-store for any sensitive data (none planned in v1)
- Styling: NativeWind (Tailwind for RN) or StyleSheet — pick one and stick with it
- Icons: lucide-react-native or SF Symbols via expo-symbols
expo-linking— deep links to GCash/Mayaexpo-haptics— tactile feedbackexpo-clipboard— copy amountexpo-sharing(optional) — share split summary
- GCash: Uses scheme
gcash://. Direct amount-prefill via URL is not officially supported, butgcash://opens the app. Test on real device — simulators won't have these apps installed. - Maya: Uses scheme
mayaapp://orpaymaya://. Same caveat. - Fallback: If the app isn't installed, deep linking will fail silently. Implement a
Linking.canOpenURL()check and show a "Copy amount instead" option. - Verify the schemes on your own device before building UI around them — payment apps update their URL schemes occasionally and what works today may not work next month.
type Person = {
id: string;
name: string;
customAmount?: number; // for itemized splits
};
type Item = {
id: string;
name: string;
price: number;
assignedTo: string[]; // person ids
};
type Split = {
id: string;
createdAt: number;
total: number;
people: Person[];
items?: Item[];
serviceCharge: number; // 0–1, e.g. 0.10
tip: number; // absolute peso
mode: "even" | "itemized";
};- Fast over featured — every tap that doesn't help split a bill is a tap to cut
- Numeric input is the hero — big keypad, large numbers, peso symbol always visible
- Haptics on every meaningful action — this is what makes it feel "iOS native"
- No empty states with cartoons — if there's no history, show a one-line tip and the new-split CTA
- Filipino, not generic — peso symbol, "kasama" or "barkada" copywriting where it fits naturally, but don't overdo it
- Single accent color (suggest: GCash blue OR Maya green — pick neither to stay neutral, or a third color like a warm orange to feel distinct)
- SF Pro for everything (Expo handles this on iOS by default)
- Lots of whitespace; numbers are the content
- Bottom sheets for actions, not modal dialogs
For a weekend portfolio project, success is not DAU. Success is:
Primary (portfolio outcomes):
- App is installable on a real iPhone via TestFlight or Expo Go by Sunday night
- 3 clean App Store-quality screenshots produced
- 60-second demo video recorded
- README with the one-liner, screenshots, and a "what I learned" section
Secondary (if you choose to ship to App Store):
- 50+ installs in first month from organic posts (r/Philippines, Twitter, friend group chats)
- 5+ pieces of qualitative feedback
- 1 retained user who splits 3+ bills
Anti-metrics (do not chase):
- DAU, MAU, revenue — not the point of a weekend portfolio piece
Morning (4 hours)
- Expo project setup, file structure, navigation skeleton
- Build the
NewSplitscreen: total input, add/remove people, live per-person display - Service charge + tip toggles
- Wire up haptics
Afternoon (4 hours)
- Per-person tap → bottom sheet with payment options
- Deep linking to GCash and Maya — test on real device
- Copy-to-clipboard fallback
- AsyncStorage: save split on completion
- History list screen
Morning (4 hours)
- Itemized mode: add items, assign to people, compute uneven shares
- Edit split / delete from history
- Fix bugs from day 1
Afternoon (4 hours)
- Visual polish: spacing, typography, color, transitions
- App icon (use SF Symbols or commission a quick one)
- Splash screen
- Take screenshots in iOS simulator at multiple device sizes
- Record demo video
- Write README
Evening
- Optional: submit to TestFlight (this can take 24-48h for review so don't block on it for the portfolio)
- Post the project — Twitter/X, LinkedIn, r/reactnative, r/Philippines
Risks:
- Deep link schemes may not work as expected. GCash and Maya don't publish official URL schemes for amount pre-fill. Worst case: app opens, user still types amount manually — but having the amount on clipboard makes this a single paste. Build the clipboard fallback first; treat deep linking as the bonus.
- App Store review. Apple may flag this as a "calculator" (low utility). Mitigate by emphasizing the payment integration in the App Store description and screenshots. Have a real demo video ready.
- Scope creep. The temptation to add OCR, accounts, sync, or Android will be strong. Resist. Ship v1, then decide based on feedback.
Open questions:
- Should the app suggest "round up to nearest peso" or "split exactly to the centavo"? (Recommendation: round up by default, with a setting to change. Filipinos generally round up.)
- Should service charge default to 10% or 0%? (Recommendation: 0% but with a one-tap toggle, since not all venues charge it.)
- What's the right empty-state copy? Skip the cartoon, write something dry and friendly: "No splits yet. Tap + to start one."
Keep a running list — don't build these now, but capture them:
- Receipt photo + OCR auto-fill
- Apple Wallet / Apple Pay integration
- Group balance tracking (Splitwise-style)
- Currency support for OFWs and travelers
- Friend contacts integration
- Recurring splits (rent, utilities)
- Web version for desktop entry
- Android version