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.
Translation pending
The investor CRM for founders running a fundraise. Type what you remember after every pitch and Savvo tracks who you met, who is going cold, and who is waiting on a follow-up.
BusinessTypeScript · PLpgSQLGitHub @nb110240OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
AI-powered relationship manager. Keep every connection alive.
Savvo is for founders, VCs, and professional networkers who meet many people a week. You paste rough notes after a meeting; Savvo pulls out a structured contact, scores each relationship's health, and tells you who is going cold and what to do next. The current wedge is founders raising a round: an investor CRM with follow-up tracking and AI meeting prep.
Live at savvo.app. An iOS wrapper (Capacitor) ships the same web app.Read the full README ↗AI-powered relationship manager. Keep every connection alive.
Savvo is for founders, VCs, and professional networkers who meet many people a week. You paste rough notes after a meeting; Savvo pulls out a structured contact, scores each relationship's health, and tells you who is going cold and what to do next. The current wedge is founders raising a round: an investor CRM with follow-up tracking and AI meeting prep.
Live at savvo.app. An iOS wrapper (Capacitor) ships the same web app.
Capture
Stay on top of it
/reach-out (who needs attention), and /moves (ranked next actions)/inbox)Intelligence
Account and platform
Marketing site (static): homepage, /pricing, /vs/* comparison pages, /blog, /templates/investor-tracker, /from-spreadsheet, /changelog, rss.xml, sitemap.xml, llms.txt.
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router), React 19, TypeScript |
| Styling | Tailwind CSS v4 (class-based dark mode), Radix primitives, lucide icons |
| Data and auth | Supabase (Postgres + pgvector, RLS, Auth, MFA) |
| AI | OpenAI (extraction, embeddings, drafts, analysis); optional Google AI fallback for extraction |
| Resend (transactional, digest, inbound) | |
| Payments | Stripe (web), RevenueCat (iOS in-app purchase) |
| Rate limiting | Upstash Redis |
| Observability | Sentry, PostHog, Vercel Analytics + Speed Insights |
| Hosting | Vercel (crons in vercel.json) |
| Mobile | Capacitor iOS (loads savvo.app) |
| Tests | Vitest |
Requires Node 20.9+ and a Supabase project.
npm install
cp .env.local.example .env.local # fill in values, see SETUP.md
PORT=3001 npm run dev # http://localhost:3001
Use port 3001; 3000 is reserved for another project on the main dev machine. Full setup (database, OAuth, Stripe, Resend, crons, iOS) is in SETUP.md.
| Command | What it does |
|---|---|
npm run dev | Dev server (webpack) |
npm run build / npm start | Production build / serve |
npm test | Run the Vitest suite once |
npm run test:watch / npm run test:coverage | Watch mode / coverage |
npm run lint | ESLint |
npx tsc --noEmit | Type-check |
npm run verify:raise-autopilot-schema | Check the Raise Autopilot migration SQL |
npm run verify:raise-autopilot-live | Check the migration is applied to the live database |
npm run ios:sync / npm run ios:open | Sync / open the Capacitor iOS project |
src/
app/
(auth)/login/ sign in, sign up, password reset
(dashboard)/ authenticated app: dashboard, contacts, contact/[id], add, capture,
inbox, moves, reach-out, search, graph, intros, import, scan, settings
api/ route handlers (contacts, reviews, commitments, intro-requests,
import, search, calendar, granola, stripe, native, cron, webhooks, dev)
blog/ vs/ templates/ pricing/ changelog/ ... static marketing pages
components/ UI components
lib/ domain logic: health scores, dedup, extraction, search, next moves,
intro paths, email, Stripe/RevenueCat, rate limiting, env validation
__tests__/ unit tests; integration/ holds user-flow and API handler tests
supabase/migrations/ SQL migrations (see supabase/README.md)
supabase-schema.sql base schema
scripts/ re-embed, migration verifiers, e2e persona seed/cleanup
ios/ iOS deploy guide and App Store metadata
.claude/hooks/ post-deploy smoke test
Before merging (full list in CLAUDE.md):
npx tsc --noEmit and npx vitest run passsrc/__tests__/integration/.from("contacts") query filters .is("archived_at", null) unless it is meant to read archived rowsrevalidatePath for /dashboard, /reach-out, /contactsBefore deploying: npx next build, then vercel --prod from local main (Git auto-deploy is off), then bash .claude/hooks/post-deploy-smoke.sh.
| File | Contents |
|---|---|
| SETUP.md | Environment, services, and deployment setup |
| CLAUDE.md | Design context, quality gates, testing rules |
| TODOS.md | Shipped work, in-progress items, roadmap |
| supabase/README.md | Migration conventions |
| ios/DEPLOY-IOS.md | iOS build and App Store submission |
| DISTRIBUTION-PLAYBOOK.md, IDEAL-CUSTOMER-PROFILE.md, OUTREACH-SEQUENCES.md, GEO-AUDIT-REPORT.md | Go-to-market |
| REDDIT-POSTS.md, TWITTER-THREAD.md | Launch post drafts |