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).