new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證AI inbound phone enquiry qualification for Aangan Studio (Vaani voice agent, Cal.com/Calendly, HubSpot, email, management dashboard)
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Aangan Studio – AI phone enquiry qualification
An inbound-call system for Aangan Studio (interior design, Pune). A Vaani voice agent answers every call day and night, captures the facts, calls this application live, mid-call to apply Nikhil's qualification rubric and to book a real Calendly consultation, and the results flow to four outputs: HubSpot, email notifications, Calendly bookings and a management-only dashboard with running costs.
Phone channel only (WhatsApp and the web form are out of scope). No prices are ever quoted – the approved deflection from pricing.md is the only answer.檢視完整 README ↗An inbound-call system for Aangan Studio (interior design, Pune). A Vaani voice agent answers every call day and night, captures the facts, calls this application live, mid-call to apply Nikhil's qualification rubric and to book a real Calendly consultation, and the results flow to four outputs: HubSpot, email notifications, Calendly bookings and a management-only dashboard with running costs.
Phone channel only (WhatsApp and the web form are out of scope). No prices are ever quoted – the approved deflection from pricing.md is the only answer.
Honest status. The application, rules engine, database, mock adapters, live-tool endpoint, webhooks, dashboard and tests are complete and passing. The live integrations (Vaani, Calendly, HubSpot, Gemini, Resend, Neon) have not been exercised against real accounts yet because no credentials have been supplied. They are written against the official documentation and tested with recorded-contract fakes, and the system runs in clearly labelled simulated mode until keys arrive. See Known limitations.
npm install
npm run keys:sync # copies D:\Vaani Project\API_KEYS.txt -> .env.local (generated secrets are already filled in)
npm run admin:create -- [email protected] # dashboard login (password prompt)
npm run db:seed # optional: ~20 sample calls replayed through the real pipeline, labelled "sample"
npm run dev -- -p 3100 # http://localhost:3100
npm run simulate:call -- qualified # in a second terminal: a full scripted call over real HTTP
Without DATABASE_URL the app uses an in-process PostgreSQL (PGlite, stored in .data/) for development only; production refuses to start without Neon. Without integration keys every adapter is simulated and every record it produces is labelled Simulated in the UI.
npm run dev / build / start | Next.js 16 (App Router, Turbopack) |
npm test | 190 tests (Vitest; PGlite in memory; jsdom for UI) |
npm run typecheck · npm run lint | strict TypeScript, ESLint |
npm run db:generate · db:migrate | Drizzle migrations (drizzle/) · apply them (Neon or local) |
npm run db:seed | development sample data (refuses production / external DB without --force) |
npm run admin:create -- <email> | create or reset a management login |
npm run keys:sync | API_KEYS.txt → .env.local |
npm run vaani:tools | print the six Vaani custom-tool cURL definitions |
npm run simulate:call -- <scenario> | qualified · rejected · complaint · pricing · dropped against a running server |
npm run check:integrations | mode + health of each integration |
npm run hubspot:setup | create the aangan_* HubSpot properties (idempotent) |
See docs/architecture.md for the diagram, sequence flow, state machine, data model, idempotency table and security model. In short:
POST /api/voice/tools/aangan-workflow-action (get_call_context, save_enquiry_progress, evaluate_qualification, get_available_slots, book_consultation, escalate_to_human).content/knowledge/ (services, qualification rubric; pricing only as the approved sentence).The model never overrides a rule, quotes a price, bypasses the booking confirmation, or claims success without a verified server result. Details: docs/vaani-integration.md and docs/vaani-agent-prompt.md.
From services.md, qualified.md, rubric.txt and pricing.md (copied unchanged to content/knowledge/):
pass · fail · unknown · unknown_neutral · human_review with the evidence stored per criterion.pricing.md: price tables are never loaded into a prompt or response; all spoken text passes a price-disclosure guard; after every call the transcript is audited and a violation raises a compliance escalation.qualified.md says both "if it fails one, close gracefully" and "decline when two or more fail". Default implemented: one hard exclusion → polite decline; one softer failure → human review; two or more → decline. All three and a master "automatic declines" switch are configurable. rubric.txt asks that automatic rejection not go live until Nikhil confirms.services.md only gives an upper limit (~3,000 sq ft); the 500 sq ft floor comes from the T18 front-desk answer and rubric.txt.services.md); 6–10 weeks is accepted with a warning to the designer; the "8–10 weeks" sentence in qualified.md is ambiguous and is read as a minimum lead time, not a maximum horizon.services.md pass cleanly; other Pune-city localities (Kharadi, Nanded City…) pass with a "designer to confirm" note.The brief leaves the channel to us. Email: works for all 14 designers and the two front-desk staff with no new app or bot onboarding; every message is a durable, searchable, forwardable record (useful for the "designers repeat the front desk's questions" problem); delivery is auditable (notifications table, provider message id, retries); it supports role routing (complaints → senior person) and a front-desk copy so a missed email cannot strand a lead. Telegram would add faster push but needs each person to start a bot chat and gives no durable audit trail.
Put values in D:\Vaani Project\API_KEYS.txt, then npm run keys:sync. Never paste them into code or chat.
| Variable | What / where | Needed for |
|---|---|---|
DATABASE_URL | Neon pooled connection string (not the Neon management API key) | production persistence |
VAANI_API_KEY, VAANI_AGENT_ID | Vaani Settings → API Keys; Agent Config | cost/transcript fetch, health check |
VOICE_TOOL_SECRET, VAANI_WEBHOOK_TOKEN | generated for you in API_KEYS.txt | authenticates Vaani → our endpoints |
VAANI_WEBHOOK_SECRET | only if Vaani gives an HMAC secret for call webhooks | optional |
GEMINI_API_KEY | Google AI Studio (paid tier for production) | post-call extraction / audit |
WEB_CALL_DAILY_CAP | Optional; maximum public web calls started per 24 h (default 40; each costs Vaani credits) | Web call |
HUBSPOT_ACCESS_TOKEN | Service key (HubSpot has retired legacy private apps on new accounts: Development → Keys → Service Keys) or Private App; scopes crm.objects.contacts.read/write, crm.schemas.contacts.read/write (+ deals scopes if HUBSPOT_CREATE_DEALS=1) | CRM |
CALCOM_API_KEY (free) or CALENDLY_ACCESS_TOKEN (paid plan, Standard+) | Cal.com: Settings → Security → API keys. Calendly: Personal Access Token. One event type per designer pasted in Settings → Team (calcom:<id> or the Calendly URI). Set CALENDAR_PROVIDER=calcom or calendly (auto-detected) | availability + booking |
RESEND_API_KEY, EMAIL_FROM | Resend; verified sending domain | emails |
FRONT_DESK_EMAIL, SENIOR_ESCALATION_EMAIL, OPS_ALERT_EMAIL | recipients (or configure in Settings → Team) | routing |
SESSION_SECRET, CRON_SECRET, APP_URL, ADMIN_EMAILS |
Notes: a GitHub token is not needed to run the app. Scheduling provider. Calendly's booking API needs a paid plan (it returns 403 on Free), so a free Cal.com adapter (src/lib/integrations/calcom/) implements the same interface; the free Cal.com plan has a single host, so all consultations go to one shared calendar for the pilot (the designer is named in the handoff email; multi-designer routing needs a Cal.com Teams plan or Calendly). Calendly's API token alone does not guarantee booking: who receives the confirmation/invite is governed by each event type's notification settings – confirm that both the invitee and the host notifications are on. The HubSpot properties are created only if missing (npm run hubspot:setup).
/ entry (editorial hero with the specified video, reduced-motion and failure fallbacks) → sign in → Overview (calls, answered/missed, answer-time distribution vs the 5-minute target, after-hours share, qualified/declined/unclear/escalated, funnel, bookings & failures, decline reasons, daily trend, running cost, integration health), Enquiries (search/filter), Enquiry detail (criterion-level evidence, summary, activity, transcript, booking attempts, outputs, audited override), Exceptions (escalations with owner / acknowledge / resolve, booking failures, unclear enquiries), Integrations (live / simulated / not configured, endpoints, health checks), Settings (policy, team routing, cost rates, fixed costs). Designers and the front desk have no logins; they act on email.
Metrics are computed from persisted rows. Estimates and measured figures are labelled; where no source exists the dashboard says n/a (cost, conversion) rather than inventing a number. Response time is measured as ring → agent pick-up from webhook timestamps.
npm test runs 190 tests. Mapping to the 24 required scenarios:
| # | Scenario | Where |
|---|---|---|
| 1–2 | suitable residential / office | qualification.test.ts |
| 3–4 | Nashik; styling advice | qualification.test.ts, voice-tools.test.ts |
| 5–6 | impossible timeline; inadequate volunteered budget | qualification.test.ts |
| 7–8 | pricing question; declined budget | qualification.test.ts, voice-tools.test.ts |
| 9–11 | rented flat; authorised representative; unclear scope | qualification.test.ts |
| 12 | existing-customer complaint | qualification.test.ts, voice-tools.test.ts, postcall-fallback.test.ts |
| 13–15 | after hours; dropped call + redial; duplicate webhook | webhooks-and-jobs.test.ts |
| 16–18 | booking success; slot taken; timeout / failure (3 variants) | voice-tools.test.ts, adapters.test.ts (Calendly and Cal.com) |
| 19–21 | HubSpot failure; email failure; Gemini invalid output | webhooks-and-jobs.test.ts, adapters.test.ts |
| 22 | missing / invalid credentials (fail-closed) | security-and-config.test.ts |
| 23 | retries create no duplicate bookings / CRM records / emails | voice-tools.test.ts, webhooks-and-jobs.test.ts |
| 24 | theme switch; responsive behaviour | ui.test.tsx (+ checked in a real browser at 1360 px and 375 px) |
Also covered: webhook HMAC/token auth, tool auth, scrypt/session, DB-backed rate limits, log redaction, transcript retention, analytics honesty (no invented costs), email HTML-escaping, the agent prompt (no prices, approved sentence verbatim), the post-call-only fallback, and the state machine (no route into booking except via customer confirmation).
See docs/deployment-checklist.md. Nothing has been deployed, pushed or published; no repository permissions were changed.
| # | Check (weight) | Status in this build |
|---|---|---|
| 1 | Problem real? (15) | Evidenced in the brief (48 % unanswered, 33 % after hours, 4× conversion within an hour); the dashboard measures answer time and after-hours share to re-test it |
| 2 | Workflow repeated? (10) | Intake, qualification and handoff context are automated; designers receive complete context |
| 3 | Input available? (10) | Real call events, caller ID, live facts, transcript + services/qualified/pricing context |
| 4 | Output valuable? (15) | Four outputs implemented; each verified in simulated mode, live verification pending credentials |
| 5 | Impact measurable? (10) | Response time, outcomes, bookings, failures, cost per call / qualified lead; conversion needs HubSpot deal stages |
| 6 | Failure risk OK? (10) | Pricing guard + audit, no budget probing, no promised dates, escalation, safe retries, fail-closed security |
| 7 | Judgment protected? (10) | Rules explicit; humans decide exceptions; audited overrides; AI cannot change decisions |
| 8 | ROI worth it? (10) | Needs the controlled pilot: set cost rates, compare cost per qualified lead with bookings and staff time |
| 9 | Owner clear? (10) | Nikhil owns rules/outcomes; an operational owner and a content owner still need to be named |
(The evaluation weights are the proposed ones from rubric.txt and are separate from the customer-qualification weights.)
call_started; whether call webhooks can be signed. See docs/vaani-integration.md. Without custom tools the system runs post-call only and cannot book during the call./crm/v3, /crm/v4), which HubSpot says remain supported until September 2027; migrate to the date-based /crm/2026-09/… APIs before then (only src/lib/integrations/hubspot/live.ts changes).VAANI_API_KEY and VAANI_AGENT_ID are both configured; before that, even real calls reaching the endpoints are stored as simulated so test traffic can never be mistaken for production.GEMINI_MODEL, with fallbacks); confirm the account can use the chosen model with npm run check:integrations.TRANSCRIPT_RETENTION_DAYS (default 90) by the cron job; audio is never stored (Vaani keeps its own recordings – configure retention there).src/app/ Next.js routes: entry page, /dashboard/*, /api/voice/{tools,webhooks}, /api/jobs/run, /api/health
src/app/actions/ server actions (sign-in; management operations - each re-checks admin)
src/components/ UI primitives, charts (no chart dependency), theme toggle, hero video, nav
src/lib/domain/ pure rules: facts schema, qualification engine, service area, timeline, budget, signals, pricing guard, messages
src/lib/services/ workflow, ingest, qualify, booking, escalations, outbox/jobs, notifications, hubspot-sync, postcall, analytics, usage, voice-tools
src/lib/integrations/ vaani | gemini | hubspot | calendly | email : types + live + mock; factory with fail-closed mode resolution
src/lib/security/ HMAC, token auth, rate limiter, scrypt, sessions
src/lib/db/ Drizzle schema + client (Neon via pg, PGlite for dev/tests)
content/knowledge/ services.md, qualified.md, pricing.md, rubric.txt (source of truth)
drizzle/ SQL migrations
docs/ architecture, vaani-integration, vaani-agent-prompt, deployment-checklist
scripts/ migrate, seed, admin, sync-keys, simulate-call, vaani tool printer, health check
tests/ Vitest suites + transcript fixtures (T01–T20 as structured facts, no real customer data)
| generated / your public URL / optional allow-list |
| dashboard + jobs |