Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Talk to Telegram, get paid with PayPal: voice-to-invoice assistant for freelancers on Cloudflare Workers, Workers AI and PayPal Invoicing.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Cobra is a Telegram assistant that bills your clients and chases payments for you, with PayPal. Send it a voice note like:
“Bill Marta Garcia, [email protected], 350 dollars for the logo design, due in 15 days.”
Cobra transcribes it, understands who, how much, what for and when, and shows you the invoice. Tap ✅ Send with PayPal and your client gets a real PayPal invoice by email, payable with PayPal or card. From there Cobra works on its own:
Nothing is ever sent to a client without your tap.
Freelancers lose unpaid hours writing invoices and chasing late payments, and most of them run their business from a phone and a chat app, not from accounting software. Cobra puts PayPal invoicing where they already are, and turns the boring part into a 10-second voice note.
example.com address, or your own, as the client's email.Telegram ──webhook──▶ Cloudflare Worker (src/worker.js)
├─ Workers AI · Whisper large v3 turbo: voice → text
├─ Workers AI · Llama 3.3 70B: text → intent + invoice JSON, corrections, reminder notes
├─ D1 (SQLite): users, client book, drafts, invoices, processed events
├─ PayPal REST (src/paypal.js)
│ OAuth2 client credentials
│ Invoicing v2: create (idempotent), send, show, remind, generate QR code
│ Webhooks: register + verify-webhook-signature
├─ /paypal/webhook ◀── INVOICING.INVOICE.PAID / CANCELLED / REFUNDED
├─ /tick ◀── clock Worker: overdue alerts, missed-webhook check
└─ /app ── Telegram Mini App with AG Grid Community
Safety and reliability details:
PayPal-Request-Id per draft, and a draft that was created but not sent is reused on retry.verify-webhook-signature against our webhook id, and deduplicated by event id.initData signature, so you only ever see your own invoices.Requirements: Node 22+, a Cloudflare account (free plan works), a PayPal developer account (free sandbox), a Telegram bot from @BotFather.
npm test # unit + conversation tests, no network
npx wrangler d1 create cobra-bot # put the id in wrangler.toml
npx wrangler d1 migrations apply cobra-bot --remote
npx wrangler secret put BOT_TOKEN # from @BotFather
npx wrangler secret put WEBHOOK_SECRET # any long random string
npx wrangler secret put PAYPAL_CLIENT_ID # developer.paypal.com → Apps & Credentials (Sandbox)
npx wrangler secret put PAYPAL_CLIENT_SECRET
npx wrangler deploy
Then open https://<your-worker>/setup?secret=<WEBHOOK_SECRET> once. It registers the Telegram webhook, the command menu and the PayPal webhook, and prints the PayPal webhook id. Save it:
npx wrangler secret put PAYPAL_WEBHOOK_ID
PAYPAL_ENV in wrangler.toml switches between sandbox and live.
| File | What |
|---|---|
src/worker.js | HTTP routes: Telegram webhook, PayPal webhook, setup |
src/bot.js | Conversation: drafts, sending, alerts, reminders, QR, totals, settings |
src/paypal.js | PayPal REST client (OAuth2, Invoicing v2, webhooks) |
src/miniapp.js, src/webapp.js | Mini App page, Telegram signature check, CSV |
src/ai.js | Whisper + Llama prompts and output validation |
src/db.js | D1 queries |
src/render.js | All texts (EN/ES) and formatting |
migrations/ | D1 schema |
test/ | node --test suite with a SQLite D1 shim and fake PayPal/Telegram |
MIT