Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Pal cares · Pal cuts · Pal claims. A pal for a mother's hardest month.
Live demo: https://mamapal.vercel.app (sign in with any name; it's a demo session, no password).
Demo video (2:55): https://youtu.be/jDOPtrLy4sY
Built for the PayPal AI Hackathon by a mother who lives on this budget.
Most "agentic commerce" demos teach an AI to spend money for people who have plenty. This one does the opposite: it stands between a tired parent and a feed full of $45 "calming oils", and lets PayPal move only the dollars that survive the cut.檢視完整 README ↗Pal cares · Pal cuts · Pal claims. A pal for a mother's hardest month.
Live demo: https://mamapal.vercel.app. Pick a demo household on the sign-in page (codes MAYA-DEMO, ROSA-DEMO, KEISHA-DEMO); each opens your own private copy, so nothing you do reaches another visitor. Or start your own household with any name. All three households are fictional; the places and programs are real.
Demo video (2:44): https://youtu.be/Vu4-fOuxg_A (first version, Oct 4: https://youtu.be/jDOPtrLy4sY)
Built for the PayPal AI Hackathon by a mother who lives on this budget.
Most "agentic commerce" demos teach an AI to spend money for people who have plenty. This one does the opposite: it stands between a tired parent and a feed full of $45 "calming oils", and lets PayPal move only the dollars that survive the cut.
The app is a conversation with Pal. Home is Pal talking: a short brief on top (money left, saved, days of pantry left, help she can claim), then the conversation. Pal's answers stay short; what it did arrives as a small card in the conversation, and the card opens in a panel on the right (full screen on a phone) only when there is something to look at: a cart, or a month run's steps as they light up. On desktop a left sidebar holds the tools she manages herself (this month, budget, claims, me) and her past conversations with Pal; it folds to icons on its own while a panel is open. Phones keep a bottom tab bar.
Three pillars. Desktop gets a top navigation and a wide layout; phones get a bottom tab bar with a floating "Ask Pal" button.
| Screen | What it is |
|---|---|
| Intro / sign-in | A landing page and a mock session (name + email cookie). No real accounts yet. |
| Welcome | First-run wizard: language, your name, children, daily use, money and where you live. |
| Pal (home) | Pal talks: money left, the pantry (and a warning when diapers or formula run low), what the baby needs this month in three tiers, help you can claim, the last verdict. Topic chips and the composer sit at the bottom; verdicts appear inline. |
| Budget | The budget bar, every verdict with its PayPal button, the ledger, and the earn-back surveys. |
| Ask Pal | The conversation: she says what she thinks she needs, Pal answers with a verdict card. |
| Resources | What she can claim, from her profile. |
| Me | Records: a status card (edit to change), the pantry, this month's numbers, every verdict, an AG Grid ledger across months (sort, filter, search, totals, CSV), archived months. |
Mom answers five questions once: children with birth month and any medical notes, daily diaper and formula use, household, income, ZIP. From that Pal knows the baby's stage and builds the month in Maslow order: must-haves (diapers, milk, food, health, care, clothes), then growth and learning, then joy and outings, each priced at store-brand retail with the cheaper way next to it. Pal also keeps a pantry: every purchase paid through Pal adds diapers, formula or wipes; daily use drains it; when something has a week left, the welcome card says so. She sets the month: $400 total · $100 locked for food. The locked part is untouchable; the agent only ever sees what is left.
One button, one goal: keep the baby covered until the month ends, on what is left. Pal works it in five steps and shows each one as it finishes, with its time and AI cost:
Every step is saved as it finishes, so a timeout resumes at the next step. Three real runs, the five defects they exposed and the fix for each are in docs/evidence/.
A parent holding a baby has one free hand. Every place you can talk to Pal (home, the pop-up, the conversation page) has a mic: tap it, talk, stop talking. The words fill the box as she speaks and go out after a short pause; when she asked by voice, Pal reads its answer back. "Plan the rest of the month", said or typed, starts the month run. It uses the browser's own speech services (in Chrome, recognition is done by Google's speech service, so audio does leave the device); MamaPal itself never records or stores audio. Browsers without speech recognition simply don't show the mic.
Smart-tax filter. She types what she thinks she needs, the way it sits in her head ("baby has a rash, Instagram says buy the $45 organic oil and the $60 sleep sack"). Claude returns a verdict per item: BUY / SWAP / SKIP / DEFER, a concrete cheaper equivalent with a realistic US retail price, and a one-line reason. Money fields are recomputed server-side; the model never gets the last word on arithmetic. Typical result: $105 asked → $18 approved. Then check prices across stores: Pal searches the web for the same item at Walmart, Target, Amazon, Costco, Aldi, dollar stores and pharmacies, lists real offers with links, and lowers the cart if it finds cheaper. Pal is nobody's shop. Execute minimal purchase (PayPal Checkout). One button. The agent builds a PayPal order for exactly the approved cart (itemised), Mom approves in the PayPal popup, the server captures it, and the budget bar drops by the captured amount with the PayPal capture id on the ledger.
Earn back (PayPal Payouts). Brands pay a few dollars for 20 seconds of real answers from real mothers. She taps three answers; the server sends a PayPal Payout to her account; the budget bar goes up with the payout batch id.
What you can claim. She enters ZIP, state, household size, income, children's ages. Claude, with web search over official sites, returns every program she likely qualifies for in her area: WIC, SNAP under its state name, Medicaid/CHIP, the nearest diaper bank, Head Start, child care subsidy, HEAP/LIHEAP, Lifeline, EITC/CTC, 211, pantries, free-goods groups. Each one carries the single rule that decides her eligibility, what it is worth per month, three to four steps, the documents to bring, and the official link. A Queens, NY profile on $1,200/month found 12 programs worth roughly $1,500/month in about two minutes.
Every rule carries its source, and the source is checked. For each program Claude must give the official page it read and the deciding rule copied word for word. The server opens that page and looks for the words (found / numbers match / not on the page / couldn't read it), marks whether the source is a government site, opens every application link and drops dead ones. Weak sources are sent back once for a search that only accepts official pages. "Check every source again" re-runs the checks with no AI cost. The price check on any verdict card opens every store link the same way. Details and before/after numbers: docs/evidence/.
Everything that touches money is a real PayPal sandbox API call. Nothing is faked on screen. The UI is bilingual (English / 简体中文, toggle top right); the agent answers in the chosen language.
claude-opus-5) via @anthropic-ai/sdk. Month run: src/lib/month-run.ts (steps, checkpoints, verifier), API src/app/api/run. Purchase filter: structured output enforced with a Zod schema (src/lib/agent.ts). Benefits finder and price check: Claude web search tool + structured output (src/lib/resources-agent.ts, src/lib/compare-agent.ts). Monthly needs model: src/lib/stages.ts; pantry: src/lib/inventory.ts.src/components/LedgerGrid.tsx), only on the Me page.src/lib/paypal.ts); PayPal JavaScript SDK buttons on the clientapp_state row) when configured, else data/state.jsoncp .env.example .env.local # fill in the keys below
npm install
npm run dev # http://localhost:3000
| Variable | Where it comes from |
|---|---|
ANTHROPIC_API_KEY | https://console.anthropic.com |
PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET, NEXT_PUBLIC_PAYPAL_CLIENT_ID | PayPal Developer Dashboard → Apps & Credentials → Sandbox → create app. Client ID goes in both PAYPAL_CLIENT_ID and NEXT_PUBLIC_PAYPAL_CLIENT_ID. |
PAYOUT_RECEIVER_EMAIL | Developer Dashboard → Sandbox Accounts → the Personal account's email. Payouts land there. |
NEXT_PUBLIC_SANDBOX_BUYER_EMAIL, NEXT_PUBLIC_SANDBOX_BUYER_PASSWORD | Optional. Shown with copy buttons next to the PayPal button so testers can sign into the sandbox popup without remembering the demo buyer. Fake account, fake money; never put a real account here. |
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY (or SUPABASE_ANON_KEY) | Optional but used in production. On Vercel/Render the disk is not durable, so state goes to one Supabase row. Run supabase/schema.sql once. Locally you can skip this; state lives in data/state.json. |
To pay in the demo, log into the PayPal popup with that same sandbox Personal account (password is in Sandbox Accounts → View/Edit).
MIT, see LICENSE.