NuancePad is a corporate-safe meeting intelligence web app that converts existing meeting assets—transcripts, uploaded recordings, and authorized meeting links—into structured, executive-ready Minutes of Meeting.
It is designed for teams that cannot rely on meeting bots, browser extensions, desktop recorders, or tenant-wide admin integrations. NuancePad prioritizes transcript-first workflows, safe recording upload, authorized link intake, structured MoM generation, searchable meeting history, dashboard insights, and export/email-ready outputs.
Core positioning: summaries from the recordings you already have, without bypassing SSO, CAPTCHA, DRM, passcodes, disabled downloads, or company access controls.
- Transcript-first intake (
paste+ upload.txt/.vtt/.srt/.md/.csv) - Structured Minutes of Meeting generation contract
- History and detail views
- Executive-friendly tabular sections
- Export/copy actions
- Advanced recording upload mode (
.mp3,.wav,.m4a,.mp4,.webm) - Recording transcription pipeline before MoM generation
- Same persistence/history/export pipeline as transcript mode
- Explicit processing and error messages for transcription/generation steps
- Unified meeting-link intake (
link + optional passcode) for:- Webex
- Zoom
- Microsoft Teams
- Google Meet
- Other
- Provider detection and adapter routing with standardized outcomes:
completedmanual_upload_requiredfailed
- Safe deterministic fallback guidance:
- Open in browser
- Complete authorized access
- Download/export transcript or recording
- Upload into NuancePad
- Persisted link-intake diagnostics (no passcode/secret persistence):
- detected platform
- link import status
- fallback reason code
- attempted/completed timestamps
- Universal authorized import adapters expanded with compliance-safe routing:
- Webex safe link adapter
- Zoom API-backed adapter when OAuth token/scopes are configured
- Microsoft Teams / Graph-backed adapter when tenant token/scopes are configured
- Google Meet + Drive API-backed adapter when authorized token/scopes are configured
- Generic/Other hard fallback adapter
- Standardized adapter outcomes across providers:
completedmanual_upload_requiredfailed
- Extended diagnostics persistence:
- source type
- final intake method
- platform
- import status/reason
- attempted/completed timestamps
- adapter/provider summary (safe non-sensitive only)
- Corporate intelligence templates for MoM emphasis (schema remains unchanged):
- Standard MoM
- Executive Summary
- Project Status
- Client Review
- Risk & Action Tracker
- Technical Discussion
After MoM generation, NuancePad supports backend email send options:
- Send Full MoM
- Send Action Items
- Send Decisions
- Send Risks & Concerns
- Send Follow-up Email
Email formatting expectation:
Open email clientusesmailto:and opens your local mail app with a plain-text draft. Complex HTML table formatting is not preserved in this path.- Backend
Send ...actions send structured HTML + text email content, and should be used for executive-ready formatted MoM delivery.
NuancePad only processes authorized content and does not bypass SSO, CAPTCHA, DRM, disabled downloads, passcodes, or company access controls.
Milestone C/D fallback reason codes:
oauth_or_scope_missingpolicy_blocked_downloadartifact_not_availabletranscript_not_availablerecording_not_availableprovider_unsupportedsso_or_login_requiredinteractive_passcode_or_session_requiredcaptcha_or_bot_protectiondownload_disabled_or_drm_protectedtenant_or_policy_restrictedunsupported_providermalformed_linkno_transcript_availablenetwork_or_provider_errorunknown_manual_fallback
- Install dependencies:
npm install- Add environment variables in
.env:
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
AI_PROVIDER_ORDER=deepseek,openai
DEEPSEEK_API_KEY=
DEEPSEEK_MODEL=deepseek-v4-flash
DEEPSEEK_FALLBACK_MODEL=deepseek-v4-pro
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
OPENAI_FALLBACK_MODEL=gpt-4.1-mini
RESEND_API_KEY=
EMAIL_FROM=
EMAIL_PROVIDER=gmail
GMAIL_USER=
GMAIL_APP_PASSWORD=
EMAIL_REPLY_TO=
ZOOM_OAUTH_ACCESS_TOKEN=
MS_GRAPH_ACCESS_TOKEN=
GOOGLE_ACCESS_TOKEN=If Firebase vars are missing, app runs in local-storage mode.
If DeepSeek vars are missing, MoM generation skips DeepSeek and tries OpenAI.
If all report-generation provider keys are missing, report generation returns AI provider not configured.
Gemini is no longer used for MoM generation and old Gemini report env vars are ignored.
Recording transcription is a separate endpoint and is unchanged by this provider-router update.
NuancePad now uses backend API routes for AI operations:
POST /api/generate-reportPOST /api/transcribe-recordingPOST /api/send-meeting-email
MoM generation provider routing:
AI_PROVIDER_ORDER=deepseek,openaitries DeepSeek first and OpenAI second.- DeepSeek primary model:
deepseek-v4-flash. - DeepSeek fallback model:
deepseek-v4-pro. - Deprecated DeepSeek model names
deepseek-chatanddeepseek-reasonerare not used. - OpenAI primary fallback model:
gpt-4o-mini. - OpenAI secondary fallback model:
gpt-4.1-mini. - Gemini env vars are ignored for MoM generation even if they still exist in Vercel.
Email provider options:
- Gmail SMTP (recommended for your setup)
EMAIL_PROVIDER=gmailGMAIL_USER= your Gmail addressGMAIL_APP_PASSWORD= Google App Password (not your normal Gmail password)EMAIL_FROM= sender address (usually same asGMAIL_USER)
- Resend
EMAIL_PROVIDER=resendRESEND_API_KEYEMAIL_FROMon verified domain
Set backend env vars in Vercel:
AI_PROVIDER_ORDER=deepseek,openai
DEEPSEEK_API_KEY=
DEEPSEEK_MODEL=deepseek-v4-flash
DEEPSEEK_FALLBACK_MODEL=deepseek-v4-pro
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
OPENAI_FALLBACK_MODEL=gpt-4.1-mini
RESEND_API_KEY=
EMAIL_FROM=
EMAIL_PROVIDER=gmail
GMAIL_USER=
GMAIL_APP_PASSWORD=
EMAIL_REPLY_TO=
ZOOM_OAUTH_ACCESS_TOKEN=
MS_GRAPH_ACCESS_TOKEN=
GOOGLE_ACCESS_TOKEN=Provider token notes:
ZOOM_OAUTH_ACCESS_TOKEN: required for Zoom API cloud recording/transcript lookup path.MS_GRAPH_ACCESS_TOKEN: required for Teams/SharePoint/OneDrive Graph artifact retrieval path.GOOGLE_ACCESS_TOKEN: required for Google Drive artifact retrieval path (Meet artifacts routed through Drive where applicable).
For local full-stack testing, use:
vercel devnpm run dev
npm run test
npm run typecheck
npm run build