Voyc is conversation intelligence for contact centres. It takes the calls and chats flowing through a centre and turns them into something a manager or compliance team can actually review: transcripts with audio, scorecards and callscripts, dashboards, alerts, reports, and a layer of AI-assisted analysis on top.
I was a senior frontend engineer and frontend-platform contributor on a large team. My work spanned user-facing product areas, shared components, state and API integration, testing, and a long modernisation of the frontend underneath all of it.
What I built
- The callscript and scorecard builder, including the graph-based script editor: node types and edge editing, hyperlinking, node search, position persistence, keyword assignment, validation, imports and copies, and later the document-style scorecard views.
- The conversation review workflow: transcript display, audio interactions, active-sentence highlighting, comments and tags, compliance indicators, assignment controls, grading feedback, exports, and archive/rescore actions.
- The dashboard and reporting surfaces: risk and compliance, channel scores, manager summaries, efficiency, dead air, sentiment, agent and conversation insights, and the report generation, libraries, and scheduling around them.
- A universal filtering layer shared across dashboards and reports, date, channel, agent, tag, and attribute filters, with saved presets, query-string integration, and test coverage for the filter parsing (the part nobody thanks you for until it breaks).
- Alerts: channel alerts, alert cards, keyword support, and the settings integration behind them.
- Onboarding and auth updates, including SSO/SAML configuration, feature flags, and permission-gated navigation.
- Organisation and channel administration: members and teams, transcription settings, integrations, security, audit logs, access requests, and agent management.
- The pricing and subscription UI: pricing pages and tier tables, Chargebee integration, dynamic tiers and add-ons, entitlement cards, and plan-gated messaging.
Underneath the product work, I did a lot on the frontend platform itself: shared components, design tokens and CSS-variable theming, Sentry and Intercom, PWA configuration, and the long modernisation, the Vite migration, the TypeScript conversion, the React, Storybook and Vitest upgrades, bundle analysis, and CI.
Hard parts
The product takes long, messy conversations and makes them quick to review. That means combining transcripts, audio, scoring logic, filters, reports, alerts, and role-based access in one place without the interface turning into an opaque wall of controls.
The frontend had also been around a while, so a real part of the job was keeping delivery moving while modernising the stack underneath it: Vite, TypeScript, Storybook, Vitest, dependency upgrades, test coverage, and build reliability. Changing the engine without stopping the car.
Stack
React, TypeScript, Vite, Redux with Redux Saga and Redux Persist, React Query, MUI and Radix, styled-components and Emotion; React Flow and dagre for the script graphs, Recharts for charts; Chargebee for billing, SAML/SSO, Sentry and Intercom; and Cypress, Vitest, Testing Library and Storybook, with a Vite PWA build over GitHub Actions.