Available this month
EGP 390,230
Salary 290,230 + left over from June 100,000
Planned spend
EGP 426,990
Personal 293,040 TR 133,950
Projected month end
-EGP 36,760
Shortfall rolls into August
Installments due in August
EGP 50,534
14 active plans · 3 finish in Sep
Net remaining, next 4 months
Jul
-36,760
Aug
+154,290
Sep
+88,340
Oct
+55,390
July closes short because installments peak (50,540) and the one-off transfers to Hisham (50,000) and Mom (90,000) land in the same month. August recovers as the MNY Fellows and Valu Macbook plans end.
Needs your review
Uncategorized transactions
New merchant detected: "AMAZON PAYMENTS"
Possible duplicate: CIB SMS vs statement
Where July goes
Installment payoff timeline
Freed up by October: EGP 37,443 per month as 8 of 14 plans complete.
| Date | Merchant / details | Category | Personal / Business | Source | Status | Amount | Actions |
|---|
Click any chip, double click a row, or use ✎ to edit. Deleting always offers Undo (Cmd/Ctrl+Z works too). Fixing a category once offers to save it as a rule, so the same merchant never needs review again.
| Line | Jul | Aug | Sep | Oct | Remove |
|---|
Everything with a dashed underline is editable, exactly like your sheet. Type in any cell (names too), remove a line with ×, or add one with + Add line. Available, Total out, Net remaining, and next month's carryover recompute instantly. In the real app the installments line fills itself from your BNPL plans.
| Line (July) | Plan | Actual so far | Over / under plan |
|---|
Actuals stream in automatically from imported transactions in the real app; here they are editable so you can play. Green means under plan, red means over plan.
Business costs / month
Owner transfer to TR
EGP 133,950
July's transfer. Full costs include Hanyn's one-off bonus and prepaid tools, so the two figures differ this month.
Paid in dollars
$1,090 / month
Claude, Fireflies, Ashby, LinkedIn + Ahdab $619
Payroll
| Person | Role type | EGP / month | Remove |
|---|
Tools
| Tool | Billing | EGP / month | Remove |
|---|
Mixed-use subscriptions like Claude can be split by percentage (for example 80% Business, 20% Personal) instead of forcing one side.
Expected placements
| Client | Role | Fee (EGP) | Status | Expected | Remove |
|---|
Placement fees are lumpy, so revenue is tracked as receivables with a status and an expected date. Click a status chip to move it forward: Shortlist → Offer stage → Invoiced → Paid (with Undo). In the full app, invoiced fees will feed the forecast on their expected month.
Full time scenario (from your sheet)
| Person | Salary USD | Medical | Tools / seat | Total USD |
|---|---|---|---|---|
| Tarek | 3,000 | 85 | 224 | 3,309 |
| Wahdan | 950 | 85 | 158 | 1,193 |
| Ahdab | 700 | 85 | 49 | 834 |
| Mahmoud | 200 | 85 | 158 | 443 |
In the full app, scenarios like this will toggle on beside the plan so you can see how the forecast and runway change before committing.
Paste bank SMS or notification text
Upload statement (CSV)
Drop a CSV statement here, or click to choose a file
Export CSV from CIB online banking. Rows are parsed, categorized by your rules, and checked against existing transactions before anything is added.
Export CSV from CIB online banking. Rows are parsed, categorized by your rules, and checked against existing transactions before anything is added.
PDF statements arrive with the full build (they need the server-side parser). CSV and pasted SMS work right now, fully on your device. In the full build, an iOS Shortcut will forward each bank SMS here automatically.
How detection works
- Amount, currency, and merchant are read from CIB-style text or CSV columns
- Known merchants get a category and Personal / Business automatically
- Unknown merchants land in the review queue for you to decide once
- Possible duplicates (same amount and merchant already in your list) are flagged and skipped unless you tick them
You are signed in with Google. Everything on this screen is live: the MCP server, your API key, and encrypted cross-device sync. Only your allowed email can sign in; every other account is rejected before a session is created.
Categories
Renaming a category updates every transaction that uses it. Removing one sends its transactions back to the review queue, with Undo.
Access control
Sign in methodGoogle (Workspace)
Signed in as
…Allowed account
tarek@techyrecruiter.comAny other accountRejected before a session is created
Security posture
- Sign-in is Google only, locked to tarek@techyrecruiter.com; sessions expire after 24 hours
- Hidden from search engines (noindex + X-Robots-Tag)
- Rate limited; unknown keys are locked out after repeated failures
- Nightly encrypted backup + one-click full export (CSV / Excel)
- Playwright security tests re-run on every deploy: logged-out access to any route must return 401
MCP server & API key (live)
Cross-device syncOn
Endpoint
… API key
trf_live_•••••••••••• Tools exposedlist_transactions · add_transaction · update_transaction · delete_transaction · categorize_transaction · import_text · monthly_summary · get_forecast · update_forecast · business_summary · list_categories · export_data
Connect from Claude Code in your terminal:
Or in Claude Desktop / claude.ai: add a custom connector, paste the endpoint, and set an Authorization header of
… Or in Claude Desktop / claude.ai: add a custom connector, paste the endpoint, and set an Authorization header of
Bearer <your key>. Everything Claude changes appears in this app, and everything you change here is visible to Claude, because both share one synced store.Recent AI activity (from the server audit log)
| When | Tool | Summary |
|---|---|---|
| No AI operations yet. Connect a client and ask Claude to add a transaction. | ||
Private preview · encrypted & synced across your devices