Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
Daily Networker reads your conversation notes, spots who in your network can help whom, and hands you a short list of introductions every morning, with the message already drafted.
翻譯準備中
商業TypeScript · CSSGitHub @WillZhao2021上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Be the person who always has something valuable to give. Daily Networker turns a small business owner's network into a daily, two-minute habit: it tells you who to talk to today and why, drafts the message, and helps you either make an intro (give) or ask for a meeting or an intro (ask). Referrals follow from giving first.
Connections.csv), or any CSV. Optionally add an iPhone/Google address book (.vcf or Google CSV) to get WhatsApp buttons.No demo data of your own? Click Load demo contacts to explore a ready-made 35-person network.
docs/data-contract.md.A relationship-intelligence briefing for Alonso (fractional CMO). Conversation notes go in; Claude extracts needs and offers with evidence; Daily Networker proposes introductions and scores them deterministically. Each morning it shows up to five opportunities to give.
Contacts CSV + notes → Claude extraction (needs/offers + quotes) → Supabase
→ Claude match validation (Give Value, confidence, appropriateness)
→ deterministic scoring in code (PRD §5) → briefing (≤5, one per recipient)
npm install
cp .env.example .env.local # Anthropic, Supabase (URL, anon, service role), Tavily, INVITE_CODE
# Apply the schema: supabase link --project-ref <ref> && supabase db push
npm run dev # http://localhost:3000 -> /signup with the invite code
Accounts. Email/password sign-up is gated by INVITE_CODE (checked server-side; the account is created with the admin API). Turn off Allow new users to sign up in Supabase → Authentication so the invite gate can't be bypassed. Each account has its own private network, enforced by Postgres RLS on owner_id.
Demo data. A new account starts empty. Load demo contacts (on the briefing page or the Contacts page) copies data/demo_snapshot.json into the account instantly: 30 fictional contacts with processed notes, intros and drafts, plus 5 real public figures who are web-enriched only and never introduced. Remove demo contacts deletes them again.
To regenerate the snapshot with the live pipeline (Claude extraction, Tavily enrichment, matching, drafts; about 2 minutes):
npm run seed -- --email [email protected] --reset --export
| Stage | Env var | Default |
|---|---|---|
| Note extraction | ANTHROPIC_MODEL | claude-opus-5-5 |
| Intro matching (the judge) | ANTHROPIC_MATCH_MODEL | same as ANTHROPIC_MODEL |
| Web-enrichment summaries, intro and catch-up drafts | ANTHROPIC_FAST_MODEL | claude-haiku-4-5 |
Any stage can run on Haiku 4.5. src/lib/claude.ts leaves out effort and the server-side fallback beta for Haiku, because Haiku doesn't accept them. To make Haiku the judge, set ANTHROPIC_MATCH_MODEL=claude-haiku-4-5. If you do, re-check the expected demo outcomes below, because matching enforces subtle rules (investment criteria, confidentiality, declined intro types).
/chat is the first screen. You talk with Haiku (ANTHROPIC_CHAT_MODEL, which defaults to ANTHROPIC_FAST_MODEL), and it uses Daily Networker's tools:
Results appear as cards in the conversation.
Onboarding happens in the chat, once. The assistant asks:
Connections.csvThen it finishes setup and shows Today. You can drop files into the chat at any time with the paperclip.
The conversation is stored append-only in chat_messages. Phone numbers and emails only ever appear in cards, never in what Claude sees. The old form-based onboarding at /onboarding still works.
| Concern | File |
|---|---|
| Claude extraction (Stage A) | src/lib/extract.ts |
| Candidate matching + validation (Stages B–C) | src/lib/match.ts |
| Scoring weights, cooling curve, eligibility | src/lib/scoring.ts |
| Briefing assembly, dedupe, next action | src/lib/briefing.ts |
| Outreach drafts (FR-08) | src/lib/draft.ts |
| Chat (Haiku + tools; onboarding, uploads, cards) | src/lib/chat/, src/app/api/chat/route.ts, src/components/chat/chat.tsx |
| Schema | supabase/migrations/ |
| Sample data | data/contacts.csv, data/notes.json |
DEMO_EVAL_DATE (or use ?date= on the briefing) and the results are reproducible.is_inferred flag, and quote_verified (we check that the quote really appears in the note). Inferred needs have their Match Confidence capped./api/cron/enrich, protected by CRON_SECRET) re-enriches any contact last checked more than 14 days ago, so each contact is refreshed about every two weeks. Company news prefers reputable outlets and press wires. A refresh that can't confirm identity keeps the last good match, and fictional demo contacts are never searched on a schedule.owner_id = auth.uid()), and requests use the user's session. The service-role key is used only for scripts, background enrichment and creating accounts. Only name, title and company are sent to Tavily.Strong: Sarah ← Michael (healthcare seed investor), Sarah ← Priya (enterprise health sales advisor), Grace ↔ Tom (routing software buyer/vendor), Olivia ↔ Ben (B2B podcast), David ← Elena (VP Eng, confidential, so it must be permission-first). Should not surface: Sarah ← Hannah (Series A+ only), James (the need belongs to his friend), Marcus (no stated need), Kevin (stale), Rachel (mass-intro request), Tom ← any investor (he declined investor intros).