Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Real estate deal intelligence
Translation pending
BusinessTypeScript · CSSGitHub @gaslaksenOnlineOwner 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.
A production-ready property wholesaling CRM with AI-assisted texting, lead scoring, and comps integration.Read the full README ↗A production-ready property wholesaling CRM with AI-assisted texting, lead scoring, and comps integration.
fast-homes-crm/
├── apps/
│ ├── api/ # NestJS backend
│ └── web/ # Next.js frontend
├── packages/
│ └── shared/ # Shared types & utilities
├── docker-compose.yml
└── README.md
Backend:
Frontend:
New contributor? See CONTRIBUTING.md for the full onboarding guide: access, environment setup, the branch/PR workflow, and the house rules.
# Install pnpm globally if needed
npm install -g pnpm
# Install all dependencies
pnpm install
# Start PostgreSQL and Redis
docker-compose up -d
# Wait for health checks
docker-compose ps
# Copy example env file
cp apps/api/.env.example apps/api/.env
# Edit apps/api/.env with your credentials:
# - DATABASE_URL (default is fine for local)
# - TWILIO credentials (SMS provider; set SMS_TEST_MODE=true locally)
# - ANTHROPIC_API_KEY (powers all AI features)
# - RENTCAST_API_KEY / ATTOM_API_KEY (optional, for real comps)
# Generate Prisma client
cd apps/api
pnpm prisma generate
# Run migrations
pnpm prisma migrate dev
# Seed demo data
pnpm prisma db seed
cd ../..
# Terminal 1: Start API (port 3001)
cd apps/api
pnpm dev
# Terminal 2: Start Web (port 3000)
cd apps/web
pnpm dev
Challenge (0-3): Property distress level
Authority (0-3): Decision-making power
Money (0-3): Price/ARV ratio
Priority (0-3): Timeline urgency
---
Total (0-12): Sum of all categories
Bands:
0-3: Dead/Cold
4-6: Workable
7-9: Hot
10-12: Strike Zone
POST /leads - Create leadGET /leads - List leads (with filters)GET /leads/:id - Get lead detailsPATCH /leads/:id - Update leadPOST /leads/:id/tasks - Create taskPOST /leads/:id/notes - Add notePOST /leads/:id/contract - Create/update contractGET /leads/:id/messages - Get conversationPOST /leads/:id/messages/draft - Generate AI draftsPOST /leads/:id/messages/send - Send message via TwilioPOST /leads/:id/messages/rescore - Force rescorePOST /leads/:id/comps - Fetch compsGET /leads/:id/comps - Get stored compsPOST /webhooks/propertyleads - PropertyLeads ingestionPOST /webhooks/google-ads - Google Ads/landing pagePOST /webhooks/twilio/inbound - Twilio inbound SMSPOST /webhooks/twilio/status - Twilio delivery statusGET /dashboard/stats - Overview statisticsGET /dashboard/activity - Recent activityGET /dashboard/tasks - Upcoming tasksGET /dashboard/hot-leads - Top scored leadsPOST /auth/login - LoginPOST /auth/register - RegisterGET /auth/me - Get current userWhen clicking "Draft Message", the system generates 3 variations:
User selects/edits before sending (human-in-the-loop).
On each inbound message, AI extracts:
These update the lead and trigger auto-rescoring.
Keywords like "STOP", "UNSUBSCRIBE" automatically mark leads as DNC.
Comps and ARV come from a fallback chain: RentCast, then ChatARV, then
placeholder. RentCast is the primary source (GET /avm/value returns ARV plus
comparables in one call, cached 24h). ATTOM is available as an explicit comp
source and powers Deal Search. Set the keys you use in .env:
RENTCAST_API_KEY="your-api-key"
ATTOM_API_KEY="your-api-key"
CHATARV_API_KEY="your-api-key" # optional
If no comp provider is configured, the system generates realistic placeholder comps for demo/development.
https://your-domain.com/webhooks/twilio/inbound.env:TWILIO_ACCOUNT_SID="ACxxxxx"
TWILIO_AUTH_TOKEN="your-token"
TWILIO_PHONE_NUMBER="+15555551234"
All AI features (message drafts, signal extraction, CAMP scoring, ARV, foreclosure parsing) run on Claude. Without this key the app falls back to non-AI templates.
ANTHROPIC_API_KEY="sk-ant-xxxxx"
Configure webhook endpoint: https://your-domain.com/webhooks/propertyleads
# Run API tests
cd apps/api
pnpm test
# Test scoring engine
pnpm test scoring.service
# Test webhook handlers
pnpm test webhooks.controller
# Database
DATABASE_URL="postgresql://user:pass@host:5432/db"
# Security
JWT_SECRET="generate-strong-secret"
# APIs
TWILIO_ACCOUNT_SID="..."
TWILIO_AUTH_TOKEN="..."
TWILIO_PHONE_NUMBER="..."
ANTHROPIC_API_KEY="..."
RENTCAST_API_KEY="..."
MAILGUN_API_KEY="..."
# Frontend URL (for CORS)
FRONTEND_URL="https://your-domain.com"
See apps/api/.env.example for the full, authoritative list of variables.
Deploys are automatic. Merging to master triggers a production deploy: Railway
builds and runs the API (plus Postgres and Redis), Vercel builds the web
frontend. Schema changes require a committed Prisma migration file, or Railway's
prisma migrate deploy silently no-ops and production drifts. See
CONTRIBUTING.md for the branch and PR workflow.
# Build API
cd apps/api
docker build -t fast-homes-api .
# Build Web
cd apps/web
docker build -t fast-homes-web .
cd apps/api
pnpm prisma migrate deploy
The frontend is fully responsive and works on mobile devices.
JWT_SECRET in productionTWILIO_VALIDATE_WEBHOOKS=true)# Check containers
docker-compose ps
# Restart
docker-compose down
docker-compose up -d
cd apps/api
pnpm prisma generate
Change ports in:
apps/api/src/main.ts (API)apps/web/package.json dev script (Web)docker-compose.yml (Database)MIT
For issues or questions, please open a GitHub issue or contact the development team.
Built with ❤️ for property wholesalers