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
- Sole frontend engineer on the project
- Owned frontend architecture and overall codebase structure
- Delivered all UI features from concept through to production
- Collaborated closely with backend and product teams to shape user experience
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.