Skip to main content

PersonAI – AI Persona & Focus Group Platform

PersonAI is an AI-driven platform that enables users to generate personas, interact with them through chats, and simulate focus group conversations to explore insights at scale.

Context

Built at Satalia (part of VML), this was an early-stage AI product. I joined early as the sole frontend engineer, working within a cross-functional team of product, backend, QA, and DevOps. I collaborated closely with these disciplines to deliver features end-to-end and ensure alignment between user experience and underlying system behaviour.

My Role

Tech Stack

React, Redux, REST APIs

Challenges & Decisions

Designing for real-world workflows

The core challenge wasn’t just building features, but ensuring the application behaved predictably under real-world conditions. Users could trigger long-running processes, navigate between screens, upload media, switch organisation context, and return later expecting the system to remain consistent. This also required preventing users from unintentionally breaking application state through actions such as switching context mid-process or navigating away during critical workflows.

State management strategy

I treated Redux as workflow infrastructure rather than a global store. It was used for shared, durable state such as user session data and long-running processes (e.g. background jobs and uploads), while short-lived UI state was kept local to reduce complexity.

Handling persistence

Durable state was persisted across sessions, while volatile state was cleared on rehydration to avoid restoring invalid states such as stale loading indicators or broken async flows.

Workflow modelling

Long-running processes were modelled explicitly with statuses and progress indicators, allowing the UI to accurately reflect system state and provide better recovery paths.

Performance

Performance improvements focused on user impact, including route-based code splitting and reducing unnecessary recalculations in complex flows.

Impact

The result was a more stable and predictable product experience. Users could navigate long-running workflows with fewer inconsistencies and clearer feedback, while the underlying state model became more intentional and easier to extend without reintroducing common state issues.