diff --git a/apps/web/src/components/forms/pmf/OverviewResults.tsx b/apps/web/src/components/forms/pmf/OverviewResults.tsx index 1f0ab481ae..180bc086ab 100644 --- a/apps/web/src/components/forms/pmf/OverviewResults.tsx +++ b/apps/web/src/components/forms/pmf/OverviewResults.tsx @@ -63,7 +63,7 @@ export default function OverviewResults() {
-
+
-
+

Disappointment Level

-
+

Selected Segment

diff --git a/apps/web/src/components/forms/pmf/SuperhumanApproach.tsx b/apps/web/src/components/forms/pmf/SuperhumanApproach.tsx index ac0e0f076d..9af362d5af 100644 --- a/apps/web/src/components/forms/pmf/SuperhumanApproach.tsx +++ b/apps/web/src/components/forms/pmf/SuperhumanApproach.tsx @@ -4,6 +4,7 @@ import EmptyPageFiller from "@/components/EmptyPageFiller"; import LoadingSpinner from "@/components/LoadingSpinner"; import PMFThumb2 from "@/images/pmfthumb-2.webp"; import PMFThumb from "@/images/pmfthumb.webp"; +import Rahul from "@/images/rahulvohra.jpg"; import { useForm } from "@/lib/forms"; import { getOptionLabelMap, useSubmissions } from "@/lib/submissions"; import { Pie } from "@formbricks/charts"; @@ -13,7 +14,6 @@ import Link from "next/link"; import { useRouter } from "next/router"; import { useMemo, useState } from "react"; import FilterNavigation from "../shared/FilterNavigation"; -import { SubmissionCounter } from "../shared/SubmissionCounter"; const limitFields = ["role"]; @@ -56,54 +56,39 @@ export default function SegmentResults() { return (
-
-
-
-
- - - -
- -
-

Tutorials

-
- -
- {"PMF - -
-

- Superhuman built an engine to find Product-Market Fit -

-

firstround.com

-
-
- - - -
- {"PMF -
-

The Superhuman Product/Market Fit Engine

-

coda.io

-
-
- -
- +
+
{/* Double down on what they love*/} -
+
+
+ Rahul Vohra + +
+

+ The Superhuman Product-Market Fit Approach +

+

+ Rahul Vohra, the founder of Superhuman, had a problem. His team spent over a year + carefully crafting the perfect email client for high-performers. And yet, they + weren't exactly there yet... +

+ +

+ He looked for a method to rally his whole team around one goal: Moving closer to + Product-Market Fit. Every feature, every commit should make a difference. After extensive + research and experimentation, he came up with the{" "} + + 'Superhuman PMF Engine' + + . This overview will help you execute the same approach - in a fraction of the time. +

+
+
{submissions.length === 0 ? ( ) : ( <> -
-
+
+

All

({submissions.length} submissions)

-
+

Most disappointed segment

({filteredSubmissions.length} submissions) @@ -133,156 +118,187 @@ export default function SegmentResults() { />

-

- Double down on what they love -

-
-
-
- - How it works - +
+

+ Step 1: Double down on what they love +

+

+ Your first priority is making your happiest users happier. By deepening the value they + get from your product, you can make sure to not be taken over my competitors{" "} + + (like it happened to Mixpanel). + +

+ +
+
+ What is the main benefit you receive from our service?
-
-

- Also referred to as 'deepening the value'. Build what you're already - very happy users demand below: -

+
+
Response
+
Disappointment Level
+
Role
-
-
-
-
- What is the main benefit you receive from our service? -
-
-
Response
-
Disappointment Level
-
Role
-
- {lovers.length === 0 ? ( -
-

- You don’t have any submissions that fit this filter -

-

- Change your filters or come back when you have more submissions. -

-
- ) : ( -
- {lovers.map((submission) => ( - -
-
- {submission.data.mainBenefit || } -
-
- {submission.data.disappointment === "veryDisappointed" ? ( - - very disappointed - - ) : submission.data.disappointment === "notDisappointed" ? ( - - not disappointed - - ) : submission.data.disappointment === "somewhatDisappointed" ? ( - - somewhat disappointed - - ) : null} -
-
-
- {labelMap[submission.data.role] || } + {lovers.length === 0 ? ( +
+

+ You don’t have any submissions that fit this filter. +

+

+ Change your filters or come back when you have more submissions. +

+
+ ) : ( +
+ {lovers.map((submission) => ( + +
+
+ {submission.data.mainBenefit || } +
+
+ {submission.data.disappointment === "veryDisappointed" ? ( + + very disappointed + + ) : submission.data.disappointment === "notDisappointed" ? ( + + not disappointed + + ) : submission.data.disappointment === "somewhatDisappointed" ? ( + + somewhat disappointed + + ) : null} +
+
+
+ {labelMap[submission.data.role] || } +
-
- - ))} -
- )} -
-

- Fix what’s holding them back -

-
-
-
- - How it works - -
-
-

- To make more users “very disappointed” when your product were to go away, you build - what’s holding the “somewhat disappointed” users back. -

-
+ + ))} +
+ )}
-
-
- How can we improve our service for you? -
-
-
Response
-
Disappointment Level
-
Role
-
- {improvers.length === 0 ? ( -
-

- You don’t have any submissions that fit this filter -

-

- Change your filters or come back when you have more submissions. -

+ +
+

+ Step 2: Fix what's holding them back +

+

+ Your second priority is to increase the amount of people who would be 'very + disappointed' when they could no longer use your product. This helps you craft a + product for a wider audience. +

+ +
+
+ How can we improve our service for you?
- ) : ( -
- {improvers.map((submission) => ( - -
-
- {submission.data.improvement || } -
-
- {submission.data.disappointment === "veryDisappointed" ? ( - - very disappointed - - ) : submission.data.disappointment === "notDisappointed" ? ( - - not disappointed - - ) : submission.data.disappointment === "somewhatDisappointed" ? ( - - somewhat disappointed - - ) : null} -
-
-
- {labelMap[submission.data.role] || } +
+
Response
+
Disappointment Level
+
Role
+
+ + {improvers.length === 0 ? ( +
+

+ You don’t have any submissions that fit this filter +

+

+ Change your filters or come back when you have more submissions. +

+
+ ) : ( +
+ {improvers.map((submission) => ( + +
+
+ {submission.data.improvement || } +
+
+ {submission.data.disappointment === "veryDisappointed" ? ( + + very disappointed + + ) : submission.data.disappointment === "notDisappointed" ? ( + + not disappointed + + ) : submission.data.disappointment === "somewhatDisappointed" ? ( + + somewhat disappointed + + ) : null} +
+
+
+ {labelMap[submission.data.role] || } +
-
- - ))} -
- )} + + ))} +
+ )} +
)}
+ +
+ +
+ {"PMF + +
+

+ Superhuman built an engine to find Product-Market Fit +

+

+ firstround.com{" "} + In-depth Guide +

+
+
+ + + +
+ {"PMF +
+

The Superhuman Product/Market Fit Engine

+

+ coda.ioTutorial +

+
+
+ + + +
diff --git a/apps/web/src/components/forms/shared/FilterNavigation.tsx b/apps/web/src/components/forms/shared/FilterNavigation.tsx index cc4c07a617..029a3959cd 100644 --- a/apps/web/src/components/forms/shared/FilterNavigation.tsx +++ b/apps/web/src/components/forms/shared/FilterNavigation.tsx @@ -194,7 +194,7 @@ export default function FilterNavigation({
{filters.map((filter) => (
-
+

{camelToTitle(filter.name)}

{filter.options.map((option) => ( @@ -208,7 +208,7 @@ export default function FilterNavigation({ option.active || option.pinned ? "bg-slate-200 text-slate-900" : "text-slate-600 hover:bg-slate-100 hover:text-slate-900", - "group flex w-full items-center rounded-md px-3 py-2 text-sm font-medium" + "group my-1 flex w-full items-center rounded-md px-3 py-1.5 text-sm font-medium" )} aria-current={option.active ? "page" : undefined}>
diff --git a/apps/web/src/components/forms/shared/SubmissionCounter.tsx b/apps/web/src/components/forms/shared/SubmissionCounter.tsx index d074e2b28e..92e2d8d907 100644 --- a/apps/web/src/components/forms/shared/SubmissionCounter.tsx +++ b/apps/web/src/components/forms/shared/SubmissionCounter.tsx @@ -1,6 +1,6 @@ export function SubmissionCounter({ numFilteredSubmissions, numTotalSubmissions }) { return ( -
+
{numFilteredSubmissions} responses
diff --git a/apps/web/src/images/rahulvohra.jpg b/apps/web/src/images/rahulvohra.jpg new file mode 100644 index 0000000000..d5c4507f04 Binary files /dev/null and b/apps/web/src/images/rahulvohra.jpg differ