diff --git a/front/components/home/ContentBlocks.tsx b/front/components/home/ContentBlocks.tsx index 04f19be5a477..7be6ca65d220 100644 --- a/front/components/home/ContentBlocks.tsx +++ b/front/components/home/ContentBlocks.tsx @@ -1,16 +1,9 @@ -import { ArrowRightIcon, Button, RocketIcon } from "@dust-tt/sparkle"; +import { ArrowRightSIcon, Button, RocketIcon } from "@dust-tt/sparkle"; import Image from "next/image"; import Link from "next/link"; import type { ReactNode } from "react"; import React from "react"; -import { - Carousel, - CarouselContent, - CarouselItem, - CarouselNext, - CarouselPrevious, -} from "@app/components/home/Carousel"; import { Grid, H1, @@ -20,10 +13,10 @@ import { P, Strong, } from "@app/components/home/ContentComponents"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; -import { SolutionSectionAssistantBlock } from "@app/components/home/SolutionSection"; import { classNames } from "@app/lib/utils"; +import type { ROIProps } from "./content/Solutions/configs/utils"; + interface ImgBlockProps { children?: React.ReactNode; title: React.ReactNode; @@ -51,7 +44,7 @@ export const ImgBlock: React.FC = ({ return (
-
+
{children ? children : null}
@@ -149,7 +142,7 @@ export const HeaderContentBlock = ({ className={classNames( "sm:pt-18 flex flex-col justify-end gap-12 pt-12 lg:pt-36", "col-span-12", - "sm:col-span-12", + "sm:col-span-12 md:col-span-12", "lg:col-span-8 lg:col-start-2", "xl:col-span-8 xl:col-start-2", "2xl:col-start-3" @@ -172,19 +165,21 @@ export const HeaderContentBlock = ({

)} {hasCTA && ( -
+
)} @@ -205,7 +200,7 @@ interface MetricComponentProps { export const MetricSection = ({ metrics, from, to }: MetricComponentProps) => (
( -
+
( />

{name} @@ -261,7 +256,7 @@ export const QuoteSection = ({ quote, logo, name, title }: QuoteProps) => (

-
+
“ {quote} ”
@@ -269,72 +264,173 @@ export const QuoteSection = ({ quote, logo, name, title }: QuoteProps) => ( interface CarousselContentBlockProps { title: ReactNode; - subtitle?: ReactNode; - description?: ReactNode; - assistants: SolutionSectionAssistantBlockProps[]; from: string; to: string; border: string; href: string; + bulletPoints: string[]; + image: string; + quote?: QuoteProps; + roi?: ROIProps; } export const CarousselContentBlock = ({ title, - subtitle, - description, - assistants, from, to, border, href, -}: CarousselContentBlockProps) => ( -
-
-

{"Dust for " + title}

-
-

{subtitle}

-

- {description} -

-
-
- -
+
+ {/* Desktop-only image - right column */} +
+
+ {title +
+
- - - {assistants.map((block, index) => ( - - - - ))} - -
- - -
-
-
-); + ); +}; diff --git a/front/components/home/content/Product/MetricsSection.tsx b/front/components/home/content/Product/MetricsSection.tsx index 74f4e4ddc91b..53d3eaa5e2b8 100644 --- a/front/components/home/content/Product/MetricsSection.tsx +++ b/front/components/home/content/Product/MetricsSection.tsx @@ -1,12 +1,10 @@ -import React from "react"; - // import { MetricSection } from "@app/components/home/ContentBlocks"; import { MetricSection } from "../../ContentBlocks"; const METRICS = { metrics: [ { - value: "80%", + value: "90%", description: <>weekly active users, logo: "/static/landing/logos/alan.png", }, diff --git a/front/components/home/content/Product/VerticalSection.tsx b/front/components/home/content/Product/VerticalSection.tsx index 1546e77cf535..8c311a49f23c 100644 --- a/front/components/home/content/Product/VerticalSection.tsx +++ b/front/components/home/content/Product/VerticalSection.tsx @@ -10,20 +10,26 @@ import { H2, P } from "@app/components/home/ContentComponents"; import { CustomerCaroussel } from "@app/pages/home/solutions/customer-support"; import { DataCaroussel } from "@app/pages/home/solutions/data-analytics"; import { EngineeringCaroussel } from "@app/pages/home/solutions/engineering"; +import { ITCaroussel } from "@app/pages/home/solutions/it"; import { KnowledgeCaroussel } from "@app/pages/home/solutions/knowledge"; +import { LegalCaroussel } from "@app/pages/home/solutions/legal"; import { MarketingCaroussel } from "@app/pages/home/solutions/marketing"; -import { RecruitingCaroussel } from "@app/pages/home/solutions/recruiting-people"; +import { ProductivityCaroussel } from "@app/pages/home/solutions/productivity"; +import { PeopleCaroussel } from "@app/pages/home/solutions/recruiting-people"; import { SalesCaroussel } from "@app/pages/home/solutions/sales"; export function VerticalSection() { const carouselSections = [ - { title: "Customer Support", component: CustomerCaroussel }, { title: "Sales", component: SalesCaroussel }, + { title: "Customer Support", component: CustomerCaroussel }, { title: "Marketing", component: MarketingCaroussel }, - { title: "Recruiting", component: RecruitingCaroussel }, { title: "Engineering", component: EngineeringCaroussel }, - { title: "Knowledge", component: KnowledgeCaroussel }, { title: "Data Analytics", component: DataCaroussel }, + { title: "Knowledge", component: KnowledgeCaroussel }, + { title: "IT", component: ITCaroussel }, + { title: "Legal", component: LegalCaroussel }, + { title: "People", component: PeopleCaroussel }, + { title: "Productivity", component: ProductivityCaroussel }, ]; const [api, setApi] = React.useState(null); diff --git a/front/components/home/content/Solutions/configs/dataConfig.tsx b/front/components/home/content/Solutions/configs/dataConfig.tsx new file mode 100644 index 000000000000..0de3d947b254 --- /dev/null +++ b/front/components/home/content/Solutions/configs/dataConfig.tsx @@ -0,0 +1,190 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Data & Analytics", + title: <>Turn Data Into Business Decisions, + from: "from-purple-200", + to: "to-purple-500", + description: ( + <> + Transform complex data into instant insights, automate queries, and + democratize analytics across teams. + + ), + bulletPoints: [ + "Enable teams to analyze data independently", + "Write SQL queries from natural language", + "Create instant data visualizations and analysis", + "Answer data questions with documentation context", + ], + image: "/static/landing/data-analytics/analyst.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/data-analytics/data1.png", + alt: "Data Visual 1", + depth: -30, + }, + { + src: "/static/landing/data-analytics/data2.png", + alt: "Data Visual 2", + depth: -10, + }, + { + src: "/static/landing/data-analytics/data3.png", + alt: "Data Visual 3", + depth: 20, + }, + { + src: "/static/landing/data-analytics/data4.png", + alt: "Data Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Reduce toil, scale data education and deepen exploration", + items: [ + { + icon: MagicIcon, + title: "Focus on insights", + description: + "Maximize analysis time by automating query writing and data exploration.", + }, + { + icon: CheckCircleIcon, + title: "Accelerate answers", + description: + "Instantly transform business questions into accurate queries and visualizations.", + }, + { + icon: UserGroupIcon, + title: "Democratize data", + description: + "Turn complex data models into accessible insights for the entire organization.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "90%", + description: <>faster RFP response times, + }, + { + value: "8h", + description: <> saved weekly per rep for selling, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "Self-serve analytics", + content: + "Execute complex data queries and generate visualizations automatically to answer business questions instantly.", + images: ["/static/landing/data-analytics/analyst.png"], + }, + { + title: "SQL assistant", + content: + "Generate, debug and optimize SQL queries that align with your business logic and data models.", + images: ["/static/landing/data-analytics/sqlWriter.png"], + }, + { + title: "Data catalog", + content: + "Navigate your entire data ecosystem with instant access to schemas and relationships across tables.", + images: ["/static/landing/data-analytics/dataCatalog.png"], + }, + { + title: "Data runbooks", + content: + "Access and understand data team processes and documentation to streamline operations and troubleshooting.", + images: ["/static/landing/data-analytics/dataDoc.png"], + }, + ], +}; + +export const Quote: QuoteProps = { + quote: + "Thanks to what we've implemented at Alan, in less than three question iterations, I can craft the perfect SQL query I need and get the context behind it.", + name: "Vincent Delagabbe", + title: "Software Engineer at Alan", + logo: "/static/landing/logos/alan.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/9u1uft5pg7?web_component=true&seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "20%+ productivity gains in Sales: Insights from Alan and Payfit", + content: + "Dust agents significantly lowered their acquisition costs, allowing them to hire more salespeople.", + href: "https://blog.dust.tt/generative-ai-insights-alan-payfit-leaders/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/Founder.jpg", + }, + { + title: "Kyriba's RFP Agent for improving pre-sales efficiency", + content: + "43% of Kyriba employees save more than 3 hours weekly leveraging Dust for RFPs.", + href: "https://blog.dust.tt/kyriba-accelerating-innovation-with-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2024/10/kyriba_dust.jpg", + }, + { + title: "Lifen uses Dust AI agents to boost team productivity", // Soon to be replaced with Clay for RFP? + content: + "Lifen uses Dust AI agents to boost team productivity and save hours of work each week.", + href: "https://blog.dust.tt/customer-story-lifen/", + src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", + }, +]; diff --git a/front/components/home/content/Solutions/configs/engineeringConfig.tsx b/front/components/home/content/Solutions/configs/engineeringConfig.tsx new file mode 100644 index 000000000000..019b5a787191 --- /dev/null +++ b/front/components/home/content/Solutions/configs/engineeringConfig.tsx @@ -0,0 +1,197 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, + ROIProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Engineering", + title: <>Ship Better Code, Reduce Interruptions, + from: "from-blue-200", + to: "to-blue-500", + description: ( + <> + Streamline incident response, automate documentation, and keep your team + focused on building. + + ), + bulletPoints: [ + "Get coding support and troubleshooting with relevant context", + "Speed up incident resolution and communication", + "Create instant team updates", + "Surface relevant context and solutions from past incidents", + ], + image: "/static/landing/engineering/incidentHandling.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/engineering/eng1.png", + alt: "Engineering Visual 1", + depth: -30, + }, + { + src: "/static/landing/engineering/eng2.png", + alt: "Engineering Visual 2", + depth: -10, + }, + { + src: "/static/landing/engineering/eng3.png", + alt: "Engineering Visual 3", + depth: 20, + }, + { + src: "/static/landing/engineering/eng4.png", + alt: "Engineering Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Amplify your engineering team's capabilities ", + items: [ + { + icon: MagicIcon, + title: "Focus on building", + description: + "Maximize engineering time by automating documentation and support tasks.", + }, + { + icon: CheckCircleIcon, + title: "Streamline incident handling", + description: + "Instantly surface relevant context and solutions to resolve issues faster.", + }, + + { + icon: UserGroupIcon, + title: "Facilitate team operations", + description: "Focus on coding, not writing updates or pull requests.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "20%", + description: <>faster project completion at Alan, + }, + { + value: "2h", + description: <> saved per incident, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "Debugging", + content: + "Fix code errors by retrieving internal documentation, updates, and Slack discussions. Stay focused on your core work.", + images: ["/static/landing/engineering/debuggingAgent.png"], + }, + { + title: "Incident handling", + content: + "Search runbooks and past incidents to speed up resolution, while automatically generating reports and communications.", + images: ["/static/landing/engineering/incidentHandling.png"], + }, + { + title: "Team updates", + content: + "Generate concise summaries of code changes, incidents, and technical discussions to keep everyone aligned.", + images: ["/static/landing/engineering/teamUpdates.png"], + }, + { + title: "External doc parser", + content: + "Chat with any technical documentation to quickly find answers and follow step-by-step guidance.", + images: ["/static/landing/engineering/docParser.png"], + }, + ], +}; + +export const ROI: ROIProps = { + number: "20%", + subtitle: "faster project completion", + logo: "/static/landing/logos/alan.png", +}; + +export const Quote: QuoteProps = { + quote: + "It's really become a reflex now to ask a Dust agent. With just two keystrokes, it instantly surfaces exactly the context I need - whether from code, documentation, or overlooked team discussions.", + name: "Vincent Delagabbe", + title: "Software Engineer at Alan", + logo: "/static/landing/logos/alan.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/6z5rtwsuvo?web_component=true&seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "Alan's engineering team speeds up projects 20% with Dust", + content: + "Alan uses Dust to improve efficiency in the context of an expanding codebase and documentation.", + href: "https://blog.dust.tt/integrating-ai-workflows-alan/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_alan-1.png", + }, + // { + // title: "November Five's journey to minimizing routine tasks with Dust", + // content: + // "Discover how November Five accelerates work with Dust, turning 3-hour tasks into 30 minutes.", + // href: "https://blog.dust.tt/november-five-ai-transformation-dust/", + // src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_november_five.png", + // }, + // { + // title: "Lifen uses Dust AI agents to boost team productivity", // Soon to be replaced with Clay for RFP? + // content: + // "Lifen uses Dust AI agents to boost team productivity and save hours of work each week.", + // href: "https://blog.dust.tt/customer-story-lifen/", + // src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", + // }, +]; diff --git a/front/components/home/content/Solutions/configs/itConfig.tsx b/front/components/home/content/Solutions/configs/itConfig.tsx new file mode 100644 index 000000000000..019452160c83 --- /dev/null +++ b/front/components/home/content/Solutions/configs/itConfig.tsx @@ -0,0 +1,189 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "IT", + title: <>Automate Support, Empower Employees, + from: "from-amber-200", + to: "to-amber-500", + description: ( + <> + Scale IT support, automate routine requests, and keep your IT desk clean. + + ), + bulletPoints: [ + "Answer employee IT questions instantly", + "Guide system administrators through troubleshooting", + "Streamline procurement processes", + "Surface IT trends for proactive improvements", + ], + image: "/static/landing/it/itHelpdesk.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/it/it1.png", + alt: "IT Visual 1", + depth: -30, + }, + { + src: "/static/landing/it/it2.png", + alt: "IT Visual 2", + depth: -10, + }, + { + src: "/static/landing/it/it3.png", + alt: "IT Visual 3", + depth: 20, + }, + { + src: "/static/landing/it/it4.png", + alt: "IT Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Create IT agents that knows your systems inside out", + items: [ + { + icon: MagicIcon, + title: "Focus on complex tasks", + description: + "Maximize IT team efficiency by automating routine support requests.", + }, + { + icon: CheckCircleIcon, + title: "Speed up resolution", + description: + "Instantly provide accurate solutions using your documented knowledge base.", + }, + { + icon: UserGroupIcon, + title: "Empower employees", + description: + "Turn IT support into a self-service experience that scales across the organization.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "30%", + description: <>fewer IT tickets, + }, + { + value: "4h", + description: <> saved weekly filling RFP, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "IT helpdesk", + content: + "Answer common employee IT questions instantly using your internal documentation and policies.", + images: ["/static/landing/it/itHelpdesk.png"], + }, + { + title: "IT ops assistant", + content: + "Support system administrators with troubleshooting guidance based on your documented procedures.", + images: ["/static/landing/it/itOps.png"], + }, + { + title: "Procurement helper", + content: + "Guide employees through procurement processes and requirements with automated assistance.", + images: ["/static/landing/it/procureHelp.png"], + }, + { + title: "Ticket analytics", + content: + "Analyze support patterns to identify improvement opportunities and optimize documentation.", + images: ["/static/landing/it/itInsights.png"], + }, + ], +}; + +export const Quote: QuoteProps = { + quote: + "One of the things that impressed me about Dust is that all the use cases around internal and external support for teams who need to maintain processes are impressive. Being able to call an agent that parses all the knowledge is a huge pain reliever.", + name: "Raphael Brousse ", + title: "VP Operations at Lifen", + logo: "/static/landing/logos/lifen.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/4a4bjtxdpf?seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "Lifen Saves Two Hours per Week per Employee with Dust", // Soon to be replaced with Clay for RFP? + content: + "Lifen uses Dust AI agents to boost team productivity and save hours of work each week.", + href: "https://blog.dust.tt/customer-story-lifen/", + src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", + }, + { + title: "20%+ productivity gains in Sales: Insights from Alan and Payfit", + content: + "Dust agents significantly lowered their acquisition costs, allowing them to hire more salespeople.", + href: "https://blog.dust.tt/generative-ai-insights-alan-payfit-leaders/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/Founder.jpg", + }, + { + title: "Kyriba's RFP Agent for improving pre-sales efficiency", + content: + "43% of Kyriba employees save more than 3 hours weekly leveraging Dust for RFPs.", + href: "https://blog.dust.tt/kyriba-accelerating-innovation-with-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2024/10/kyriba_dust.jpg", + }, +]; diff --git a/front/components/home/content/Solutions/configs/knowledgeConfig.tsx b/front/components/home/content/Solutions/configs/knowledgeConfig.tsx new file mode 100644 index 000000000000..33e78e64abe5 --- /dev/null +++ b/front/components/home/content/Solutions/configs/knowledgeConfig.tsx @@ -0,0 +1,191 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Knowledge", + title: <>Make Company Knowledge Instantly Accessible., + from: "from-emerald-200", + to: "to-emerald-500", + description: ( + <> + Transform organizational knowledge into structured insights and empower + teams with instant access to precise information. + + ), + bulletPoints: [ + "Access company-wide knowledge instantly", + "Find product information across knowledge bases", + "Get answers in Slack with relevant context and citations", + "Surface blockers from project discussions", + ], + image: "/static/landing/knowledge/askacme.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/knowledge/knowledge1.png", + alt: "Knowledge Visual 1", + depth: -30, + }, + { + src: "/static/landing/knowledge/knowledge2.png", + alt: "Knowledge Visual 2", + depth: -10, + }, + { + src: "/static/landing/knowledge/knowledge3.png", + alt: "Knowledge Visual 3", + depth: 20, + }, + { + src: "/static/landing/knowledge/knowledge4.png", + alt: "Knowledge Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Transform your company knowledge into actionable intelligence", + items: [ + { + icon: MagicIcon, + title: "Drop tribal knowledge", + description: + "Maximize productivity by making all company knowledge instantly accessible.", + }, + { + icon: CheckCircleIcon, + title: "Accelerate learning", + description: + "Turn scattered information into organized, searchable knowledge for everyone.", + }, + { + icon: UserGroupIcon, + title: "Scale expertise", + description: + "Make every team member an expert with instant access to collective knowledge.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "90%", + description: <>weekly users at Alan, + }, + { + value: "43%", + description: <>of Kyriba employees save more than 3 hours weekly, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "Team knowledge", + content: + "Uncover tribal knowledge and answer employee questions with internal documentation and communication.", + images: ["/static/landing/knowledge/askacme.png"], + }, + { + title: "Product expert", + content: + "Provide comprehensive product information and documentation support to all employees.", + images: ["/static/landing/knowledge/productguru.png"], + }, + { + title: "Activity digests", + content: + "Generate automated summaries of company activities, discussions, and project status updates.", + images: ["/static/landing/knowledge/projectstatus.png"], + }, + { + title: "Industry radar", + content: + "Track and structure relevant news and market information into actionable insights and custom reports.", + images: ["/static/landing/knowledge/aidigest.png"], + }, + ], +}; + +export const Quote: QuoteProps = { + quote: + "It became evident that Dust could serve as a knowledgeable buddy for all staff, enhancing productivity whether you're newly onboarded or a veteran team member.", + name: "Boris Lipiainen ", + title: "Chief Product and Technology Officer at Kyriba", + logo: "/static/landing/logos/kyriba.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/qtnvwgyt0o?web_component=true&seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "Kyriba's adoption of Dust across all functions", + content: + "43% of Kyriba employees save more than 3 hours weekly leveraging Dust for RFPs.", + href: "https://blog.dust.tt/kyriba-accelerating-innovation-with-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2024/10/kyriba_dust.jpg", + }, + { + title: + "PayFit Accelerates Content Creation and Knowledge Sharing with Dust", + content: + "PayFit leverages Dust AI assistants to improve their internal processes across the board.", + href: "https://blog.dust.tt/dust-ai-payfit-efficiency/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_payfit.png", + }, + { + title: "November Five's journey to minimizing routine tasks with Dust", + content: + "Discover how November Five accelerates work with Dust, turning 3-hour tasks into 30 minutes.", + href: "https://blog.dust.tt/november-five-ai-transformation-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_november_five.png", + }, +]; diff --git a/front/components/home/content/Solutions/configs/legalConfig.tsx b/front/components/home/content/Solutions/configs/legalConfig.tsx new file mode 100644 index 000000000000..c1d304888b61 --- /dev/null +++ b/front/components/home/content/Solutions/configs/legalConfig.tsx @@ -0,0 +1,193 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Legal", + title: <>Accelerate Legal Operations and Compliance, + from: "from-sky-200", + to: "to-sky-500", + description: ( + <> + Assist your teams on legal or compliance reviews, and make legal support + more self-served across your organization. + + ), + bulletPoints: [ + "Get instant legal guidance and answers", + "Review contracts with expert insights", + "Navigate legal research efficiently", + "Generate compliant legal documents", + ], + image: "/static/landing/legal/legalreviewer.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/legal/legal1.png", + alt: "Legal Visual 1", + depth: -30, + }, + { + src: "/static/landing/legal/legal2.png", + alt: "Legal Visual 2", + depth: -10, + }, + { + src: "/static/landing/legal/legal3.png", + alt: "Legal Visual 3", + depth: 20, + }, + { + src: "/static/landing/legal/legal4.png", + alt: "Legal Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Transform your legal operations into strategic advantage", + items: [ + { + icon: MagicIcon, + title: "Focus on expertise", + description: + "Maximize lawyer time by automating routine legal guidance and reviews.", + }, + { + icon: CheckCircleIcon, + title: "Ensure compliance", + description: + "Instantly verify requirements and stay current with regulatory changes.", + }, + { + icon: UserGroupIcon, + title: "Scale legal support", + description: + "Turn legal expertise into accessible guidance for the entire organization.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "50%", + description: <>time saved on legal tasks, + }, + { + value: "80%", + description: <>first level legal answers deflected, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "Legal helpdesk", + content: + "Provide team members instant legal guidance using your approved policies, documentation and external sources.", + images: ["/static/landing/legal/asklegal.png"], + }, + { + title: "Legal review", + content: + "Analyze contracts or RFPs automatically for compliance and risk, highlighting key terms and obligations.", + images: ["/static/landing/legal/legalreviewer.png"], + }, + { + title: "Legal research and monitoring", + content: + "Navigate legal databases and documentation to surface relevant precedents. Monitor regulation updates for compliance check.", + images: ["/static/landing/legal/regulatorywatch.png"], + }, + + { + title: "Document creation", + content: + "Generate legal documents and agreements using pre-approved templates and clauses.", + images: ["/static/landing/legal/contractwriter.png"], + }, + ], +}; + +export const Quote: QuoteProps = { + quote: + "Dust transformed our privacy reviews. It handles compliance checks, suggests improvements, and drafts communications. It both cuts our review time and helps pressure-test our legal interpretations.", + name: "Thomas Adhumeau", + title: "Chief Privacy Officer at Didomi", + logo: "/static/landing/logos/didomi.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/zzbhe95pvz?seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: + "50% Time Savings in Legal: How Didomi's CPO Transformed Privacy Compliance", + content: + "Dust AI agents cut their legal team's workload in half, enabling them to scale operations across multiple countries without additional headcount.", + href: "https://blog.dust.tt/how-thomas-uses-ai-assistants-to-manage-legal-and-data-privacy-at-didomi/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_didomi.png", + }, + { + title: + "50,000 Hours Saved: How Qonto Revolutionized Compliance and Risk Assessment with AI", + content: + "Germi, Qonto's AI assistant, analyzes German industry codes and screens prohibited activities, automating compliance checks across European markets.", + href: "https://blog.dust.tt/qonto-dust-ai-partnership/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_qonto.png", + }, + // { + // title: "Lifen uses Dust AI agents to boost team productivity", // Soon to be replaced with Clay for RFP? + // content: + // "Lifen uses Dust AI agents to boost team productivity and save hours of work each week.", + // href: "https://blog.dust.tt/customer-story-lifen/", + // src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", + // }, +]; diff --git a/front/components/home/content/Solutions/configs/marketingConfig.tsx b/front/components/home/content/Solutions/configs/marketingConfig.tsx new file mode 100644 index 000000000000..a28d93bf8c6c --- /dev/null +++ b/front/components/home/content/Solutions/configs/marketingConfig.tsx @@ -0,0 +1,197 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, + ROIProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Marketing", + title: <>Create On-Brand Content At Scale, + from: "from-amber-200", + to: "to-amber-500", + description: ( + <> + Scale content production, maintain brand consistency, and optimize reach + across channels. + + ), + bulletPoints: [ + "Localize content in multiple languages with brand consistency", + "Draft high-quality customer stories following company templates", + "Create compelling social media copy", + "Monitor industry and competitor news", + ], + image: "/static/landing/marketing/crossMedia.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/marketing/marketing1.png", + alt: "Marketing Visual 1", + depth: -30, + }, + { + src: "/static/landing/marketing/marketing2.png", + alt: "Marketing Visual 2", + depth: -10, + }, + { + src: "/static/landing/marketing/marketing3.png", + alt: "Marketing Visual 3", + depth: 20, + }, + { + src: "/static/landing/marketing/marketing4.png", + alt: "Marketing Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Elevate your content strategy to new heights", + items: [ + { + icon: MagicIcon, + title: "Focus on strategy", + description: + "Maximize impact by automating content creation and optimization tasks.", + }, + { + icon: CheckCircleIcon, + title: "Ensure consistency", + description: + "Maintain perfect brand alignment across all content and communication channels.", + }, + { + icon: UserGroupIcon, + title: "Scale production", + description: + "Transform your content workflow into an efficient, brand-compliant machine.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "70%", + description: <>time reduction in localization, + }, + { + value: "5X", + description: <> brand-compliant copy generation, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "Content localization", + content: + "Translate and adapt content across languages while maintaining brand voice and cultural relevance.", + images: ["/static/landing/marketing/localizer.png"], + }, + { + title: "Content optimization", + content: + "Transform raw content into polished, SEO-optimized pieces that align with brand guidelines.", + images: ["/static/landing/marketing/contentOptimizer.png"], + }, + { + title: "Social media cross-posting", + content: + "Create engaging UX and social media content that consistently reflects your brand identity.", + images: ["/static/landing/marketing/crossMedia.png"], + }, + { + title: "Market intelligence", + content: + "Monitor market movements and competitor activities to inform your content strategy and battle cards.", + images: ["/static/landing/marketing/aiNewsletter.png"], + }, + ], +}; + +export const ROI: ROIProps = { + number: "70%", + subtitle: "time reduction in localization", + logo: "/static/landing/logos/qonto.png", +}; + +export const Quote: QuoteProps = { + quote: + "Dust is not just a tool - it's like having an extra team member who knows your brand voice, can handle recurring tasks, and helps you tackle new challenges. I couldn't do half of my job without it, especially with tight deadlines and a small team.", + name: "Valentine Chelius", + title: "Head of Marketing at Fleet", + logo: "/static/landing/logos/fleet.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/z8ky9a7ugn?seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "How Qonto Achieved 70% Faster Localization with Dust", + content: + "Qonto's Tolki assistant serves as a virtual polyglot, helping the content team localize content while maintaining brand voice and regional standards.", + href: "https://blog.dust.tt/qonto-dust-ai-partnership/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_qonto.png", + }, + { + title: "Building a Marketing Engine from Scratch at Fleet", + content: + "With just two interns, Valentine created a scalable marketing operation using Dust's AI capabilities for content and brand management.", + href: "https://blog.dust.tt/how-valentine-head-of-marketing-at-fleet-uses-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_fleet.png", + }, + // { + // title: "Lifen uses Dust AI agents to boost team productivity", // Soon to be replaced with Clay for RFP? + // content: + // "Lifen uses Dust AI agents to boost team productivity and save hours of work each week.", + // href: "https://blog.dust.tt/customer-story-lifen/", + // src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", + // }, +]; diff --git a/front/components/home/content/Solutions/configs/peopleConfig.tsx b/front/components/home/content/Solutions/configs/peopleConfig.tsx new file mode 100644 index 000000000000..4f561501d422 --- /dev/null +++ b/front/components/home/content/Solutions/configs/peopleConfig.tsx @@ -0,0 +1,186 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Recruiting & People", + title: <>Streamline Operations, Focus on People, + from: "from-blue-200", + to: "to-blue-500", + description: ( + <>Expedite HR operations and focus on what matters most - people. + ), + bulletPoints: [ + "Answer recurring HR questions with information from your policies", + "Onboard new hires through company processes and documentation", + "Guide managers to deliver quality feedback based on your company guidelines", + ], + image: "/static/landing/hr/askhr.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/hr/hr1.png", + alt: "HR Visual 1", + depth: -30, + }, + { + src: "/static/landing/hr/hr2.png", + alt: "HR Visual 2", + depth: -10, + }, + { + src: "/static/landing/hr/hr3.png", + alt: "HR Visual 3", + depth: 20, + }, + { + src: "/static/landing/hr/hr4.png", + alt: "HR Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Transform HR operations into strategic impact", + items: [ + { + icon: MagicIcon, + title: "Scale HR knowledge", + description: + "Turn policies into instant answers, enabling employee self-service.", + }, + { + icon: CheckCircleIcon, + title: "Save HR time", + description: + "Automate routine tasks to invest more time in people development.", + }, + { + icon: UserGroupIcon, + title: "Support managers", + description: + "Deploy consistent coaching and feedback across all management levels.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "100%", + description: <>daily active users in HR at Alan, + }, + { + value: "30%", + description: <>time savings on employee questions, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "HR helpdesk", + content: + "Answer employee questions instantly using your HR policies and documented processes.", + images: ["/static/landing/hr/askhr.png"], + }, + { + title: "Recruiting assistant", + content: + "Streamline candidate screening, communications, and interview preparation with automated support.", + images: ["/static/landing/hr/interviewnotes.png"], + }, + { + title: "Manager coach", + content: + "Guide managers through feedback and reviews using company guidelines and best practices.", + images: ["/static/landing/hr/reviewhelper.png"], + }, + { + title: "Onboarding guide", + content: + "Provide new employees with personalized guidance through company processes and culture.", + images: ["/static/landing/hr/onboardingbuddy.png"], + }, + ], +}; + +export const Quote: QuoteProps = { + quote: + "We asked ourselves for years: what if your team had 20% more time? Dust has made it possible, empowering our employees to work smarter, innovate, and push boundaries.", + name: "Matthieu Birach ", + title: "Chief People Officer at Doctolib", + logo: "/static/landing/logos/doctolib.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/eu73efeak9?seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "30% time savings in HR: How Alan's People team scaled with Dust", + content: + "Alan's HR team quadrupled AI adoption and saved 30% of time spent on employee queries by deploying custom Dust agents for people operations.", + href: "https://blog.dust.tt/how-lucas-people-analyst-at-alan-introduced-dust-to-his-hr-team/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_alan.png", + }, + // { + // title: "Kyriba's RFP Agent for improving pre-sales efficiency", + // content: + // "42% of Kyriba employees save 1 to 3 hours weekly leveraging Dust for RFPs.", + // href: "https://blog.dust.tt/kyriba-accelerating-innovation-with-dust/", + // src: "https://blog.dust.tt/content/images/size/w2000/2024/10/kyriba_dust.jpg", + // }, + // { + // title: "Lifen uses Dust AI agents to boost team productivity", // Soon to be replaced with Clay for RFP? + // content: + // "Lifen uses Dust AI agents to boost team productivity and save hours of work each week.", + // href: "https://blog.dust.tt/customer-story-lifen/", + // src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", + // }, +]; diff --git a/front/components/home/content/Solutions/configs/productivityConfig.tsx b/front/components/home/content/Solutions/configs/productivityConfig.tsx new file mode 100644 index 000000000000..4810132dd301 --- /dev/null +++ b/front/components/home/content/Solutions/configs/productivityConfig.tsx @@ -0,0 +1,191 @@ +import { + CheckCircleIcon, + MagicIcon, + RocketIcon, + UserGroupIcon, +} from "@dust-tt/sparkle"; + +import type { + BenefitsProps, + MetricProps, +} from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; +import type { + CustomerStory, + QuoteProps, +} from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; +import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; + +// Config exports +export const pageSettings: pageSettingsProps = { + uptitle: "Productivity", + title: <>Get Things Done Faster, Better, + from: "from-violet-200", + to: "to-violet-500", + description: ( + <> + Automate routine tasks, enhance your communications, and get expert + feedback tied to your company resources. + + ), + bulletPoints: [ + "Generate instant meeting summaries", + "Summarize complex documents quickly", + "Polish communications professionally", + "Get expert coaching on any topic", + ], + image: "/static/landing/productivity/contentoptimizer.png", +}; + +export const Hero: HeroProps = { + uptitle: pageSettings.uptitle, + title: pageSettings.title, + description: pageSettings.description, + visuals: [ + { + src: "/static/landing/productivity/productivity1.png", + alt: "Productivity Visual 1", + depth: -30, + }, + { + src: "/static/landing/productivity/productivity2.png", + alt: "Productivity Visual 2", + depth: -10, + }, + { + src: "/static/landing/productivity/productivity3.png", + alt: "Productivity Visual 3", + depth: 20, + }, + { + src: "/static/landing/productivity/productivity4.png", + alt: "Productivity Visual 4", + depth: 50, + }, + ], + ctaButtons: { + primary: { + label: "Get started", + href: "/home/pricing", + icon: RocketIcon, + }, + secondary: { + label: "Talk to sales", + href: "/home/contact", + }, + }, +}; + +export const Benefits: BenefitsProps = { + sectionTitle: "Supercharge your personal productivity and growth", + items: [ + { + icon: MagicIcon, + title: "Focus on impact", + description: + "Maximize your time by automating note-taking and content processing.", + }, + { + icon: CheckCircleIcon, + title: "Enhance clarity", + description: + "Instantly transform complex information into clear, actionable insights.", + }, + { + icon: UserGroupIcon, + title: "Accelerate growth", + description: + "Turn every interaction into a learning opportunity with personalized guidance.", + }, + ], +}; + +export const Metrics: MetricProps = { + metrics: [ + { + value: "43%", + description: <>of Kyriba employees save more than 3 hours weekly, + }, + { + value: "90%", + description: <>weekly active users at Alan, + }, + ], + from: "from-amber-200", + to: "to-amber-500", +}; + +export const UseCases: UseCaseProps = { + sectionTitle: "Your use cases, your way", + sectionDescription: + "Customize and automate tasks without writing a single line of code.", + items: [ + { + title: "Meeting summaries", + content: + "Instantly change transcripts into personalized, richly contextualized summaries with clear next steps.", + images: ["/static/landing/productivity/leadershipmeetingrecap.png"], + }, + { + title: "Content summarization", + content: + "Transform lengthy documents into clear summaries and key takeaways for quick comprehension.", + images: ["/static/landing/productivity/blogdigest.png"], + }, + { + title: "Writing coach", + content: + "Enhance your communications with professional polish, improved clarity, and perfect grammar.", + images: ["/static/landing/productivity/contentoptimizer.png"], + }, + { + title: "Domain Expert", + content: + "Access expert guidance and deep insights across any skill or knowledge domain.", + images: ["/static/landing/productivity/discoverycoach.png"], + }, + ], +}; + +export const Quote: QuoteProps = { + quote: + "The Dust platform is more than just a tool for post-ideation; it's a catalyst for innovation, stimulating idea generation as employees engage with it.", + name: "Boris Lipiainen", + title: "Chief Product and Technology Officer at Kyriba", + logo: "/static/landing/logos/kyriba.png", +}; + +export const DemoVideo: DemoVideoProps = { + sectionTitle: "Watch Dust in motion", + videoUrl: + "https://fast.wistia.net/embed/iframe/rnyvpdxfrk?web_component=true&seo=true&videoFoam=true&captions=on", +}; + +export const Stories: CustomerStory[] = [ + { + title: "Kyriba's adoption of Dust across all functions", + content: + "43% of Kyriba employees save more than 3 hours weekly leveraging Dust for RFPs.", + href: "https://blog.dust.tt/kyriba-accelerating-innovation-with-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2024/10/kyriba_dust.jpg", + }, + { + title: + "PayFit Accelerates Content Creation and Knowledge Sharing with Dust", + content: + "PayFit leverages Dust AI assistants to improve their internal processes across the board.", + href: "https://blog.dust.tt/dust-ai-payfit-efficiency/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_payfit.png", + }, + { + title: "November Five's journey to minimizing routine tasks with Dust", + content: + "Discover how November Five accelerates work with Dust, turning 3-hour tasks into 30 minutes.", + href: "https://blog.dust.tt/november-five-ai-transformation-dust/", + src: "https://blog.dust.tt/content/images/size/w2000/2025/01/dust_november_five.png", + }, +]; diff --git a/front/components/home/content/Solutions/configs/salesConfig.tsx b/front/components/home/content/Solutions/configs/salesConfig.tsx index a68524c6b941..f84064bc9667 100644 --- a/front/components/home/content/Solutions/configs/salesConfig.tsx +++ b/front/components/home/content/Solutions/configs/salesConfig.tsx @@ -9,44 +9,16 @@ import type { BenefitsProps, MetricProps, } from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, +} from "@app/components/home/content/Solutions/configs/utils"; import type { CustomerStory, QuoteProps, } from "@app/components/home/content/Solutions/CustomerStoriesSection"; import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; - -// Interface definitions -interface pageSettingsProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} - -interface HeroProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - visuals: { - src: string; - alt: string; - depth: number; - }[]; - ctaButtons: { - primary: { - label: string; - href: string; - icon: typeof RocketIcon; - }; - secondary: { - label: string; - href: string; - }; - }; -} // Config exports export const pageSettings: pageSettingsProps = { @@ -64,6 +36,13 @@ export const pageSettings: pageSettingsProps = { deals faster. ), + bulletPoints: [ + "Generate instant account snapshots to prepare for meetings", + "Auto-complete RFPs and forms", + "Create personalized outreach and follow-ups", + "Coach sales reps with call insights", + ], + image: "/static/landing/sales/accountSnapshot.png", }; export const Hero: HeroProps = { @@ -148,31 +127,31 @@ export const Metrics: MetricProps = { export const UseCases: UseCaseProps = { sectionTitle: "Your use cases, your way", sectionDescription: - "Customize and automate tasks without writing a single line of code.", + "Build custom agents without writing a single line of code.", items: [ { title: "Account snapshot", content: - "Create account summaries with key historical interactions, wherever they live.", - images: ["/static/landing/solutions/sales1.png"], + "Create account summaries with key historical interactions, data or news wherever they are hosted.", + images: ["/static/landing/sales/accountSnapshot.png"], }, { - title: "Meeting follow-ups", + title: "Engage and re-engage", content: - "Convert call transcripts into custom recaps and follow-up emails, enriched with prospect data.", - images: ["/static/landing/solutions/sales2.png"], + "Create targeted cold emails and re-engagement messages using call transcripts, CRM data and industry insights", + images: ["/static/landing/sales/meetingSummary.png"], }, { title: "Prospect questions", content: - "Auto-complete security forms & RFPs with up-to-date company information.", - images: ["/static/landing/solutions/sales3.png"], + "Answer prospect questions and RFPs instantly with fresh, expert insights on products, competitors, and security.", + images: ["/static/landing/sales/prospectQuestions.png"], }, { title: "Sales coaching", content: "Parse call transcripts to coach salespeople on their pitch and understand where deals fail.", - images: ["/static/landing/solutions/sales4.png"], + images: ["/static/landing/sales/salesCoach.png"], }, ], }; @@ -188,7 +167,7 @@ export const Quote: QuoteProps = { export const DemoVideo: DemoVideoProps = { sectionTitle: "Watch Dust in motion", videoUrl: - "https://fast.wistia.net/embed/iframe/0hizroojjb?seo=true&videoFoam=true&captions=on", + "https://fast.wistia.net/embed/iframe/8q80neektv?web_component=true&seo=true&videoFoam=true&captions=on", }; export const Stories: CustomerStory[] = [ @@ -202,7 +181,7 @@ export const Stories: CustomerStory[] = [ { title: "Kyriba's RFP Agent for improving pre-sales efficiency", content: - "42% of Kyriba employees save 1 to 3 hours weekly leveraging Dust for RFPs.", + "43% of Kyriba employees save more than 3 hours weekly leveraging Dust for RFPs.", href: "https://blog.dust.tt/kyriba-accelerating-innovation-with-dust/", src: "https://blog.dust.tt/content/images/size/w2000/2024/10/kyriba_dust.jpg", }, @@ -214,50 +193,3 @@ export const Stories: CustomerStory[] = [ src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", }, ]; - -export const AssistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "📊", - name: "@accountSnapshot", - backgroundColor: "bg-emerald-300", - description: ( - <> - Creates comprehensive account summaries by aggregating key historical - interactions from multiple data sources - - ), - }, - { - emoji: "📝", - name: "@meetingRecap", - backgroundColor: "bg-emerald-300", - description: ( - <> - Automatically generates customized meeting summaries and follow-up - emails from call transcripts with enriched prospect information - - ), - }, - { - emoji: "📋", - name: "@prospectHelper", - backgroundColor: "bg-emerald-300", - description: ( - <> - Streamlines response process for security questionnaires and RFPs by - auto-populating with current company data - - ), - }, - { - emoji: "🎯", - name: "@salesCoach", - backgroundColor: "bg-emerald-300", - description: ( - <> - Analyzes call transcripts to provide pitch optimization feedback and - identify patterns in deal outcomes - - ), - }, -]; diff --git a/front/components/home/content/Solutions/configs/supportConfig.tsx b/front/components/home/content/Solutions/configs/supportConfig.tsx index 28fbcd6136b9..a0b6b106c7d2 100644 --- a/front/components/home/content/Solutions/configs/supportConfig.tsx +++ b/front/components/home/content/Solutions/configs/supportConfig.tsx @@ -4,44 +4,17 @@ import type { BenefitsProps, MetricProps, } from "@app/components/home/content/Solutions/BenefitsSection"; +import type { + HeroProps, + pageSettingsProps, + ROIProps, +} from "@app/components/home/content/Solutions/configs/utils"; import type { CustomerStory, QuoteProps, } from "@app/components/home/content/Solutions/CustomerStoriesSection"; import type { DemoVideoProps } from "@app/components/home/content/Solutions/DemoVideoSection"; import type { UseCaseProps } from "@app/components/home/content/Solutions/UseCasesSection"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; - -// Interface definitions -interface pageSettingsProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} - -interface HeroProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - visuals: { - src: string; - alt: string; - depth: number; - }[]; - ctaButtons: { - primary: { - label: string; - href: string; - icon: typeof RocketIcon; - }; - secondary: { - label: string; - href: string; - }; - }; -} // Config exports export const pageSettings: pageSettingsProps = { @@ -51,10 +24,17 @@ export const pageSettings: pageSettingsProps = { to: "to-sky-500", description: ( <> - Equip your team with AI agents to accelerate issue - resolution and increase customer satisfaction. + Equip your team with AI agents to accelerate issue resolution and increase + customer satisfaction. ), + bulletPoints: [ + "Deflect tickets by integrating AI agents directly in your product", + "Speed up ticket resolution from your staff", + "Identify and anticipate customer needs", + "Convert tickets into searchable knowledge base", + ], + image: "/static/landing/support/ticketResolution.png", }; export const Hero: HeroProps = { @@ -103,7 +83,7 @@ export const Benefits: BenefitsProps = { icon: RocketIcon, title: "Resolve issues faster", description: - "Surface relevant information from all connected knowledge bases and draft messages in 50+ languages.", + "Deflect Tier 1 tickets, surface relevant information from your knowledge bases and draft messages in 50+ languages.", }, { icon: UserGroupIcon, @@ -138,35 +118,41 @@ export const Metrics: MetricProps = { export const UseCases: UseCaseProps = { sectionTitle: "Your use cases, your way", sectionDescription: - "Customize and automate tasks without writing a single line of code.", + "Create custom AI agents without writing a single line of code.", items: [ { - title: "Ticket resolution", + title: "Ticket deflection", content: - "Speed up resolution by suggesting tailored responses drawn from your knowledge base and past solutions.", - images: ["/static/landing/solutions/support1.png"], + "Integrate AI agents in your product interface to deflect Tier 1 tickets and reduce support workload.", + images: ["/static/landing/support/ticketDeflection.png"], }, { - title: "Agent coaching", + title: "Ticket resolution", content: - "Offer feedback to support agents using real-time best practices and ticket insights for consistent, quality service.", - images: ["/static/landing/solutions/support2.png"], + "Speed up resolution by suggesting tailored responses drawn from your knowledge base and past solutions.", + images: ["/static/landing/support/ticketResolution.png"], }, { - title: "Documentation builder", + title: "Knowledge base augmentation", content: "Convert resolved tickets into searchable articles and FAQs, capturing best practices for future use.", - images: ["/static/landing/solutions/support3.png"], + images: ["/static/landing/support/docExpert.png"], }, { - title: "Customer insights", + title: "Ticket insights", content: - "Identify trends from customer feedback, helping teams proactively improve service and satisfaction.", - images: ["/static/landing/solutions/support4.png"], + "Turn support interactions into learning opportunities that enhance your offering and service standards.", + images: ["/static/landing/support/ticketInsights.png"], }, ], }; +export const ROI: ROIProps = { + number: "50%", + subtitle: "reduction in ticket resolution time", + logo: "/static/landing/logos/malt.png", +}; + export const Quote: QuoteProps = { quote: "We're managing a higher volume of tickets and have cut processing time—from an average of 6 minutes per ticket to just a few seconds.", @@ -204,50 +190,3 @@ export const Stories: CustomerStory[] = [ src: "https://blog.dust.tt/content/images/size/w2000/2024/11/lifen_dust_customer_story.jpg", }, ]; - -export const AssistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "🤝", - backgroundColor: "bg-sky-300", - name: "@ticketSolver", - description: ( - <> - Speeds up resolution by suggesting tailored responses drawn from your - knowledge base and past solutions. - - ), - }, - { - emoji: "📡", - backgroundColor: "bg-sky-300", - name: "@supportAnalyst", - description: ( - <> - Offers feedback to support agents using real-time best practices and - ticket insights for consistent, quality service. - - ), - }, - { - emoji: "🔮", - backgroundColor: "bg-sky-300", - name: "@docExpert", - description: ( - <> - Converts resolved tickets into searchable articles and FAQs, capturing - best practices for future use. - - ), - }, - { - emoji: "💡", - backgroundColor: "bg-sky-300", - name: "@CSInsights", - description: ( - <> - Identifies trends from customer feedback, helping teams proactively - improve service and satisfaction. - - ), - }, -]; diff --git a/front/components/home/content/Solutions/configs/utils.tsx b/front/components/home/content/Solutions/configs/utils.tsx new file mode 100644 index 000000000000..7944bcbbe646 --- /dev/null +++ b/front/components/home/content/Solutions/configs/utils.tsx @@ -0,0 +1,39 @@ +import type { RocketIcon } from "@dust-tt/sparkle"; + +export interface pageSettingsProps { + uptitle: string; + title: React.ReactNode; + description: React.ReactNode; + from: string; + to: string; + bulletPoints: string[]; + image: string; +} + +export interface HeroProps { + uptitle: string; + title: React.ReactNode; + description: React.ReactNode; + visuals: { + src: string; + alt: string; + depth: number; + }[]; + ctaButtons: { + primary: { + label: string; + href: string; + icon: typeof RocketIcon; + }; + secondary: { + label: string; + href: string; + }; + }; +} + +export interface ROIProps { + number: string; + subtitle: string; + logo: string; +} diff --git a/front/components/home/menu/config.ts b/front/components/home/menu/config.ts index fe9d9505506d..ad5c2cd21217 100644 --- a/front/components/home/menu/config.ts +++ b/front/components/home/menu/config.ts @@ -95,34 +95,48 @@ const LegalMenuConfig: MenuConfig = { const SolutionsMenuConfig: MenuConfig = { title: "Solutions", items: [ - { - title: "Customer Support", - href: "/home/solutions/customer-support", - }, { title: "Sales", href: "/home/solutions/sales", }, { - title: "Engineering", - href: "/home/solutions/engineering", + title: "Customer Support", + href: "/home/solutions/customer-support", }, { title: "Marketing & Content", href: "/home/solutions/marketing", }, { - title: "Recruiting & People", - href: "/home/solutions/recruiting-people", + title: "Engineering", + href: "/home/solutions/engineering", }, { title: "Data & Analytics", href: "/home/solutions/data-analytics", }, { - title: "Knowledge Management", + title: "Knowledge", href: "/home/solutions/knowledge", }, + { + title: "IT", + href: "/home/solutions/it", + }, + { + title: "Legal", + href: "/home/solutions/legal", + }, + + { + title: "People", + href: "/home/solutions/recruiting-people", + }, + + { + title: "Productivity", + href: "/home/solutions/productivity", + }, ], }; @@ -279,7 +293,7 @@ export const menuConfig: DocsConfig = { { title: SolutionsMenuConfig.title, label: "Dust for...", - rows: 4, + rows: 5, items: SolutionsMenuConfig.items, }, { diff --git a/front/pages/home/solutions/customer-support.tsx b/front/pages/home/solutions/customer-support.tsx index 6eb235234734..597b1ede09fc 100644 --- a/front/pages/home/solutions/customer-support.tsx +++ b/front/pages/home/solutions/customer-support.tsx @@ -4,13 +4,13 @@ import type { ReactElement } from "react"; import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; import { - AssistantExamples, Benefits, DemoVideo, Hero, Metrics, pageSettings, Quote, + ROI, Stories, UseCases, } from "@app/components/home/content/Solutions/configs/supportConfig"; @@ -132,12 +132,12 @@ CustomerSupport.getLayout = ( export function CustomerCaroussel() { return ( diff --git a/front/pages/home/solutions/data-analytics.tsx b/front/pages/home/solutions/data-analytics.tsx index dbf11f02b005..29dabf8b6b32 100644 --- a/front/pages/home/solutions/data-analytics.tsx +++ b/front/pages/home/solutions/data-analytics.tsx @@ -1,10 +1,22 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; import type { ReactElement } from "react"; -import React from "react"; -import { BlogSection } from "@app/components/home/content/Product/BlogSection"; +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + pageSettings, + Quote, + UseCases, +} from "@app/components/home/content/Solutions/configs/dataConfig"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; import { CarousselContentBlock, - HeaderContentBlock, + QuoteSection, } from "@app/components/home/ContentBlocks"; import { Grid } from "@app/components/home/ContentComponents"; import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; @@ -13,213 +25,113 @@ import { getParticleShapeIndexByName, shapeNames, } from "@app/components/home/Particles"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; -import { SolutionSection } from "@app/components/home/SolutionSection"; import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; export async function getServerSideProps() { return { props: { - shape: getParticleShapeIndexByName(shapeNames.wave), + shape: getParticleShapeIndexByName(shapeNames.octahedron), gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, }, }; } -interface pageSettingsProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); -const pageSettings: pageSettingsProps = { - uptitle: "Data and Analytics", - title: <>From Data to Action, - from: "from-amber-200", - to: "to-amber-500", - description: ( - <> - Focus on generating first-of-a-kind insights while AI helps with - routine queries and standard reports across teams. - - ), -}; - -export default function DataAnalytics() { +export default function Data() { return ( <> - - - - - Give everyone access -
- to data analysis. - - } - blocks={[ - { - color: "amber", - contentBlocks: [ - { - title: <>Democratize data analysis, - content: [ - <> - Enable anyone at the company to generate recurring - analyses using natural language to create SQL queries that - understand your database schemas. - , - ], - }, - { - title: <>Reduce time to data insights, - content: [ - <> - Turn .csv files, Notion databases, and Google Sheets into - data sources for quantitative analyses with agents that - have a built-in understanding of your company’s business - terminology. - , - ], - }, - ], - - assistantBlocks: [assistantExamples[0], assistantExamples[1]], - }, - ]} +
+ - - Free the team -
- from being a perpetual help desk. - - } - blocks={[ - { - color: "amber", - contentBlocks: [ - { - title: ( - <> - Streamline onboarding -
- for the data team - - ), - content: [ - <> - Share up-to-date runbooks and internal documentation for - new data team members to ramp up efficiently and - autonomously with conversational agents. - , - ], - }, - { - title: ( - <> - Improve internal documentation on internal - data sources - - ), - content: [ - <> - Clean up or draft great documentation about your - infrastructure or fields, tables and relationships to be - clear to all. - , - ], - }, - ], - assistantBlocks: [assistantExamples[2], assistantExamples[3]], - }, - ]} - /> - - + +
+ + {/* */} +
+
+ +
+
+ +
+
+ + {/* */} +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
); } -DataAnalytics.getLayout = ( - page: ReactElement, - pageProps: LandingLayoutProps -) => { +Data.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { return {page}; }; -const assistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "💬", - name: "@SQLbuddy", - backgroundColor: "bg-amber-300", - description: ( - <> - Generates simple SQL queries that understand business logic - and fixes or improves existing ones - - ), - }, - { - emoji: "🔬", - name: "@analyst", - backgroundColor: "bg-amber-300", - description: ( - <> - Answers advanced data questions on your behalf by writing and executing - queries and providing visualizations. - - ), - }, - { - emoji: "📈", - name: "@dataRun", - backgroundColor: "bg-amber-300", - description: ( - <> - Answers questions about internal processes and runbooks on the - data team - - ), - }, - { - emoji: "📚", - name: "@dataModel", - backgroundColor: "bg-amber-300", - description: ( - <> - Knows everything about data schemas and data model relationships - at the company - - ), - }, -]; - export function DataCaroussel() { return ( ); } diff --git a/front/pages/home/solutions/engineering.tsx b/front/pages/home/solutions/engineering.tsx index 48e71e2563be..106c2bcd5e9d 100644 --- a/front/pages/home/solutions/engineering.tsx +++ b/front/pages/home/solutions/engineering.tsx @@ -1,10 +1,27 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; import type { ReactElement } from "react"; -import React from "react"; -import { BlogSection } from "@app/components/home/content/Product/BlogSection"; +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + Quote, + ROI, + Stories, + UseCases, +} from "@app/components/home/content/Solutions/configs/engineeringConfig"; +import { CustomerStoriesSection } from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; import { CarousselContentBlock, - HeaderContentBlock, + MetricSection, + QuoteSection, } from "@app/components/home/ContentBlocks"; import { Grid } from "@app/components/home/ContentComponents"; import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; @@ -13,162 +30,94 @@ import { getParticleShapeIndexByName, shapeNames, } from "@app/components/home/Particles"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; -import { SolutionSection } from "@app/components/home/SolutionSection"; import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; export async function getServerSideProps() { return { props: { - shape: getParticleShapeIndexByName(shapeNames.cube), + shape: getParticleShapeIndexByName(shapeNames.octahedron), gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, }, }; } -interface pageSettingsProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} - -const pageSettings: pageSettingsProps = { - uptitle: "Engineers and Developers", - title: ( - <> - Code smarter, -
- Resolve faster - - ), - from: "from-emerald-200", - to: "to-emerald-500", - description: ( - <> - Reduce interruptions, write better code, speed up incident response, - and accelerate new engineers' onboarding. - - ), -}; +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); export default function Engineering() { return ( <> - - - - Talk to your codebase, - content: [ - <> - Get conversational access to your entire code base. - , - <> - Accelerate onboarding for new engineers on the team - and reduce interruptions from other teams. - , - ], - }, - { - title: <>Create your architecture copilot., - content: ( - <> - Specialize the best models (Gemini, GPT4, Mistral) - to answer general code questions with concise, - straight-to-the-point answers that have context - on the team's stack, runbooks, and architecture - preferences. - - ), - }, - ], - assistantBlocks: [ - assistantExamples[0], - assistantExamples[1], - assistantExamples[5], - ], - }, - ]} +
+ - - Fight fires, -
- get back to Coding. - - } - blocks={[ - { - color: "emerald", - contentBlocks: [ - { - title: ( - <> - Protect your eng team with a help desk for most - situations - - ), - content: [ - <> - Provide answers to questions from the rest - of the company automatically to avoid - interruptions. - , - <> - Give developers context on previous incidents - in seconds, without the need to ping last - time's hero. - , - ], - }, - { - title: ( - <> - Get the report done for the company to stay - in the know - - ), - content: [ - <> - Generate weekly summaries on what shipped, what - broke, and what's in flight. - , - <> - Make these available to the team's stakeholders with - explanations on the technical terms they might not - understand. - , - ], - }, - ], - assistantBlocks: [ - assistantExamples[3], - assistantExamples[4], - assistantExamples[2], - ], - }, - ]} - /> - - + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
); } @@ -177,83 +126,17 @@ Engineering.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { return {page}; }; -const assistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "📚", - name: "@codebase", - backgroundColor: "bg-emerald-300", - description: <>Answers questions about the company codebase, - }, - { - emoji: "👨‍💻", - name: "@engHelp", - backgroundColor: "bg-emerald-300", - description: ( - <> - Answers questions from the rest of the company - on engineering definitions, ongoing projects, and who's - on run - - ), - }, - { - emoji: "🚨", - name: "@engIncidents", - backgroundColor: "bg-emerald-300", - description: ( - <> - Assists in the event of an incident with data on previous - similar situation and their remediation - - ), - }, - { - emoji: "📡", - name: "@engWeekly", - backgroundColor: "bg-emerald-300", - description: ( - <> - Writes a table of shipped and unshipped - features—Summarizes incidents with impact, current status, - and remediation plans - - ), - }, - { - emoji: "⭐️", - name: "@engGeneral", - backgroundColor: "bg-emerald-300", - description: ( - <> - Answers general questions about code architecture and engineering - team processes - - ), - }, - { - emoji: "🏴‍☠️", - name: "@codeGenius", - backgroundColor: "bg-emerald-300", - description: ( - <> - Answers general questions about code to avoid a trip - to StackOverflow - - ), - }, -]; - export function EngineeringCaroussel() { return ( ); } diff --git a/front/pages/home/solutions/it.tsx b/front/pages/home/solutions/it.tsx new file mode 100644 index 000000000000..58d0fffd65fc --- /dev/null +++ b/front/pages/home/solutions/it.tsx @@ -0,0 +1,139 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; +import type { ReactElement } from "react"; + +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + Quote, + UseCases, +} from "@app/components/home/content/Solutions/configs/itConfig"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; +import { + CarousselContentBlock, + MetricSection, + QuoteSection, +} from "@app/components/home/ContentBlocks"; +import { Grid } from "@app/components/home/ContentComponents"; +import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; +import LandingLayout from "@app/components/home/LandingLayout"; +import { + getParticleShapeIndexByName, + shapeNames, +} from "@app/components/home/Particles"; +import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; + +export async function getServerSideProps() { + return { + props: { + shape: getParticleShapeIndexByName(shapeNames.octahedron), + gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, + }, + }; +} + +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); + +export default function IT() { + return ( + <> +
+ + +
+ + +
+
+ +
+
+ +
+
+ + {/* */} +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
+ + ); +} + +IT.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { + return {page}; +}; + +export function ITCaroussel() { + return ( + + ); +} diff --git a/front/pages/home/solutions/knowledge.tsx b/front/pages/home/solutions/knowledge.tsx index db2417dca2e3..d0c5fd986833 100644 --- a/front/pages/home/solutions/knowledge.tsx +++ b/front/pages/home/solutions/knowledge.tsx @@ -1,10 +1,26 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; import type { ReactElement } from "react"; -import React from "react"; -import { BlogSection } from "@app/components/home/content/Product/BlogSection"; +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + Quote, + Stories, + UseCases, +} from "@app/components/home/content/Solutions/configs/knowledgeConfig"; +import { CustomerStoriesSection } from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; import { CarousselContentBlock, - HeaderContentBlock, + MetricSection, + QuoteSection, } from "@app/components/home/ContentBlocks"; import { Grid } from "@app/components/home/ContentComponents"; import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; @@ -13,138 +29,94 @@ import { getParticleShapeIndexByName, shapeNames, } from "@app/components/home/Particles"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; -import { SolutionSection } from "@app/components/home/SolutionSection"; import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; export async function getServerSideProps() { return { props: { - shape: getParticleShapeIndexByName(shapeNames.torus), + shape: getParticleShapeIndexByName(shapeNames.octahedron), gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, }, }; } -interface pageSettingsProps { - uptitle: React.ReactNode; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} - -const pageSettings: pageSettingsProps = { - uptitle: "Knowledge Management", - title: <>Bring your internal knowledge to life, - from: "from-sky-200", - to: "to-sky-500", - description: ( - <> - Keep internal content fresh, discoverable and truly useful. -
- Make it easy for teams to work smarter by tapping into - the company's collective intelligence and expertise. - - ), -}; +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); export default function Knowledge() { return ( <> - - - - - Keep internal documentation -
- up-to-date. - - } - blocks={[ - { - color: "sky", - contentBlocks: [ - { - title: ( - <>Create company knowledge with minimal effort - ), - content: ( - <> - Leverage existing discussions to reduce the time - and lift required to update and create - new internal content. - - ), - }, - { - title: <>Keep internal documentation forever fresh, - content: ( - <> - Compare and contrast existing documentation with internal - conversations to highlight areas in need of - a revision. - - ), - }, - ], - assistantBlocks: [ - assistantExamples[0], - assistantExamples[1], - assistantExamples[2], - ], - }, - ]} +
+ - Upgrade internal communication and collaboration.} - blocks={[ - { - color: "sky", - contentBlocks: [ - { - title: <>Onboard at breakneck speed, - content: [ - <> - Generate tailored onboarding experiences for newcomers - based on their skills and set them up for - success with personalized coaching. - , - ], - }, - { - title: <>Tear down knowledge walls, - content: [ - <> - Keep the company hive mind ahead of the curve - with answers to general questions. - , - <> - Foster collaboration across teams by freeing content - from the software silos it lives in. Translate - internal updates into a language each team can - understand. - , - ], - }, - ], - assistantBlocks: [assistantExamples[3], assistantExamples[4]], - }, - ]} - /> - - + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
); } @@ -153,77 +125,17 @@ Knowledge.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { return {page}; }; -const assistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "🖋️", - name: "@askTeam", - backgroundColor: "bg-sky-300", - description: ( - <> - Provide employees with a go-to person to answer questions about a - specific department. - - ), - }, - { - emoji: "🚀", - name: "@weeklyHighlights", - backgroundColor: "bg-sky-300", - description: ( - <> - Provide recurring recaps of projects, discussion channels or topics, - making it easy to scan over insights. - - ), - }, - { - emoji: "🔬", - name: "@docsUpdate", - backgroundColor: "bg-sky-300", - description: ( - <> - Analyzes existing documentation in the context of internal - discussions on product launches to highlight update - requirements - - ), - }, - { - emoji: "👨‍🎤", - name: "@onboardingBuddy", - backgroundColor: "bg-sky-300", - description: ( - <> - Acts as a friendly guide to help new team members feel welcome - and properly informed from day one and as they learn - about the company. - - ), - }, - { - emoji: "🧑‍🍳", - name: "@LikeImAnEngineer", - backgroundColor: "bg-sky-300", - description: ( - <> - Translates internal memos focusing on the technical implications - and providing reminders on certain business priorities - - ), - }, -]; - export function KnowledgeCaroussel() { return ( ); } diff --git a/front/pages/home/solutions/legal.tsx b/front/pages/home/solutions/legal.tsx new file mode 100644 index 000000000000..1296dd872599 --- /dev/null +++ b/front/pages/home/solutions/legal.tsx @@ -0,0 +1,141 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; +import type { ReactElement } from "react"; + +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + Quote, + Stories, + UseCases, +} from "@app/components/home/content/Solutions/configs/legalConfig"; +import { CustomerStoriesSection } from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; +import { + CarousselContentBlock, + MetricSection, + QuoteSection, +} from "@app/components/home/ContentBlocks"; +import { Grid } from "@app/components/home/ContentComponents"; +import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; +import LandingLayout from "@app/components/home/LandingLayout"; +import { + getParticleShapeIndexByName, + shapeNames, +} from "@app/components/home/Particles"; +import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; + +export async function getServerSideProps() { + return { + props: { + shape: getParticleShapeIndexByName(shapeNames.octahedron), + gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, + }, + }; +} + +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); + +export default function Legal() { + return ( + <> +
+ + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
+ + ); +} + +Legal.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { + return {page}; +}; + +export function LegalCaroussel() { + return ( + + ); +} diff --git a/front/pages/home/solutions/marketing.tsx b/front/pages/home/solutions/marketing.tsx index ee371676d433..5aa379b32fd9 100644 --- a/front/pages/home/solutions/marketing.tsx +++ b/front/pages/home/solutions/marketing.tsx @@ -1,10 +1,28 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; import type { ReactElement } from "react"; -import React from "react"; -import { BlogSection } from "@app/components/home/content/Product/BlogSection"; +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + pageSettings as pageSettingsNew, + Quote, + ROI, + Stories, + UseCases, +} from "@app/components/home/content/Solutions/configs/marketingConfig"; +import { CustomerStoriesSection } from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; import { CarousselContentBlock, - HeaderContentBlock, + MetricSection, + QuoteSection, } from "@app/components/home/ContentBlocks"; import { Grid } from "@app/components/home/ContentComponents"; import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; @@ -13,156 +31,94 @@ import { getParticleShapeIndexByName, shapeNames, } from "@app/components/home/Particles"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; -import { SolutionSection } from "@app/components/home/SolutionSection"; import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; export async function getServerSideProps() { return { props: { - shape: getParticleShapeIndexByName(shapeNames.pyramid), + shape: getParticleShapeIndexByName(shapeNames.octahedron), gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, }, }; } -interface pageSettingsProps { - uptitle: string; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} - -const pageSettings: pageSettingsProps = { - uptitle: "Marketing", - title: ( - <> - Go from insight to content in the blink - of an eye - - ), - from: "from-pink-200", - to: "to-pink-500", - description: ( - <> - Leverage AI agents to gather market intelligence and - customer insights, and to produce content faster. - - ), -}; +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); export default function Marketing() { return ( <> - - - - - Generate content fast -
- that remains on brand. - - } - blocks={[ - { - color: "pink", - contentBlocks: [ - { - title: <>Consistent content at last, - content: ( - <> - Uses agents to ensure consistency across teams - and customer touchpoints. Leverage - your carefully crafted brand voice guidelines - and past content to support a quick - and intuitive creative process. - - ), - }, - { - title: <>Cross-posting made easy, - content: ( - <> - Generate inspired and aligned versions of your - content adapted to blogs, websites, product - documentation, and social media faster. - - ), - }, - ], - assistantBlocks: [ - assistantExamples[0], - assistantExamples[1], - assistantExamples[3], - ], - }, - ]} +
+ - - AI Power-ups on tap.} - blocks={[ - { - color: "pink", - contentBlocks: [ - { - title: ( - <> - Set up a live competitive -
- intelligence feed - - ), - content: [ - <> - Leverage AI agents to keep tabs on your market - and its participants. - , - <> - Generate reports on competitors' moves to never - be caught off-guard and inform - your decisions. - , - ], - }, - { - title: <>Man the battle card stations, - content: [ - <> - Bridge the gap with Sales, Product, and Support - teams by translating marketing decisions, objectives, - and strategies into their language. - , - <> - Easily generate content and insights leveraging - competitive intelligence and the positioning you've - decided on. - , - ], - }, - ], - assistantBlocks: [ - assistantExamples[2], - assistantExamples[4], - assistantExamples[5], - ], - }, - ]} - /> - - + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
); } @@ -171,86 +127,17 @@ Marketing.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { return {page}; }; -const assistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "🖋️", - name: "@contentWriter", - backgroundColor: "bg-pink-300", - description: ( - <> - Creates content based on best-in class  examples availble - internally - - ), - }, - { - emoji: "🖇️", - name: "@crossPost", - backgroundColor: "bg-pink-300", - description: ( - <> - Generates versioned content for social media outlets taking into - account company guidelines - - ), - }, - { - emoji: "♠️", - name: "@battleCard", - backgroundColor: "bg-pink-300", - description: ( - <> - Generates arguments for your product in comparison to a specific - competitor, in line with internal product guidelines and category - positioning - - ), - }, - { - emoji: "🌍", - name: "@internationalizer", - backgroundColor: "bg-pink-300", - description: ( - <> - Transcreate all your content to adapt content for international markets - - ), - }, - { - emoji: "⭐️", - name: "@marketing", - backgroundColor: "bg-pink-300", - description: ( - <> - Answer any question about your team's marketing knowledge base. - Resurface past ideas and create new ones - - ), - }, - { - emoji: "🧐", - name: "@competitive", - backgroundColor: "bg-pink-300", - description: ( - <> - Tracks competitors websites to highlight changes and pro-actively detect - market positioning opportunities - - ), - }, -]; - export function MarketingCaroussel() { return ( ); } diff --git a/front/pages/home/solutions/productivity.tsx b/front/pages/home/solutions/productivity.tsx new file mode 100644 index 000000000000..9ea982e259bf --- /dev/null +++ b/front/pages/home/solutions/productivity.tsx @@ -0,0 +1,144 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; +import type { ReactElement } from "react"; + +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + Quote, + Stories, + UseCases, +} from "@app/components/home/content/Solutions/configs/productivityConfig"; +import { CustomerStoriesSection } from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; +import { + CarousselContentBlock, + MetricSection, + QuoteSection, +} from "@app/components/home/ContentBlocks"; +import { Grid } from "@app/components/home/ContentComponents"; +import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; +import LandingLayout from "@app/components/home/LandingLayout"; +import { + getParticleShapeIndexByName, + shapeNames, +} from "@app/components/home/Particles"; +import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; + +export async function getServerSideProps() { + return { + props: { + shape: getParticleShapeIndexByName(shapeNames.octahedron), + gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, + }, + }; +} + +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); + +export default function Productivity() { + return ( + <> +
+ + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
+ + ); +} + +Productivity.getLayout = ( + page: ReactElement, + pageProps: LandingLayoutProps +) => { + return {page}; +}; + +export function ProductivityCaroussel() { + return ( + + ); +} diff --git a/front/pages/home/solutions/recruiting-people.tsx b/front/pages/home/solutions/recruiting-people.tsx index cf9f1fe96e30..c44d357cefa4 100644 --- a/front/pages/home/solutions/recruiting-people.tsx +++ b/front/pages/home/solutions/recruiting-people.tsx @@ -1,10 +1,26 @@ +import { Button } from "@dust-tt/sparkle"; +import Link from "next/link"; import type { ReactElement } from "react"; -import React from "react"; -import { BlogSection } from "@app/components/home/content/Product/BlogSection"; +import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; +import { + Benefits, + DemoVideo, + Hero, + Metrics, + pageSettings, + Quote, + Stories, + UseCases, +} from "@app/components/home/content/Solutions/configs/peopleConfig"; +import { CustomerStoriesSection } from "@app/components/home/content/Solutions/CustomerStoriesSection"; +import { DemoVideoSection } from "@app/components/home/content/Solutions/DemoVideoSection"; +import { HeroSection } from "@app/components/home/content/Solutions/HeroSection"; +import { UseCasesSection } from "@app/components/home/content/Solutions/UseCasesSection"; import { CarousselContentBlock, - HeaderContentBlock, + MetricSection, + QuoteSection, } from "@app/components/home/ContentBlocks"; import { Grid } from "@app/components/home/ContentComponents"; import type { LandingLayoutProps } from "@app/components/home/LandingLayout"; @@ -13,293 +29,113 @@ import { getParticleShapeIndexByName, shapeNames, } from "@app/components/home/Particles"; -import type { SolutionSectionAssistantBlockProps } from "@app/components/home/SolutionSection"; -import { SolutionSection } from "@app/components/home/SolutionSection"; import TrustedBy from "@app/components/home/TrustedBy"; +import { classNames } from "@app/lib/utils"; export async function getServerSideProps() { return { props: { - shape: getParticleShapeIndexByName(shapeNames.torus), + shape: getParticleShapeIndexByName(shapeNames.octahedron), gtmTrackingId: process.env.NEXT_PUBLIC_GTM_TRACKING_ID ?? null, }, }; } -interface pageSettingsProps { - uptitle: React.ReactNode; - title: React.ReactNode; - description: React.ReactNode; - from: string; - to: string; -} +const GRID_SECTION_CLASSES = classNames( + "flex flex-col gap-8", + "col-span-12", + "lg:col-span-12 lg:col-start-1", + "xl:col-span-12 xl:col-start-1", + "2xl:col-start-1" +); -const pageSettings: pageSettingsProps = { - uptitle: "Recruiting and People", - title: <>More time for people, teams, and managers, - from: "from-amber-200", - to: "to-amber-500", - description: ( - <> - Support the business and the team effectively across recruiting, - onboarding, and career development initiatives. - - ), -}; - -export default function RecruitingPeople() { +export default function People() { return ( <> - - - - - Give new hires the buddy they can always tap - on the shoulder - - ), - content: ( - <> - Transform your onboard process with tailored - assistance for newcomers to discover - your methods, people, and culture. - - ), - }, - { - title: ( - <>Let your internal documentation do the work - ), - content: ( - <> - Extract yourself from admin ping pong. Allow team - members to interact with an agent that answers - common people-related questions in Slack - and points to the right internal resources. - - ), - }, - ], - assistantBlocks: [assistantExamples[0], assistantExamples[1]], - }, - ]} - /> - - Use internal documentation to create training materials - tailored to each role and team. - - ), - }, - { - title: "Streamline performance reviews", - content: [ - <> - Help reviewers collect data to get a holistic - view of their teammates' impact and make more - accurate evaluations. - , - <> - Get more thoughtful peer reviews, with AI-powered feedback - on tone, references to company principles, - priorities and business objectives. - , - ], - }, - ], - assistantBlocks: [assistantExamples[4], assistantExamples[3]], - }, - ]} +
+ - Get a qualified pipeline in a flash, - content: [ - <> - Easily draft consistent job descriptions. Analyze - and filter candidates' CVs by finding elements - that are a match for expectations. - , - <> - Train your team at writing exercises - and questions, reviewing exercises' responses, - and reading through candidates' subtexts. - , - ], - }, - { - title: <>Raise the bar on interviews, - content: [ - <> - Easily prepare the interview process including - questions that match the role expectations - and company guidelines. - , - <> - Give the team context on the status of a - hire. - , - <> - Help interviewers write consistent - and well-articulated feedback that directly connects - to your company's evaluation rubric. - , - ], - }, - ], - assistantBlocks: [ - assistantExamples[2], - assistantExamples[5], - assistantExamples[7], - ], - }, - ]} - /> - - + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
+ {Hero.ctaButtons && ( +
+ {Hero.ctaButtons.primary && ( + +
+ )} +
+
+
); } -RecruitingPeople.getLayout = ( - page: ReactElement, - pageProps: LandingLayoutProps -) => { +People.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { return {page}; }; -const assistantExamples: SolutionSectionAssistantBlockProps[] = [ - { - emoji: "🌱", - name: "@onboardingBuddy", - backgroundColor: "bg-amber-300", - description: ( - <> - Acts as a friendly guide to help new team members feel welcome - and properly informed from day one and as they learn - about the company - - ), - }, - { - emoji: "👋", - name: "@askHR", - backgroundColor: "bg-amber-300", - description: ( - <> - Answers questions the People team gets most regularly about company - processes and policies based on internal documentation - directly on Slack - - ), - }, - { - emoji: "🖋️", - name: "@hiringOps", - backgroundColor: "bg-amber-300", - description: ( - <> - Drafts job descriptions and matching social media communications - based on company templates - - ), - }, - { - emoji: "🏅", - name: "@reviewPrep", - backgroundColor: "bg-amber-300", - description: ( - <> - Collects achievements, drafts actionable reviews, helps formulate - feedback - - ), - }, - { - emoji: "🧑‍🏫", - name: "@trainingDraft", - backgroundColor: "bg-amber-300", - description: ( - <>Designs training modules and crafts employee development plans - ), - }, - { - emoji: "🔬", - name: "@screeningPrep", - backgroundColor: "bg-amber-300", - description: ( - <> - Provides a suggested analysis of a candidate CV given - a role description to highlight questions for a screening - interview - - ), - }, - { - emoji: "💬", - name: "@hiringQuestions", - backgroundColor: "bg-amber-300", - description: ( - <> - Suggests interviews questions based on roles, stage of the - interview and the company's culture - - ), - }, - { - emoji: "🧐", - name: "@candidateInfo", - backgroundColor: "bg-amber-300", - description: ( - <> - Summarize available information about a candidate based - on your company database - - ), - }, -]; - -export function RecruitingCaroussel() { +export function PeopleCaroussel() { return ( ); } diff --git a/front/pages/home/solutions/sales.tsx b/front/pages/home/solutions/sales.tsx index a58df3977e3d..de99ed7f82f4 100644 --- a/front/pages/home/solutions/sales.tsx +++ b/front/pages/home/solutions/sales.tsx @@ -4,7 +4,6 @@ import type { ReactElement } from "react"; import { BenefitsSection } from "@app/components/home/content/Solutions/BenefitsSection"; import { - AssistantExamples, Benefits, DemoVideo, Hero, @@ -129,12 +128,12 @@ Sales.getLayout = (page: ReactElement, pageProps: LandingLayoutProps) => { export function SalesCaroussel() { return ( diff --git a/front/public/static/landing/data-analytics/analyst.png b/front/public/static/landing/data-analytics/analyst.png new file mode 100644 index 000000000000..99102de656ba Binary files /dev/null and b/front/public/static/landing/data-analytics/analyst.png differ diff --git a/front/public/static/landing/data-analytics/data1.png b/front/public/static/landing/data-analytics/data1.png new file mode 100644 index 000000000000..b674e65ea383 Binary files /dev/null and b/front/public/static/landing/data-analytics/data1.png differ diff --git a/front/public/static/landing/data-analytics/data2.png b/front/public/static/landing/data-analytics/data2.png new file mode 100644 index 000000000000..855c8efab6bd Binary files /dev/null and b/front/public/static/landing/data-analytics/data2.png differ diff --git a/front/public/static/landing/data-analytics/data3.png b/front/public/static/landing/data-analytics/data3.png new file mode 100644 index 000000000000..31ca90fac0a5 Binary files /dev/null and b/front/public/static/landing/data-analytics/data3.png differ diff --git a/front/public/static/landing/data-analytics/data4.png b/front/public/static/landing/data-analytics/data4.png new file mode 100644 index 000000000000..d25a4cfa4a32 Binary files /dev/null and b/front/public/static/landing/data-analytics/data4.png differ diff --git a/front/public/static/landing/data-analytics/dataCatalog.png b/front/public/static/landing/data-analytics/dataCatalog.png new file mode 100644 index 000000000000..789a5344baa3 Binary files /dev/null and b/front/public/static/landing/data-analytics/dataCatalog.png differ diff --git a/front/public/static/landing/data-analytics/dataDoc.png b/front/public/static/landing/data-analytics/dataDoc.png new file mode 100644 index 000000000000..5517f2b04354 Binary files /dev/null and b/front/public/static/landing/data-analytics/dataDoc.png differ diff --git a/front/public/static/landing/data-analytics/sqlWriter.png b/front/public/static/landing/data-analytics/sqlWriter.png new file mode 100644 index 000000000000..be80475f09c6 Binary files /dev/null and b/front/public/static/landing/data-analytics/sqlWriter.png differ diff --git a/front/public/static/landing/engineering/debuggingAgent.png b/front/public/static/landing/engineering/debuggingAgent.png new file mode 100644 index 000000000000..3a4030474303 Binary files /dev/null and b/front/public/static/landing/engineering/debuggingAgent.png differ diff --git a/front/public/static/landing/engineering/docParser.png b/front/public/static/landing/engineering/docParser.png new file mode 100644 index 000000000000..2644b7373da7 Binary files /dev/null and b/front/public/static/landing/engineering/docParser.png differ diff --git a/front/public/static/landing/engineering/eng1.png b/front/public/static/landing/engineering/eng1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/engineering/eng1.png differ diff --git a/front/public/static/landing/engineering/eng2.png b/front/public/static/landing/engineering/eng2.png new file mode 100644 index 000000000000..893187f4339c Binary files /dev/null and b/front/public/static/landing/engineering/eng2.png differ diff --git a/front/public/static/landing/engineering/eng3.png b/front/public/static/landing/engineering/eng3.png new file mode 100644 index 000000000000..98cb086c6411 Binary files /dev/null and b/front/public/static/landing/engineering/eng3.png differ diff --git a/front/public/static/landing/engineering/eng4.png b/front/public/static/landing/engineering/eng4.png new file mode 100644 index 000000000000..a5e23d9d4487 Binary files /dev/null and b/front/public/static/landing/engineering/eng4.png differ diff --git a/front/public/static/landing/engineering/incidentHandling.png b/front/public/static/landing/engineering/incidentHandling.png new file mode 100644 index 000000000000..97ca90fd5c35 Binary files /dev/null and b/front/public/static/landing/engineering/incidentHandling.png differ diff --git a/front/public/static/landing/engineering/teamUpdates.png b/front/public/static/landing/engineering/teamUpdates.png new file mode 100644 index 000000000000..0e0c2ce5db26 Binary files /dev/null and b/front/public/static/landing/engineering/teamUpdates.png differ diff --git a/front/public/static/landing/hr/askhr.png b/front/public/static/landing/hr/askhr.png new file mode 100644 index 000000000000..df562b20608c Binary files /dev/null and b/front/public/static/landing/hr/askhr.png differ diff --git a/front/public/static/landing/hr/hr1.png b/front/public/static/landing/hr/hr1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/hr/hr1.png differ diff --git a/front/public/static/landing/hr/hr2.png b/front/public/static/landing/hr/hr2.png new file mode 100644 index 000000000000..4b98c6569fd6 Binary files /dev/null and b/front/public/static/landing/hr/hr2.png differ diff --git a/front/public/static/landing/hr/hr3.png b/front/public/static/landing/hr/hr3.png new file mode 100644 index 000000000000..6e6290ac905c Binary files /dev/null and b/front/public/static/landing/hr/hr3.png differ diff --git a/front/public/static/landing/hr/hr4.png b/front/public/static/landing/hr/hr4.png new file mode 100644 index 000000000000..ce64a95e8269 Binary files /dev/null and b/front/public/static/landing/hr/hr4.png differ diff --git a/front/public/static/landing/hr/interviewnotes.png b/front/public/static/landing/hr/interviewnotes.png new file mode 100644 index 000000000000..dcf91c43ea71 Binary files /dev/null and b/front/public/static/landing/hr/interviewnotes.png differ diff --git a/front/public/static/landing/hr/onboardingbuddy.png b/front/public/static/landing/hr/onboardingbuddy.png new file mode 100644 index 000000000000..aa002f6cd1e7 Binary files /dev/null and b/front/public/static/landing/hr/onboardingbuddy.png differ diff --git a/front/public/static/landing/hr/reviewhelper.png b/front/public/static/landing/hr/reviewhelper.png new file mode 100644 index 000000000000..af03dfd3b163 Binary files /dev/null and b/front/public/static/landing/hr/reviewhelper.png differ diff --git a/front/public/static/landing/it/it1.png b/front/public/static/landing/it/it1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/it/it1.png differ diff --git a/front/public/static/landing/it/it2.png b/front/public/static/landing/it/it2.png new file mode 100644 index 000000000000..f9cbbfb41e61 Binary files /dev/null and b/front/public/static/landing/it/it2.png differ diff --git a/front/public/static/landing/it/it3.png b/front/public/static/landing/it/it3.png new file mode 100644 index 000000000000..4858d1aa1f80 Binary files /dev/null and b/front/public/static/landing/it/it3.png differ diff --git a/front/public/static/landing/it/it4.png b/front/public/static/landing/it/it4.png new file mode 100644 index 000000000000..3acc37f5d379 Binary files /dev/null and b/front/public/static/landing/it/it4.png differ diff --git a/front/public/static/landing/it/itHelpdesk.png b/front/public/static/landing/it/itHelpdesk.png new file mode 100644 index 000000000000..e67406e6f637 Binary files /dev/null and b/front/public/static/landing/it/itHelpdesk.png differ diff --git a/front/public/static/landing/it/itInsights.png b/front/public/static/landing/it/itInsights.png new file mode 100644 index 000000000000..41dc1af60a5e Binary files /dev/null and b/front/public/static/landing/it/itInsights.png differ diff --git a/front/public/static/landing/it/itOps.png b/front/public/static/landing/it/itOps.png new file mode 100644 index 000000000000..abb0c6ef4c2e Binary files /dev/null and b/front/public/static/landing/it/itOps.png differ diff --git a/front/public/static/landing/it/procureHelp.png b/front/public/static/landing/it/procureHelp.png new file mode 100644 index 000000000000..2ac831a84bad Binary files /dev/null and b/front/public/static/landing/it/procureHelp.png differ diff --git a/front/public/static/landing/knowledge/aidigest.png b/front/public/static/landing/knowledge/aidigest.png new file mode 100644 index 000000000000..d2570e5165c1 Binary files /dev/null and b/front/public/static/landing/knowledge/aidigest.png differ diff --git a/front/public/static/landing/knowledge/askacme.png b/front/public/static/landing/knowledge/askacme.png new file mode 100644 index 000000000000..2ce878acb6d5 Binary files /dev/null and b/front/public/static/landing/knowledge/askacme.png differ diff --git a/front/public/static/landing/knowledge/knowledge1.png b/front/public/static/landing/knowledge/knowledge1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/knowledge/knowledge1.png differ diff --git a/front/public/static/landing/knowledge/knowledge2.png b/front/public/static/landing/knowledge/knowledge2.png new file mode 100644 index 000000000000..a0e3e55b408a Binary files /dev/null and b/front/public/static/landing/knowledge/knowledge2.png differ diff --git a/front/public/static/landing/knowledge/knowledge3.png b/front/public/static/landing/knowledge/knowledge3.png new file mode 100644 index 000000000000..aac0fb7ad497 Binary files /dev/null and b/front/public/static/landing/knowledge/knowledge3.png differ diff --git a/front/public/static/landing/knowledge/knowledge4.png b/front/public/static/landing/knowledge/knowledge4.png new file mode 100644 index 000000000000..1c896dc8cd6a Binary files /dev/null and b/front/public/static/landing/knowledge/knowledge4.png differ diff --git a/front/public/static/landing/knowledge/productGuru.png b/front/public/static/landing/knowledge/productGuru.png new file mode 100644 index 000000000000..097693808655 Binary files /dev/null and b/front/public/static/landing/knowledge/productGuru.png differ diff --git a/front/public/static/landing/knowledge/projectstatus.png b/front/public/static/landing/knowledge/projectstatus.png new file mode 100644 index 000000000000..830f4773a871 Binary files /dev/null and b/front/public/static/landing/knowledge/projectstatus.png differ diff --git a/front/public/static/landing/legal/asklegal.png b/front/public/static/landing/legal/asklegal.png new file mode 100644 index 000000000000..2939b35822f0 Binary files /dev/null and b/front/public/static/landing/legal/asklegal.png differ diff --git a/front/public/static/landing/legal/contractwriter.png b/front/public/static/landing/legal/contractwriter.png new file mode 100644 index 000000000000..81f4fa148a17 Binary files /dev/null and b/front/public/static/landing/legal/contractwriter.png differ diff --git a/front/public/static/landing/legal/legal1.png b/front/public/static/landing/legal/legal1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/legal/legal1.png differ diff --git a/front/public/static/landing/legal/legal2.png b/front/public/static/landing/legal/legal2.png new file mode 100644 index 000000000000..4dd97897df3e Binary files /dev/null and b/front/public/static/landing/legal/legal2.png differ diff --git a/front/public/static/landing/legal/legal3.png b/front/public/static/landing/legal/legal3.png new file mode 100644 index 000000000000..95a716a7c5d4 Binary files /dev/null and b/front/public/static/landing/legal/legal3.png differ diff --git a/front/public/static/landing/legal/legal4.png b/front/public/static/landing/legal/legal4.png new file mode 100644 index 000000000000..ae1eb1636e76 Binary files /dev/null and b/front/public/static/landing/legal/legal4.png differ diff --git a/front/public/static/landing/legal/legalreviewer.png b/front/public/static/landing/legal/legalreviewer.png new file mode 100644 index 000000000000..6651697091a6 Binary files /dev/null and b/front/public/static/landing/legal/legalreviewer.png differ diff --git a/front/public/static/landing/legal/regulatorywatch.png b/front/public/static/landing/legal/regulatorywatch.png new file mode 100644 index 000000000000..cd208075019c Binary files /dev/null and b/front/public/static/landing/legal/regulatorywatch.png differ diff --git a/front/public/static/landing/logos/fleet.png b/front/public/static/landing/logos/fleet.png new file mode 100644 index 000000000000..42a8852f2e7c Binary files /dev/null and b/front/public/static/landing/logos/fleet.png differ diff --git a/front/public/static/landing/logos/lifen.png b/front/public/static/landing/logos/lifen.png new file mode 100644 index 000000000000..216474465e90 Binary files /dev/null and b/front/public/static/landing/logos/lifen.png differ diff --git a/front/public/static/landing/marketing/aiNewsletter.png b/front/public/static/landing/marketing/aiNewsletter.png new file mode 100644 index 000000000000..4eabc4212057 Binary files /dev/null and b/front/public/static/landing/marketing/aiNewsletter.png differ diff --git a/front/public/static/landing/marketing/contentOptimizer.png b/front/public/static/landing/marketing/contentOptimizer.png new file mode 100644 index 000000000000..2a60426645ea Binary files /dev/null and b/front/public/static/landing/marketing/contentOptimizer.png differ diff --git a/front/public/static/landing/marketing/crossMedia.png b/front/public/static/landing/marketing/crossMedia.png new file mode 100644 index 000000000000..9d2be3033509 Binary files /dev/null and b/front/public/static/landing/marketing/crossMedia.png differ diff --git a/front/public/static/landing/marketing/localizer.png b/front/public/static/landing/marketing/localizer.png new file mode 100644 index 000000000000..8bcd389823a6 Binary files /dev/null and b/front/public/static/landing/marketing/localizer.png differ diff --git a/front/public/static/landing/marketing/marketing1.png b/front/public/static/landing/marketing/marketing1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/marketing/marketing1.png differ diff --git a/front/public/static/landing/marketing/marketing2.png b/front/public/static/landing/marketing/marketing2.png new file mode 100644 index 000000000000..49b70b57cbe2 Binary files /dev/null and b/front/public/static/landing/marketing/marketing2.png differ diff --git a/front/public/static/landing/marketing/marketing3.png b/front/public/static/landing/marketing/marketing3.png new file mode 100644 index 000000000000..fc970c87d0b1 Binary files /dev/null and b/front/public/static/landing/marketing/marketing3.png differ diff --git a/front/public/static/landing/marketing/marketing4.png b/front/public/static/landing/marketing/marketing4.png new file mode 100644 index 000000000000..35c0080a5dd5 Binary files /dev/null and b/front/public/static/landing/marketing/marketing4.png differ diff --git a/front/public/static/landing/productivity/blogdigest.png b/front/public/static/landing/productivity/blogdigest.png new file mode 100644 index 000000000000..3837a84078c7 Binary files /dev/null and b/front/public/static/landing/productivity/blogdigest.png differ diff --git a/front/public/static/landing/productivity/contentoptimizer.png b/front/public/static/landing/productivity/contentoptimizer.png new file mode 100644 index 000000000000..f34ccac2454a Binary files /dev/null and b/front/public/static/landing/productivity/contentoptimizer.png differ diff --git a/front/public/static/landing/productivity/discoverycoach.png b/front/public/static/landing/productivity/discoverycoach.png new file mode 100644 index 000000000000..c4d271fd68ec Binary files /dev/null and b/front/public/static/landing/productivity/discoverycoach.png differ diff --git a/front/public/static/landing/productivity/leadershipmeetingrecap.png b/front/public/static/landing/productivity/leadershipmeetingrecap.png new file mode 100644 index 000000000000..51bba621bbeb Binary files /dev/null and b/front/public/static/landing/productivity/leadershipmeetingrecap.png differ diff --git a/front/public/static/landing/productivity/productivity1.png b/front/public/static/landing/productivity/productivity1.png new file mode 100644 index 000000000000..6c2a13a31544 Binary files /dev/null and b/front/public/static/landing/productivity/productivity1.png differ diff --git a/front/public/static/landing/productivity/productivity2.png b/front/public/static/landing/productivity/productivity2.png new file mode 100644 index 000000000000..92abc92f2750 Binary files /dev/null and b/front/public/static/landing/productivity/productivity2.png differ diff --git a/front/public/static/landing/productivity/productivity3.png b/front/public/static/landing/productivity/productivity3.png new file mode 100644 index 000000000000..2c68e6fdc482 Binary files /dev/null and b/front/public/static/landing/productivity/productivity3.png differ diff --git a/front/public/static/landing/productivity/productivity4.png b/front/public/static/landing/productivity/productivity4.png new file mode 100644 index 000000000000..6e91ddfe9cf0 Binary files /dev/null and b/front/public/static/landing/productivity/productivity4.png differ diff --git a/front/public/static/landing/solutions/sales1.png b/front/public/static/landing/sales/accountSnapshot.png similarity index 100% rename from front/public/static/landing/solutions/sales1.png rename to front/public/static/landing/sales/accountSnapshot.png diff --git a/front/public/static/landing/solutions/sales2.png b/front/public/static/landing/sales/meetingSummary.png similarity index 100% rename from front/public/static/landing/solutions/sales2.png rename to front/public/static/landing/sales/meetingSummary.png diff --git a/front/public/static/landing/solutions/sales3.png b/front/public/static/landing/sales/prospectQuestions.png similarity index 100% rename from front/public/static/landing/solutions/sales3.png rename to front/public/static/landing/sales/prospectQuestions.png diff --git a/front/public/static/landing/sales/sales3.png b/front/public/static/landing/sales/sales3.png index 5822ae8195d8..5633c5edcb1b 100644 Binary files a/front/public/static/landing/sales/sales3.png and b/front/public/static/landing/sales/sales3.png differ diff --git a/front/public/static/landing/sales/sales4.png b/front/public/static/landing/sales/sales4.png index 8d64b0ddbed0..f21a6199324c 100644 Binary files a/front/public/static/landing/sales/sales4.png and b/front/public/static/landing/sales/sales4.png differ diff --git a/front/public/static/landing/sales/salesCoach.png b/front/public/static/landing/sales/salesCoach.png new file mode 100644 index 000000000000..2f85768e3de8 Binary files /dev/null and b/front/public/static/landing/sales/salesCoach.png differ diff --git a/front/public/static/landing/solutions/sales4.png b/front/public/static/landing/solutions/sales4.png deleted file mode 100644 index da604d53069d..000000000000 Binary files a/front/public/static/landing/solutions/sales4.png and /dev/null differ diff --git a/front/public/static/landing/solutions/support2.png b/front/public/static/landing/solutions/support2.png deleted file mode 100644 index 37e4e3dd1c3f..000000000000 Binary files a/front/public/static/landing/solutions/support2.png and /dev/null differ diff --git a/front/public/static/landing/solutions/support3.png b/front/public/static/landing/support/docExpert.png similarity index 100% rename from front/public/static/landing/solutions/support3.png rename to front/public/static/landing/support/docExpert.png diff --git a/front/public/static/landing/support/support4.png b/front/public/static/landing/support/support4.png index 6e2f07a00367..35938ade966b 100644 Binary files a/front/public/static/landing/support/support4.png and b/front/public/static/landing/support/support4.png differ diff --git a/front/public/static/landing/support/ticketDeflection.png b/front/public/static/landing/support/ticketDeflection.png new file mode 100644 index 000000000000..da9c3d6190d5 Binary files /dev/null and b/front/public/static/landing/support/ticketDeflection.png differ diff --git a/front/public/static/landing/solutions/support4.png b/front/public/static/landing/support/ticketInsights.png similarity index 100% rename from front/public/static/landing/solutions/support4.png rename to front/public/static/landing/support/ticketInsights.png diff --git a/front/public/static/landing/solutions/support1.png b/front/public/static/landing/support/ticketResolution.png similarity index 100% rename from front/public/static/landing/solutions/support1.png rename to front/public/static/landing/support/ticketResolution.png