Endeavour Panels (ClientOps)
Role-aware ClientOps system for organizations, brands, creative requests, and website tasks — admin, client, employee, and client-employee dashboards.
ClientOps operating flow
Request → assign → execute → review across role-aware dashboards.
- Org Clients & brands
- Request Creative intake
- Assign Role-aware queue
- Build Website tasks
- Review Client visibility
- Report Account summary
The challenge
Agencies drown in WhatsApp creative requests and unclear website task ownership. Clients need visibility; employees need assignments; admins need cross-org control.
Endeavour needed an internal product that mirrors how multi-brand education clients actually work.
Creative requests and website defects have different SLAs — treating them as one queue creates the wrong urgency and the wrong assignees.
What we built
We built ClientOps on Next.js App Router + Prisma: organizations, brands, creative requests, website project tasks, JWT cookie sessions, and role-aware dashboards for ADMIN / CLIENT / CLIENT_EMPLOYEE / EMPLOYEE.
Seed data modelled real EDUACE brands (Manthan, Academy, Quest, Campus Coach) and website projects.
Creative vs website pipelines stay separate while sharing org/brand identity.
Platform architecture
Organizations, brands, creatives, and website tasks under one ops graph.
Admin console
Cross-org control for Endeavour operators.
Client portals
Brand-scoped visibility for client stakeholders.
Employee desks
Assignment queues for creatives and website work.
Auth & data
JWT cookies, Prisma models, org/brand graph.
Role & pipeline diagram
How organizations and brands feed two distinct workstreams under shared auth.
Identity
Work
AI assist
AI can draft and prioritize — approvals stay with humans.
Design principles
Agency chaos becomes operable when roles and pipelines are explicit.
Roles drive IA
Each persona sees only the slice they can act on.
Separate the pipelines
Creatives and website tasks have different urgency physics.
Approvals stay human
AI prepares; permission remains intentional.
Seed reality
Demo data mirrors real EDUACE multi-brand clients.
How we approached it
Roles drove IA. Each persona sees only the slice they can act on.
Creative vs website tasks were separated because workflows and SLAs differ.
Auth used long-lived HTTP-only JWT cookies with rotatable SESSION_SECRET.
Docker/Prisma/MySQL kept local and hosted environments predictable.
Seed scripts made demos and onboarding reflect real multi-brand education clients.
Where AI enters — and where it must not
Once requests carry status, brand, and assignee metadata, AI can propose next actions for employees.
Brief drafting assistants can pre-fill creative requests from prior brand work.
Portfolio reporting across client orgs becomes natural language over structured tasks.
We keep approvals human — AI accelerates prep, not permission.
Technical notes from production
Details that only show up once the season is real.
- Role-aware dashboards encode ADMIN / CLIENT / CLIENT_EMPLOYEE / EMPLOYEE capabilities in the UI, not only in middleware.
- Creative and website pipelines share org/brand identity but keep separate SLA semantics.
- HTTP-only JWT cookies with rotatable SESSION_SECRET reduce XSS session theft risk.
- Prisma + docker-compose keep local and hosted schemas aligned for agency operators.
Delivery & systems
Next.js + Prisma + MySQL with seed scripts, Playwright e2e hooks, and docker-compose.
Production logos for panel chrome.
Role matrices encoded in UI so ADMIN, CLIENT, CLIENT_EMPLOYEE, and EMPLOYEE never share the wrong queue.
Stack
Click a layer — each one maps to a real season responsibility.
App Router UI
Next.js
Role-aware dashboards for every ClientOps persona.
Brand assets from the live product
Primary mark pulled from the Olympiad codebase — shown once, on the surface it was built for.
Outcomes
- Multi-role ClientOps dashboards
- Creatives + website task pipelines
- Org/brand modelling for education clients
- Secure cookie session auth
- Seeded EDUACE-like multi-brand reality