Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 30 additions & 8 deletions app/[lang]/(hyperjump)/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -261,12 +261,22 @@ import {
tddWhyUsReasons1,
tddWhyUsReasons2,
aiWhoIsItTarget2,
startGptHeroDesc,
aiWhatWeDeliverCard0Title,
aiWhatWeDeliverCard1Text,
aiWhatWeDeliverCard2Text,
mediaPulseHeroDesc
aiWhatWeDeliverCard2Text
} from "@/locales/.generated/server";
import {
aiFaq0Answer,
aiFaq0Question,
aiFaq1Answer,
aiFaq1Question,
aiFaq2Answer,
aiFaq2Question,
aiFaq3Answer,
aiFaq3Question,
aiFaq4Answer,
aiFaq4Question
} from "@/locales/.generated/strings";

export function getCaseStudies(lang: SupportedLanguage) {
return [
Expand Down Expand Up @@ -405,6 +415,7 @@ export type Service = {
shortDescription: string;
slug: ServiceSlug;
title: string;
faqs: { question: string; answer: string }[];
};

export function services(lang: SupportedLanguage): Service[] {
Expand Down Expand Up @@ -517,7 +528,14 @@ export function services(lang: SupportedLanguage): Service[] {
shortDescription: aiHeroDesc(lang),
slug: ServiceSlug.InferenceAI,
title: aiHeroHeading(lang),
caseStudies: []
caseStudies: [],
faqs: [
{ question: aiFaq0Question(lang), answer: aiFaq0Answer(lang) },
{ question: aiFaq1Question(lang), answer: aiFaq1Answer(lang) },
{ question: aiFaq2Question(lang), answer: aiFaq2Answer(lang) },
{ question: aiFaq3Question(lang), answer: aiFaq3Answer(lang) },
{ question: aiFaq4Question(lang), answer: aiFaq4Answer(lang) }
]
},
{
bestFor: erpBestFor(lang),
Expand Down Expand Up @@ -631,7 +649,8 @@ export function services(lang: SupportedLanguage): Service[] {
shortDescription: erpHeroDesc(lang),
slug: ServiceSlug.ErpImplementation,
title: erpHeroHeading(lang),
caseStudies: []
caseStudies: [],
faqs: []
},
{
bestFor: ctoaasBestFor(lang),
Expand Down Expand Up @@ -785,7 +804,8 @@ export function services(lang: SupportedLanguage): Service[] {
category: caseStudyCtoaasMediaCategory(lang),
basePath: "case-studies"
}
]
],
faqs: []
},
{
bestFor: saasBestFor(lang),
Expand Down Expand Up @@ -891,7 +911,8 @@ export function services(lang: SupportedLanguage): Service[] {
shortDescription: saasHeroDesc(lang),
slug: ServiceSlug.SoftwareAsAService,
title: saasHeroHeading(lang),
caseStudies: []
caseStudies: [],
faqs: []
},
{
bestFor: tddBestFor(lang),
Expand Down Expand Up @@ -1021,7 +1042,8 @@ export function services(lang: SupportedLanguage): Service[] {
shortDescription: tddHeroDesc(lang),
slug: ServiceSlug.TechDueDiligence,
title: tddHeroHeading(lang),
caseStudies: []
caseStudies: [],
faqs: []
}
];
}
Expand Down
52 changes: 52 additions & 0 deletions app/[lang]/(hyperjump)/services/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@ import type { CaseStudy, Service } from "../../data";
import { serviceBySlug, ServiceSlug } from "../../data";
import { dynamicOpengraph } from "@/lib/default-metadata";
import RequestDemoButton from "./components/request-demo-button";
import { GridItemsTitle } from "@/app/components/grid-items";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger
} from "@/components/ui/accordion";
import { CardContent, CardHeader } from "@/components/ui/card";
import { aiFaqDesc, aiFaqHeading } from "@/locales/.generated/strings";

type LangProps = {
lang: SupportedLanguage;
Expand Down Expand Up @@ -92,6 +101,7 @@ export default async function ServiceDetail({ params }: ServiceDetailProps) {
<HowItWorks lang={lang} service={service} />
<WhatYouGet lang={lang} service={service} />
<WhyUs lang={lang} service={service} />
<Faqs lang={lang} service={service} />
<Recommendation caseStudies={service.caseStudies} lang={lang} />
<CallToAction lang={lang} service={service} />
</>
Expand Down Expand Up @@ -510,3 +520,45 @@ function CallToAction({ lang, service }: LangProps & ServiceProps) {
</section>
);
}

function Faqs({ lang, service }: LangProps & ServiceProps) {
const { faqs } = service;

if (faqs.length === 0) return null;

return (
<section className="flex bg-white px-4 py-8 md:px-20 md:py-16">
<div className="mx-auto flex w-full max-w-5xl flex-col items-start gap-6 md:flex-row-reverse">
<div className="w-full">
<GridItemsTitle
title={aiFaqHeading(lang)}
description={aiFaqDesc(lang)}
layout="vertical"
descriptionClassname="w-full md:max-w-2xl"
/>
<Accordion
type="single"
collapsible
className="mx-auto w-full max-w-5xl space-y-4">
{faqs?.map((item, i) => (
<AccordionItem key={i} value={`faq-${i}`} asChild>
<CardContent className="w-full rounded-2xl border border-gray-200 bg-white shadow-xs transition-all duration-300">
<CardHeader className="px-2 py-1">
<AccordionTrigger className="flex w-full items-center justify-between gap-2 text-left text-xl font-medium text-[#020F15] no-underline transition hover:no-underline focus:no-underline">
{item.question}
</AccordionTrigger>
</CardHeader>
<AccordionContent asChild>
<CardContent className="flex flex-col gap-4 px-2 text-base text-[#61656E] lg:text-lg">
{item.answer}
</CardContent>
</AccordionContent>
</CardContent>
</AccordionItem>
))}
</Accordion>
</div>
</div>
</section>
);
}
15 changes: 15 additions & 0 deletions locales/en/ai.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,20 @@
"products": {
"title": "Our Products",
"description": "Innovative products tailored to support your goals and scale with your needs."
},
"faq": {
"heading": "Frequently asked questions",
"desc": "Everything you need to go from concept to fully deployed Al agent-done for you, end to end.",

"0_question": "What kinds of problems can a custom AI agent solve?",
"0_answer": "AI agents can handle everything from answering customer inquiries, managing internal workflows, extracting insights from documents, to automating tasks across apps like Slack, CRMs, and databases. If it's repetitive, time-consuming, or data-driven. An agent can likely help.",
"1_question": "How long does the process take?",
"1_answer": "Most clients go from strategy to launch in 10-14 business days.",
"2_question": "Do I need to know anything about AI?",
"2_answer": "Nope. We handle all the technical work. Just tell us what you want the agent to do.",
"3_question": "What kind of tools can it integrate with?",
"3_answer": "Slack, Notion, Google Workspace, CRMs, Zapier, APIs, internal databases, you name it.",
"4_question": "Can the AI use our internal data?",
"4_answer": "Yes. We use Retrieval-Augmented Generation (RAG) to let your agent access and reason over your internal documents, knowledge bases, and systems. Securely and with up-to-date context."
}
}
15 changes: 15 additions & 0 deletions locales/id/ai.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,20 @@
"products": {
"title": "Produk Kami",
"description": "Produk inovatif yang dirancang untuk mendukung tujuan Anda dan berkembang sesuai kebutuhan Anda."
},
"faq": {
"heading": "Pertanyaan yang Sering Diajukan",
"desc": "Segala hal yang Anda butuhkan untuk mewujudkan agen AI dari konsep hingga implementasi penuh dikerjakan secara menyeluruh oleh kami.",

"0_question": "Masalah apa saja yang bisa diselesaikan agen AI kustom?",
"0_answer": "Agen AI dapat menangani berbagai hal mulai dari menjawab pertanyaan pelanggan, mengelola alur kerja internal, mengekstraksi wawasan dari dokumen, hingga mengotomatisasi tugas antar aplikasi seperti Slack, CRM, dan basis data. Jika itu repetitif, memakan waktu, atau berbasis data agen AI bisa membantu.",
"1_question": "Berapa lama prosesnya?",
"1_answer": "Sebagian besar klien kami menjalani proses dari strategi hingga peluncuran dalam 10-14 hari kerja.",
"2_question": "Apakah saya harus memahami AI?",
"2_answer": "Tidak perlu. Kami menangani seluruh aspek teknisnya Anda cukup menjelaskan apa yang ingin dilakukan oleh agen tersebut.",
"3_question": "Alat apa saja yang bisa diintegrasikan?",
"3_answer": "Slack, Notion, Google Workspace, CRM, Zapier, API, basis data internal apa pun bisa diintegrasikan.",
"4_question": "Apakah AI bisa menggunakan data internal kami?",
"4_answer": "Bisa. Kami menggunakan Retrieval-Augmented Generation (RAG) agar agen Anda dapat mengakses dan memahami dokumen internal, basis pengetahuan, dan sistem Anda secara aman dan kontekstual."
}
}
Loading