diff --git a/assets/companies/light/blueyonder.svg b/assets/companies/light/blueyonder.svg
new file mode 100644
index 000000000..e721f4ff6
--- /dev/null
+++ b/assets/companies/light/blueyonder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/companies/light/deloitte.svg b/assets/companies/light/deloitte.svg
new file mode 100644
index 000000000..731b9e925
--- /dev/null
+++ b/assets/companies/light/deloitte.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/companies/light/dnv.svg b/assets/companies/light/dnv.svg
new file mode 100644
index 000000000..206cf963d
--- /dev/null
+++ b/assets/companies/light/dnv.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/companies/light/ey.svg b/assets/companies/light/ey.svg
new file mode 100644
index 000000000..e0e28dd40
--- /dev/null
+++ b/assets/companies/light/ey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/companies/light/ltim.svg b/assets/companies/light/ltim.svg
new file mode 100644
index 000000000..e57ad9b37
--- /dev/null
+++ b/assets/companies/light/ltim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/companies/light/pwc.svg b/assets/companies/light/pwc.svg
new file mode 100644
index 000000000..39d31c865
--- /dev/null
+++ b/assets/companies/light/pwc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/companies/light/tcs.svg b/assets/companies/light/tcs.svg
new file mode 100644
index 000000000..242b42531
--- /dev/null
+++ b/assets/companies/light/tcs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/pcweb/components/docpage/navbar/navbar.py b/pcweb/components/docpage/navbar/navbar.py
index 6cda0da5e..028e1960e 100644
--- a/pcweb/components/docpage/navbar/navbar.py
+++ b/pcweb/components/docpage/navbar/navbar.py
@@ -11,6 +11,7 @@
from pcweb.pages.faq import faq
from pcweb.pages.framework.framework import framework
from pcweb.pages.hosting.hosting import hosting_landing
+from pcweb.pages.use_cases.consulting import consulting_use_case_page
from pcweb.pages.use_cases.finance import finance_use_case_page
from pcweb.pages.use_cases.healthcare import healthcare_use_case_page
from pcweb.pages.use_cases.use_cases import use_cases_page
@@ -390,7 +391,7 @@ def solutions_section():
},
{
"label": "Consulting",
- "url": use_cases_page.path,
+ "url": consulting_use_case_page.path,
"icon": "MentoringIcon",
},
{
diff --git a/pcweb/pages/__init__.py b/pcweb/pages/__init__.py
index e0c8a4b11..3cc40811e 100644
--- a/pcweb/pages/__init__.py
+++ b/pcweb/pages/__init__.py
@@ -23,6 +23,7 @@
from .sales import sales as sales
from .security.security import security_page as security_page
from .to_be_booked import to_be_booked as to_be_booked
+from .use_cases.consulting import consulting_use_case_page as consulting_use_case_page
from .use_cases.finance import finance_use_case_page as finance_use_case_page
from .use_cases.healthcare import healthcare_use_case_page as healthcare_use_case_page
from .use_cases.use_cases import use_cases_page as use_cases_page
diff --git a/pcweb/pages/use_cases/common/features_2.py b/pcweb/pages/use_cases/common/features_2.py
index 8e4295b82..eec7fb72d 100644
--- a/pcweb/pages/use_cases/common/features_2.py
+++ b/pcweb/pages/use_cases/common/features_2.py
@@ -2,7 +2,14 @@
import reflex_ui as ui
-def feature_card(icon: str, stat: str, title: str, description: str) -> rx.Component:
+def feature_card(
+ icon: str,
+ stat: str,
+ title: str,
+ description: str,
+ items: list[str] | None = None,
+ class_name: str = "",
+) -> rx.Component:
return rx.el.div(
ui.icon(
icon, class_name="text-m-violet-9 dark:text-m-violet-10 shrink-0 size-5"
@@ -16,5 +23,17 @@ def feature_card(icon: str, stat: str, title: str, description: str) -> rx.Compo
description,
class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium mt-2",
),
- class_name="flex flex-col items-start p-10",
+ rx.el.ul(
+ *[
+ rx.el.li(
+ item,
+ class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium mt-1",
+ )
+ for item in items
+ ],
+ class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium list-disc list-inside mt-2",
+ )
+ if items
+ else None,
+ class_name=ui.cn("flex flex-col items-start p-10", class_name),
)
diff --git a/pcweb/pages/use_cases/consulting/__init__.py b/pcweb/pages/use_cases/consulting/__init__.py
new file mode 100644
index 000000000..ac6749840
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/__init__.py
@@ -0,0 +1,33 @@
+import reflex as rx
+
+from pcweb.meta.meta import meta_tags
+from pcweb.pages.use_cases.consulting.views.faq import faq
+from pcweb.pages.use_cases.consulting.views.features_1 import features_1
+from pcweb.pages.use_cases.consulting.views.features_2 import features_2
+from pcweb.pages.use_cases.consulting.views.final_section import final_section
+from pcweb.pages.use_cases.consulting.views.hero import hero
+from pcweb.pages.use_cases.consulting.views.social_proof import social_proof
+from pcweb.pages.use_cases.consulting.views.stats import stats
+from pcweb.pages.use_cases.consulting.views.text_section_1 import text_section_1
+from pcweb.pages.use_cases.consulting.views.text_section_3 import text_section_3
+from pcweb.pages.use_cases.consulting.views.text_section_4 import text_section_4
+from pcweb.templates.mainpage import mainpage
+
+
+@mainpage(
+ path="/use-cases/consulting", title="Consulting Use Case - Reflex", meta=meta_tags
+)
+def consulting_use_case_page() -> rx.Component:
+ return rx.el.div(
+ hero(),
+ social_proof(),
+ text_section_3(),
+ features_2(),
+ text_section_1(),
+ features_1(),
+ text_section_4(),
+ stats(),
+ faq(),
+ final_section(),
+ class_name="flex flex-col size-full justify-center items-center max-w-[calc(100vw-2rem)] mx-auto",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/faq.py b/pcweb/pages/use_cases/consulting/views/faq.py
new file mode 100644
index 000000000..188273f54
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/faq.py
@@ -0,0 +1,30 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.faq import faq_section
+
+
+def faq() -> rx.Component:
+ return faq_section(
+ faq_items=[
+ (
+ "Is Reflex suitable for client delivery?",
+ "Yes. Reflex is used to deliver real, long-lived applications inside enterprise client environments — not just demos.",
+ ),
+ (
+ "Do consultants need frontend or DevOps skills?",
+ "No. Reflex abstracts frontend and deployment so teams can focus on Python, analytics, and business logic.",
+ ),
+ (
+ "Can we reuse apps across multiple clients?",
+ "Absolutely. Many firms build reusable templates and accelerators on Reflex and customize them per engagement.",
+ ),
+ (
+ "Can Reflex support AI, analytics, and ML workloads?",
+ "Yes. Reflex runs in Python and integrates directly with models, data pipelines, and AI services.",
+ ),
+ (
+ "Can we deploy inside client infrastructure?",
+ "Yes. Reflex supports VPC, on-prem, and air-gapped deployments to meet strict client requirements.",
+ ),
+ ],
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/features_1.py b/pcweb/pages/use_cases/consulting/views/features_1.py
new file mode 100644
index 000000000..42a0ade7f
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/features_1.py
@@ -0,0 +1,69 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.features_1 import feature_card
+
+
+def features_1() -> rx.Component:
+ return rx.el.section(
+ feature_card(
+ "Chart03Icon",
+ "Client Dashboards & Executive Portals",
+ items=[
+ "Strategy and KPI dashboards",
+ "Transformation progress trackers",
+ "Financial and operational performance views",
+ "C-suite-ready reporting apps",
+ ],
+ ),
+ feature_card(
+ "ArtificialIntelligence04Icon",
+ "AI-Powered Advisory Tools",
+ items=[
+ "RAG chatbots over client documents",
+ "Internal research assistants",
+ "Scenario analysis and decision tools",
+ "AI copilots for consultants and clients",
+ ],
+ ),
+ feature_card(
+ "Layers01Icon",
+ "Internal Delivery Platforms",
+ items=[
+ "Engagement management tools",
+ "Knowledge-base portals",
+ "Staffing and utilization dashboards",
+ "IP libraries and accelerators",
+ ],
+ ),
+ feature_card(
+ "FlowConnectionIcon",
+ "Process & Workflow Automation",
+ items=[
+ "Data ingestion and validation apps",
+ "Audit and compliance workflows",
+ "Risk assessment tools",
+ "Custom approval and review systems",
+ ],
+ ),
+ feature_card(
+ "PackageIcon",
+ "Productized Consulting IP",
+ items=[
+ "Repeatable tools packaged across clients",
+ "White-labeled internal platforms",
+ "Subscription-style advisory software",
+ "Embedded analytics inside client orgs",
+ ],
+ ),
+ feature_card(
+ "ChartUpIcon",
+ "Analytics & Performance Tools",
+ items=[
+ "Custom BI dashboards",
+ "Predictive modeling interfaces",
+ "Data quality and monitoring apps",
+ "Business intelligence reporting",
+ ],
+ ),
+ class_name="grid lg:grid-cols-2 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-l border-slate-3 relative overflow-hidden border-t",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/features_2.py b/pcweb/pages/use_cases/consulting/views/features_2.py
new file mode 100644
index 000000000..f9d76e1c2
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/features_2.py
@@ -0,0 +1,58 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.features_2 import feature_card
+
+
+def features_2() -> rx.Component:
+ return rx.el.section(
+ feature_card(
+ "ZapIcon",
+ "Create initial prototypes easily",
+ "Build without engineering resources",
+ "Create initial prototype/gather requirements very quickly without engineering resources. Build full-stack applications from a prompt. Reflex AI generates Python backend logic, data pipelines, and UI components which are all editable, extensible, and ready for real client delivery. Use Reflex to:",
+ items=[
+ "Turn slideware into live applications",
+ "Prototype fast, then deploy to production without rewrites",
+ "Package IP into reusable, deployable tools",
+ ],
+ class_name="lg:border-b",
+ ),
+ feature_card(
+ "RepeatIcon",
+ "From Prototype to Production",
+ "No rebuilds required",
+ "Most consulting tools die as demos. Reflex apps are production-grade by default, meaning what you build for a pilot can be handed off, deployed, and operated long-term. Perfect for:",
+ items=[
+ "Proofs of concept",
+ "MVPs for client programs",
+ "Long-lived internal platforms",
+ "Commercialized advisory products",
+ ],
+ class_name="lg:border-b",
+ ),
+ feature_card(
+ "DashboardSpeed01Icon",
+ "10x Faster Delivery",
+ "No front-end teams needed",
+ "Reflex handles frontend, backend, state, and deployment automatically. Your teams stay in Python and focus on business logic, analytics, and outcomes — not React, infra glue, or UI frameworks.",
+ items=[
+ "Frontend, backend, state, and deployment automation",
+ "Python focus for business logic and analytics",
+ "No React, infra glue, or UI frameworks",
+ ],
+ ),
+ feature_card(
+ "DatabaseIcon",
+ "Built for Data-Heavy Work",
+ "Integrate with client systems",
+ "Reflex lets consulting teams seamlessly and securely integrate directly with a wide variety of client and third-party data sources, including:",
+ items=[
+ "Snowflake, Databricks, BigQuery",
+ "Postgres, SQL Server, Oracle",
+ "ERP, CRM, and operational systems",
+ "ML models, forecasting pipelines, optimization engines",
+ "APIs, flat files, and secure data rooms",
+ ],
+ ),
+ class_name="grid lg:grid-cols-2 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 relative overflow-hidden border-t lg:divide-x divide-slate-3 max-lg:divide-y",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/final_section.py b/pcweb/pages/use_cases/consulting/views/final_section.py
new file mode 100644
index 000000000..da7ed6d3d
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/final_section.py
@@ -0,0 +1,20 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.final_section import left_content, right_content
+
+
+def final_section() -> rx.Component:
+ return rx.el.section(
+ rx.el.div(
+ left_content(
+ "Turn Consulting Engagements Into Real Software",
+ "Deliver faster, differentiate your firm, and transform insights into production-grade applications with Reflex AI.",
+ ),
+ right_content(
+ "Build Your First Client App",
+ "Connect to client data sources and ship a working tool in days — production-ready, no JavaScript required.",
+ ),
+ class_name="flex xl:flex-row flex-col w-full rounded-2xl border border-m-slate-4 dark:border-m-slate-12 bg-white-1 dark:bg-m-slate-14 z-5 xl:divide-x divide-slate-3 max-xl:divide-y",
+ ),
+ class_name="mx-auto w-full max-w-[71.125rem] relative rounded-4xl border border-slate-4 backdrop-blur-[6px] bg-slate-2/48 p-4 flex z-1 max-lg:mb-6 -mb-px",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/hero.py b/pcweb/pages/use_cases/consulting/views/hero.py
new file mode 100644
index 000000000..0ecd9ab8d
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/hero.py
@@ -0,0 +1,44 @@
+import reflex as rx
+
+from pcweb.components.numbers_pattern import numbers_pattern
+from pcweb.pages.use_cases.common.hero import left_content, right_content
+
+
+def hero() -> rx.Component:
+ return rx.el.section(
+ numbers_pattern(
+ side="right",
+ class_name="lg:top-[65px] top-[45px] lg:h-[calc(100%-65px)] h-[calc(100%-45px)] max-lg:hidden",
+ ),
+ rx.el.div(
+ left_content(
+ "Build Client-Ready Enterprise Apps —",
+ " 10x Faster with Reflex AI",
+ "The fastest way for consulting firms to prototype and build secure, production-grade internal tools and client-facing applications using only Python. Go from idea to deployed app in days, not quarters, without front-end teams or rebuild cycles.",
+ "Book a Demo",
+ "Get Started Free",
+ ),
+ right_content(
+ [
+ (
+ "ZapIcon",
+ "Turn slideware into live applications in days, not quarters",
+ ),
+ (
+ "RepeatIcon",
+ "Prototype fast, then deploy to production without rewrites",
+ ),
+ (
+ "PythonIcon",
+ "Stay in Python—no React, no frontend teams required",
+ ),
+ (
+ "ShieldKeyIcon",
+ "Deploy inside client VPCs and on-prem for enterprise security",
+ ),
+ ],
+ ),
+ class_name="flex lg:flex-row flex-col lg:gap-20 gap-10 max-lg:items-center max-lg:justify-center max-lg:text-center",
+ ),
+ class_name="flex flex-col justify-center items-center gap-4 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 pb-[3rem] pt-32 lg:pt-[11.5rem] lg:pb-[7.5rem] relative lg:overflow-hidden overflow-hidden z-[1] lg:px-10",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/social_proof.py b/pcweb/pages/use_cases/consulting/views/social_proof.py
new file mode 100644
index 000000000..c0052abfd
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/social_proof.py
@@ -0,0 +1,39 @@
+import reflex as rx
+import reflex_ui as ui
+
+from pcweb.pages.use_cases.common.logos_carousel import logos_carousel
+
+LOGOS = [
+ "blueyonder",
+ "accenture",
+ "dnv",
+ "deloitte",
+ "ltim",
+ "ey",
+ "tcs",
+ "pwc",
+]
+
+
+def first_card(title: str) -> rx.Component:
+ return rx.el.div(
+ ui.icon(
+ "CheckmarkBadge02Icon",
+ class_name="text-m-slate-11 dark:text-m-slate-9 shrink-0",
+ ),
+ rx.el.span(
+ title,
+ class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium text-wrap",
+ ),
+ class_name="flex flex-row gap-2.5 items-center max-lg:justify-center lg:col-span-2 px-10 h-full max-lg:h-[10.75rem] max-lg:w-full w-full lg:border-r",
+ )
+
+
+def social_proof() -> rx.Component:
+ return rx.el.div(
+ first_card(
+ "Consulting firms choose Reflex to ship faster, differentiate engagements, and turn insights into real software."
+ ),
+ logos_carousel(LOGOS),
+ class_name="flex lg:flex-row flex-col justify-center items-center mx-auto w-full max-w-[64.19rem] lg:border border-slate-3 h-[10.75rem] z-1",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/stats.py b/pcweb/pages/use_cases/consulting/views/stats.py
new file mode 100644
index 000000000..d7dc0bf22
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/stats.py
@@ -0,0 +1,39 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.stats import stat_card
+
+
+def stats() -> rx.Component:
+ return rx.el.section(
+ stat_card(
+ "Self-host in client VPCs or on-prem",
+ "Deploy Reflex apps entirely within client-approved infrastructure for maximum security and compliance.",
+ accent=True,
+ ),
+ stat_card(
+ "No data leaves client infrastructure",
+ "All application data and processing remain within the client's secure environment at all times.",
+ accent=True,
+ ),
+ stat_card(
+ "Enterprise authentication & RBAC",
+ "Integrate with client identity providers and enforce role-based access control with SSO support.",
+ accent=True,
+ ),
+ stat_card(
+ "Auditability and observability built in",
+ "Complete logging of user actions, data access, and system events for compliance and security reviews.",
+ accent=True,
+ ),
+ stat_card(
+ "Compatible with regulated industries",
+ "Works with finance, healthcare, energy, and public sector compliance frameworks and security requirements.",
+ accent=True,
+ ),
+ stat_card(
+ "No vendor lock-in",
+ "Clients own the code and infrastructure completely, ensuring long-term control and flexibility.",
+ accent=True,
+ ),
+ class_name="grid lg:grid-cols-3 grid-cols-1 mx-auto w-full max-w-[64.19rem] border-slate-3 relative overflow-hidden border-t max-lg:divide-y lg:border-l",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/text_section_1.py b/pcweb/pages/use_cases/consulting/views/text_section_1.py
new file mode 100644
index 000000000..1a13d06d1
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/text_section_1.py
@@ -0,0 +1,10 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.text_section import text_section
+
+
+def text_section_1() -> rx.Component:
+ return text_section(
+ header="Consulting Firms Build their Client Apps with Reflex",
+ description="Consulting teams use Reflex to create reusable, client-ready applications with AI.",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/text_section_3.py b/pcweb/pages/use_cases/consulting/views/text_section_3.py
new file mode 100644
index 000000000..258a8c09d
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/text_section_3.py
@@ -0,0 +1,11 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.text_section import text_section
+
+
+def text_section_3() -> rx.Component:
+ return text_section(
+ header="The most powerful tool for Consulting Firms",
+ description="Build full-stack applications from a prompt. Reflex AI generates Python backend logic, data pipelines, and UI components which are all editable, extensible, and ready for real client delivery.",
+ class_name="border-t-0",
+ )
diff --git a/pcweb/pages/use_cases/consulting/views/text_section_4.py b/pcweb/pages/use_cases/consulting/views/text_section_4.py
new file mode 100644
index 000000000..39a07278a
--- /dev/null
+++ b/pcweb/pages/use_cases/consulting/views/text_section_4.py
@@ -0,0 +1,11 @@
+import reflex as rx
+
+from pcweb.pages.use_cases.common.text_section import text_section
+
+
+def text_section_4() -> rx.Component:
+ return text_section(
+ header="Designed for Enterprise Clients",
+ description="Reflex apps run entirely in client-approved environments, making them suitable for the most demanding enterprises. Reflex never sees client data. Ideal for consulting firms working with sensitive, regulated, or mission-critical systems.",
+ class_name="border-t-0",
+ )