MVP1 Checklist & Testing Guide for Plumbing Companies
Live URL: https://verbai.forwardai.dev | Health: /health | Phone: +1 (606) 806-7965
Checking status...
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_PHONE_NUMBER=+15551234567
/Users/sanju/Projects/verbai/.env
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OpenAI Realtime API may require special access. If you get errors, check your OpenAI dashboard to ensure realtime features are enabled for your account.
In Twilio Console → Phone Numbers → Your Number:
| Voice Webhook | https://YOUR-NGROK-URL/webhook/voice |
| Voice Method | POST |
| SMS Webhook | https://YOUR-NGROK-URL/webhook/sms |
| SMS Method | POST |
curl -X POST http://localhost:3002/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "plumber@example.com",
"password": "password123",
"name": "John Plumber",
"companyName": "Johns Plumbing Co"
}'
{
"user": { "id": "...", "email": "plumber@example.com", "name": "John Plumber" },
"account": { "id": "...", "companyName": "Johns Plumbing Co" },
"token": "eyJhbGciOiJIUzI1NiIs..."
}
curl -X POST http://localhost:3002/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "plumber@example.com",
"password": "password123"
}'
Copy the token from the response - you'll need it for testing other endpoints.
curl http://localhost:3002/api/v1/auth/me \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
src/core/call-processor/index.ts - WebSocket bridgesrc/lib/openai-realtime.ts - OpenAI clientsrc/modules/voice/twiml.builder.ts - TwiML responses| Gas Leak | "gas smell", "smell gas", "gas leak" |
| Flooding | "flooding", "water everywhere", "burst pipe" |
| Sewage | "sewage", "sewage backup", "toilet overflow" |
| No Water | "no water", "water stopped" |
isEmergency: trueGas leak detection instructs callers to evacuate and call 911. This is critical safety behavior that must work correctly.
| Morning (AM) | 8:00 AM - 12:00 PM |
| Afternoon (PM) | 12:00 PM - 5:00 PM |
| Max per Window | 5 appointments |
curl "http://localhost:3002/api/v1/appointments/availability?date=2024-12-28" \
-H "Authorization: Bearer YOUR_TOKEN"
curl -X POST http://localhost:3002/api/v1/appointments \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date": "2024-12-28",
"window": "AM",
"customerName": "Jane Doe",
"customerPhone": "+15551234567",
"customerAddress": "123 Main St",
"issueDescription": "Leaky faucet"
}'
curl -X POST http://localhost:3002/api/v1/appointments/block \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"date": "2024-12-25", "reason": "Christmas"}'
| CONFIRM | Accept a pending job |
| BUSY | Mark as busy (pause new jobs) |
| AVAILABLE | Ready for new jobs |
| CLOSED | Closed for the day |
| STATUS | Get current status & pending jobs |
| HELP | List all commands |
curl -X POST http://localhost:3002/api/v1/account/priority-callers \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "+15551234567",
"name": "John Smith",
"notes": "Regular customer, commercial account"
}'
curl http://localhost:3002/api/v1/account/priority-callers \
-H "Authorization: Bearer YOUR_TOKEN"
curl http://localhost:3002/api/v1/account/dashboard \
-H "Authorization: Bearer YOUR_TOKEN"
curl http://localhost:3002/api/v1/calls \
-H "Authorization: Bearer YOUR_TOKEN"
curl http://localhost:3002/api/v1/calls/stats \
-H "Authorization: Bearer YOUR_TOKEN"
curl http://localhost:3002/api/v1/account \
-H "Authorization: Bearer YOUR_TOKEN"
curl -X PATCH http://localhost:3002/api/v1/account/settings \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"businessHoursStart": "08:00",
"businessHoursEnd": "17:00",
"timezone": "America/Denver"
}'
| Account | Company accounts |
| AccountUser | Users linked to accounts |
| Call | Call records with transcriptions |
| Appointment | Scheduled appointments |
| PriorityCaller | VIP phone numbers |
| SmsMessage | SMS history |
| BlockedDate | Blocked scheduling dates |
cd /Users/sanju/Projects/verbai
npx prisma studio
Opens browser at http://localhost:5555
| Server | http://localhost:3002 |
| Database | PostgreSQL (local, port 5432) |
| Redis | localhost:6379 |
| Project Path | /Users/sanju/Projects/verbai |
| .env File | /Users/sanju/Projects/verbai/.env |