Skip to content

Repository files navigation

EstateCraft

AI-powered communication orchestration for real estate sales.

EstateCraft evolves traditional CRM outreach into an enterprise-ready platform with provider-based voice and SMS automation. Dial is the first production voice provider; Twilio and others can be added without scattering vendor code.

Features

  • Lead scoring with automatic voice call triggers
  • Provider-based architecture (IVoiceProvider)
  • Dial integration for outbound AI voice + SMS fallback
  • Call status tracking, retry logic, communication timeline
  • Voice activity dashboard and voice rules configuration UI
  • 100 leads, 20 agents, properties — Summit Ridge Realty sample data

Quick Start (Local)

Prerequisites

  • Node.js >= 18
  • Docker & Docker Compose
  • npm >= 9

Setup

git clone <repo-url>
cd estatecraft
cp .env.example .env
npm install
npm run docker:up
npm run db:migrate
npm run db:seed

Run

# API + Dashboard (login via svc-api /api/auth — no separate auth process required)
npm run dev

# Optional: standalone auth service (deprecated; same Prisma User table)
npm run dev:auth
Service URL
Dashboard http://localhost:5173
API (includes auth) http://localhost:3000
Auth (optional/legacy) http://localhost:3001

Auth is database-backed and multi-tenant. Workspaces live at {slug}.estatecraft.io. Roles: ADMIN / MANAGER see all leads in their tenant; AGENT sees only assigned leads. Pro/Enterprise require SSO. Each tenant brings their own Dial account.

Demo Credentials

Tenant slug Region / plan Role Email Password
summit-ridge US / Starter Admin admin@summitridge.demo password
summit-ridge US / Starter Manager manager@summitridge.demo password
summit-ridge US / Starter Agent agent1@summitridge.demo password
coastal-homes EU / Pro (SSO) Admin admin@coastalhomes.demo SSO (or TENANT_SSO_PASSWORD_BYPASS=true)

Environment Variables

See .env.example for the full list. Key variables:

Variable Default Description
DATABASE_URL local Postgres PostgreSQL connection
JWT_SECRET dev secret Must match across api + auth
VOICE_PROVIDER mock mock, dial, or twilio
DIAL_API_KEY — Required when VOICE_PROVIDER=dial
SKIP_INFRA false Skip RabbitMQ/Redis (use on Vercel)

Never commit secrets. Use .env locally and Vercel environment variables in production.

Deploy to Vercel

# Install Vercel CLI
npm i -g vercel

# Deploy
vercel

# Set production env vars in Vercel dashboard:
# DATABASE_URL, JWT_SECRET, VOICE_PROVIDER, CORS_ORIGINS, SKIP_INFRA=true

Build command (configured in vercel.json): npm run build:vercel

Provision a PostgreSQL database (Neon, Supabase, or Vercel Postgres) and set DATABASE_URL. Run migrations:

npm run db:migrate   # prisma migrate deploy (versioned)
npm run db:seed

If you previously used prisma db push on an existing database, baseline the initial migration once:

cd infra-migrations && npx prisma migrate resolve --applied 20260810100000_init

Documentation

Doc Description
docs/ARCHITECTURE.md Architecture diagrams
docs/SAAS_DEPLOYMENT_STRATEGY.md Multi-tenant SaaS roadmap
docs/DIAL_INTEGRATION.md Dial setup guide
docs/API.md REST API reference
docs/DEMO_SCRIPT.md 5-minute prospect walkthrough
docs/TEST_STRATEGY.md Dummy data + mock + Dial live call testing
docs/FUTURE_ENHANCEMENTS.md Roadmap

Project Structure

estatecraft/
├── api/                    # Vercel serverless entry
├── webapp-dashboard/       # React dashboard
├── svc-api/                # API gateway
├── svc-auth/               # Authentication
├── svc-engagement/         # Communication orchestrator + Dial provider
├── svc-qualifier/          # Lead scoring engine
├── lib-shared/             # Shared types and events
├── infra-migrations/       # Prisma schema + seed
└── docs/

Try it / fork it

EstateCraft is an open platform for AI-assisted real estate outreach: lead scoring, outbound voice calls, SMS fallback, and a live dashboard.

Quick local try

  1. cp .env.example .env && pnpm install
  2. pnpm run docker:up && pnpm run db:migrate && pnpm run db:seed
  3. pnpm run dev → http://localhost:5173
    Demo login: admin@summitridge.demo / password

Fork the repo, run the Summit Ridge demo data, swap VOICE_PROVIDER=mock for Dial when you’re ready for live calls. Issues and PRs welcome.

License

MIT

About

AI communication orchestration for real estate sales — lead scoring, Dial voice/SMS, retry + SMS fallback. Provider-based (mock/Dial/Twilio). Run locally with Docker + Postgres, or try the Vercel demo. Fork-friendly; contributions welcome.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages