Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
대화 노트를 분석해 네트워크 내 도움줄 사람을 찾아 아침마다 소개와 메시지를 제공
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를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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).