Personal relationship intelligence for founders. 2,500+ contacts, layer-based reminders, Gemini AI memory.
- Next.js 14 App Router + TypeScript
- Supabase Postgres + Auth + RLS
- Google People API 2-way sync
- Gemini 1.5 Flash AI memory & context (free quota)
- Vercel hosting + daily cron at 8am
| Layer | Cadence | Urgency |
|---|---|---|
| Inner Circle | 7d | Highest — always surfaces first |
| Close Circle | 14d | High |
| Friends | 30d | Medium |
| Strategic | 90d | Low |
| Scouts | 180d | Lowest |
Urgency score = days_overdue / cadence_days
Inner Circle overdue 7d → score 1.0. Friend overdue 7d → score 0.23.
Tighter circles always surface above looser ones.
Per-contact timeline:
note— manual notesinteraction— logged interactions (what you discussed)ai_summary— Gemini summary after you log an interactioncontext_snapshot— pre-outreach brief ("key things to know before calling Priya")
Only label + notes field sync to Google. Full memory stays in Nexus only.
git clone https://github.com/lanisterd/nexus-crm.git
cd nexus-crm
npm installcp .env.example .env.local
# Fill in all 6 valuesPaste supabase/migrations/001_init.sql → Run
Add redirect URIs in Credentials → OAuth 2.0 Client ID:
http://localhost:3000/api/auth/callback/googlehttps://YOUR-APP.vercel.app/api/auth/callback/google
Get free key: https://aistudio.google.com/app/apikey
Add as GEMINI_API_KEY in env
npm run dev
# Visit http://localhost:3000git add . && git commit -m "init" && git pushImport at vercel.com → add all env vars → deploy.
The vercel.json cron runs /api/reminders/cron daily at 8am.
Rotate your Google Client Secret and Supabase service role key — they were shared in a public chat. Generate new ones before production.