Decision Log
31 decisionsArchitectural and product decisions derived from v3 canonical documents.
All Decisions
Firebase over Supabase for BrandGym v3
BrandGym v3 uses Firebase (Firestore + Auth + Storage + Functions) as its primary backend. Supabase was used in earlier BrandGym versions and remains a reference source only.
Firebase provides the best multi-tenant isolation model via per-tenant Firestore collections or projects, tight integration with Firebase Auth for tenant-scoped access, and native Cloud Functions for Jimmy AI jobs. Per-tenant Firebase projects are a viable scale path. Supabase was too relational for the dynamic, document-first content model.
Default region: europe-west6 (Zürich)
All BrandGym v3 tenants default to europe-west6 as data region unless explicitly overridden by the customer.
Most customers are Swiss SMEs. GDPR + nFADP compliance is simplified with Swiss data residency. Zürich node provides lowest latency for CH customers. Customer can explicitly opt into another region post-onboarding.
Monorepo with pnpm workspaces for brandgym-platform
All BrandGym v3 apps (brandgym-dev, studio) and packages (types, ui, config, firebase) live in a single pnpm monorepo.
Tight coupling between shared types, UI components and apps makes a monorepo the most productive choice. pnpm workspaces are simple and fast. Turborepo can be added later if build caching becomes a bottleneck. Separate repos would create unnecessary friction during early platform build.
brandgym-dev = Operating System, studio = Tenant Workspace
apps/brandgym-dev is the operator control center (platform-wide admin). apps/studio is the tenant-facing workspace (per-customer UI). These are two distinct apps with separate purposes.
brandgym.dev must be the strategic, operative and documentation center — operator-level. Studio is customer-facing and tenant-scoped. Mixing them would either compromise security (tenant sees operator data) or usability (operator drowns in per-tenant UI). Clean separation = cleaner product.
hub and hub-2 are reference sources only, not v3 targets
The existing hub and hub-2 repos are archived as migration sources and pattern references. They will not receive new features. Useful patterns are absorbed into brandgym-dev or studio.
hub/hub-2 are Supabase-based, light-themed, with hardcoded German labels and tenant-specific patterns. Building v3 on top of them would require removing more than adding. Clean break = faster iteration. Pattern absorption: sidebar structure, nav grouping, and billing page concepts from hub are already absorbed into brandgym-dev.
BrandGym Demo Tenant as canonical dummy tenant (not Irina, not Dartrebellen)
The v3 dummy/test tenant is BrandGym Demo Tenant — a neutral, generic service business. No real customer personas are used for testing.
A neutral, generic tenant proves the platform is truly generic — not secretly tuned for one customer type. Real customer data must never appear in tests. BrandGym Demo Tenant is professional, plausible, and tests all modules cleanly.
Jimmy is a per-tenant AI assistant embedded at platform level
Jimmy is not a standalone AI product. He is a configurable AI layer inside each tenant workspace, with a platform-level orchestration surface in brandgym.dev.
Per-tenant Jimmy allows persona customization, tenant-scoped data access, and isolated memory. Platform-level Jimmy surface in brandgym.dev gives operators visibility into all tenant Jimmy activity. No cross-tenant data leakage possible by design.
No hardcodes — all UI content is data-driven
brandgym-dev (and later studio) must not hardcode tenant names, labels, content or business-specific strings. All UI content comes from data — seed data today, Firestore tomorrow.
Hardcodes make the platform impossible to generalize. One hardcoded customer name = the platform is secretly a custom app. Data-driven UI is the only path to real multi-tenancy and scalable onboarding. Seed data (TypeScript constants today) maps exactly to Firestore documents later — no refactor needed.
Product planning objects are platform-scoped, not tenant-scoped
Capabilities, vertical packages, industry blueprints, integrations and roadmap initiatives belong to the BrandGym platform layer. Tenants consume these patterns but do not redefine the canonical planning model.
BrandGym needs one central product truth to decide what becomes config, pattern, extension, new module or integration. If planning objects live per tenant, the platform loses comparability, governance and reuse. Platform-scoped planning keeps strategy coherent.
Hero centers Agentic, not BrandGym as product name
The BrandGym hero should lead with the category thesis “Agentic” and a rotating second line, not with the product name as the dominant headline.
Leading with Agentic makes the product feel bigger, more modern and more category-defining. BrandGym remains present as the framing brand layer, but not the loudest first-screen message.
Gym metaphor stays subtle, premium and non-kitschy
BrandGym uses the gym metaphor as a structural and tonal system — training, momentum, discipline, coaching — but avoids literal fitness cliché and visual bro-aesthetics.
The metaphor is strongest when it signals performance, conditioning and coaching without collapsing into bodybuilder kitsch. This keeps BrandGym premium, serious and distinct.
CI/CD must cover platform, tenant runtime and agent behavior
BrandGym delivery is not limited to app code. Platform CI/CD, tenant runtime/provisioning CI/CD and agent/prompt/policy CI/CD are all first-class delivery layers.
BrandGym is a product where behavior, scope, migration safety and tenant isolation matter as much as build success. Delivery must therefore validate not just code, but operational safety and agent logic.
BrandGym runs on person, project and tenant intelligence layers
The agentic core of BrandGym is layered: Jimmy/Jenny at the person layer, Grace at the project layer and Emily at the tenant/company layer, with specialists as targeted reinforcements.
Real coordination requires distinct personal, project and tenant contexts with clean handoffs and memory scopes. This layered architecture is a stronger product category than generic “AI for teams”.
Jimmy is the persistent personal front-orchestrator, not the heavy worker for everything
Jimmy/Jenny is the always-present personal front layer: triage anchor, orchestration entrypoint, result aggregator and follow-up owner, while deeper work may run in specialized or scoped internal layers.
A personal front layer reduces UX fragmentation, keeps accountability clear and avoids visible bot-zoo confusion while still allowing rich internal orchestration behind the scenes.
BrandGym memory is multi-layer, typed and scope-aware
BrandGym does not rely on transcript memory alone. Memory is externalized across person, project, tenant, specialist and operational layers with explicit write and retrieval rules.
Real multi-person, multi-project coordination needs stable scoped memory, confidence handling and explicit visibility states beyond ordinary conversational context.
Grace is the project intelligence layer, not just another assistant
Grace is canonized as project/room intelligence responsible for project memory, handoffs, decision visibility, dependencies and coordination stability.
Projects need their own stable memory and coordination logic. Treating Grace as a true project intelligence layer avoids context collapse and improves handoffs.
Orchestration and governance are first-class runtime layers
Routing, delegation, approvals, reviews, tool access, risk control and escalation are explicit product architecture, not hidden implementation details.
Once agentic work becomes real operational work, governance has to be productized, inspectable and consistently enforced.
Emily is the tenant-wide company intelligence layer
Emily is canonized as tenant-wide intelligence for standards, prioritization, risk, quality and cross-project signals rather than just another assistant persona.
Tenant-wide coherence needs a distinct layer above project and personal scopes. Emily provides that without exploding the visible UX roster.
BrandGym models companies as Company Brains, not just tenants
Company identity is modeled as a structured Company Brain built from public signals, internal truth, human-curated reality and derived operational profiles.
Real business support requires richer operational identity than simple tenant metadata. Company Brain enables consistent tone, policy, region and scope behavior.
BrandGym runtime truth is grounded in explicit runtime objects
BrandGym models runtime behavior through explicit domain objects for identity, company brain, external context, execution, governance, conversation and capabilities.
Runtime-first modeling keeps product, data and orchestration aligned and makes implementation safer and more composable.
Execution is carried by tracks, not loose tasks or chat fragments
BrandGym represents meaningful work as execution tracks with phases, steps, blockers, approvals, retries, handoffs and outcomes.
Track-based execution preserves continuity and makes larger work visible, governable and auditable across multiple runs and humans.
Autonomous browser execution is a first-class runtime service
Highly autonomous browser work is canonized as its own runtime service with ephemeral workers, goal contracts, approvals, evidence and destroy-after-use lifecycle.
Browser execution is too important and too risky to remain an implicit helper capability. It needs explicit runtime, policy and evidence treatment.
Policy decisions are multidimensional, not a simple allow/deny toggle
Allowed, review, approval or forbidden outcomes depend on action class, scope, risk, competence, platform, credential mode, actor type and visibility.
Agentic work crosses multiple domains of risk and authority. A multidimensional matrix is required for real operational safety.
Each company gets its own tenant runtime database
BrandGym uses a control-plane database plus separate tenant runtime databases per company instead of relying on a single shared runtime database with tenant_id filtering.
True per-company database isolation provides the clearest security and trust model for a product handling sensitive operational context and credentials.
Agentic work must be explainable through audit, evidence and run records
BrandGym documents runs, changes, checkpints, evidence, approvals and failures through explicit audit and run-record structures rather than opaque logs.
Trustworthy automation requires reviewable and machine-usable records of what happened, why it happened and what changed.
BrandGym communicates in a direct, structured and work-friendly way
BrandGym should be clear, non-sycophantic, structured, sparing with questions and proactive with measure rather than chatty or motivational.
The product is meant to reduce friction in real work, not perform friendliness. Structured directness is more useful and aligns with user preferences.
BrandGym docs follow a truth hierarchy, not a flat pile
BrandGym documentation is explicitly ordered into canonical core, active supporting, partial, legacy and superseded layers.
The doc landscape is large enough that explicit truth ordering is needed to avoid mixing old and new product reality.
brandgym-dev becomes the internal runtime operations console
brandgym-dev is canonized as the internal control plane for tenant runtime health, execution tracks, browser runs, approvals, credentials, evidence and intervention.
The platform needs one productized internal place where runtime states are visible, governable and actionable.
brandgym-dev uses scoped operator roles instead of a superadmin model
Visibility, diagnostics, intervention, governance and security rights are scope-bound and role-specific rather than collapsed into a single superadmin permission style.
Once runtime work touches sensitive tenants, browser sessions and credentials, coarse admin models become unsafe and operationally messy.
Operational attention is productized through explicit alerting and escalation
brandgym-dev models alerts, priorities, recipient logic, bundling, lifecycle and escalation rather than treating operational attention as a side effect of status pages.
Good operations depend on the right attention reaching the right role at the right time. That requires explicit alerting design.
brandgym-dev runtime UI follows global-to-tenant-to-run drilldown logic
The runtime UI is organized as a coherent control plane with Overview, Tenants, Execution, Browser Ops, Approvals, Policy, Audit, Alerts, Credentials and Incidents views linked through drilldowns and quick views.
A coherent runtime UI map is required to turn the canonical runtime architecture into actual operator usability.