A lightweight personal CRM to track prospects, clients, deals, and follow-ups. Accessible from phone and laptop, with LinkedIn capture, Telegram alerts, and AI-powered email drafts.
Backend : Python/FastAPI on Render
Frontend : React + TypeScript + Tailwind + shadcn/ui on Netlify
Storage : Google Sheets (via gspread)
Alerts : Telegram bot with scheduled notifications
Email drafts : Claude API
LinkedIn capture : Chrome extension (Manifest V3)
Go to console.cloud.google.com
Create a new project
Enable Google Sheets API and Google Drive API
Go to IAM → Service Accounts → Create Service Account
Download the JSON key file
Create a Google Sheet with these tabs (first row = headers):
Contacts : id, company_id, first_name, last_name, email, phone, role, linkedin_url, urls, source, referral_contact_id, tags, notes, status, created_at, updated_at
Companies : id, name, industry, website, size, notes, created_at, updated_at
Deals : id, contact_id, company_id, title, stage, value, currency, priority, expected_close, notes, created_at, updated_at
Interactions : id, contact_id, deal_id, type, subject, body, url, direction, occurred_at, created_at
FollowUps : id, contact_id, deal_id, title, due_date, due_time, status, reminder_sent, notes, created_at, completed_at
Users : id, username, password_hash, telegram_chat_id, created_at
Share the sheet with the service account email (Editor access)
Copy the Sheet ID from the URL
cd backend
cp .env.example .env
# Edit .env with your credentials:
# GOOGLE_SHEETS_CREDENTIALS_JSON (paste the entire JSON key)
# GOOGLE_SHEET_ID
# JWT_SECRET_KEY (generate a random string)
# INVITE_CODE (for user registration)
# ANTHROPIC_API_KEY (for email drafts)
pip install -r requirements.txt
uvicorn app.main:app --reload
cd frontend
echo " VITE_API_URL=http://localhost:8000" > .env
npm install
npm run dev
4. Telegram Bot (Optional)
Message @BotFather on Telegram, create a bot
Add to .env:
TELEGRAM_BOT_TOKEN=your-bot-token
TELEGRAM_ENABLED=true
Message your bot, then add your telegram_chat_id to the Users sheet
Open chrome://extensions/
Enable Developer Mode
Click "Load unpacked" and select the chrome-extension/ folder
Click the extension icon, enter your API URL and login
Create a new Web Service on Render
Set root directory to backend
Build command: pip install -r requirements.txt
Start command: uvicorn app.main:app --host 0.0.0.0 --port $PORT
Add all environment variables from .env.example
Connect your repo on Netlify
Set base directory to frontend
Build command: npm run build
Publish directory: frontend/dist
Add environment variable: VITE_API_URL=https://your-backend.onrender.com
Method
Path
Description
POST
/api/auth/login
Login
POST
/api/auth/register
Register (requires invite code)
GET
/api/auth/me
Current user
GET/POST
/api/contacts
List/create contacts
GET/PUT/DELETE
/api/contacts/{id}
Get/update/archive contact
POST
/api/contacts/from-linkedin
Create from Chrome extension
GET/POST
/api/companies
List/create companies
GET/PUT
/api/companies/{id}
Get/update company
GET/POST
/api/deals
List/create deals
GET/PUT
/api/deals/{id}
Get/update deal
PATCH
/api/deals/{id}/stage
Update deal stage
GET/POST
/api/interactions
List/create interactions
GET/POST
/api/follow-ups
List/create follow-ups
PATCH
/api/follow-ups/{id}/complete
Complete follow-up
PATCH
/api/follow-ups/{id}/snooze
Snooze follow-up
GET
/api/dashboard/summary
Dashboard stats
GET
/api/dashboard/stale-deals
Stale deals
POST
/api/email/draft
AI email draft
Command
Description
/today
Today's + overdue follow-ups
/note Name — text
Log interaction
/new Name, Company, Role
Create contact
/find query
Search contacts/companies
/pipeline
Pipeline summary