@@ -68,6 +68,51 @@ const COPY = {
6868 ] ,
6969 workflowKicker : "How it feels" ,
7070 workflowTitle : "Less explaining. More replying." ,
71+ useCasesKicker : "When to use it" ,
72+ useCasesTitle : "For the moments where a reply is not just a reply." ,
73+ useCasesText :
74+ "Sayless helps when the problem is not typing, but deciding what kind of person you want to sound like in that chat." ,
75+ useCases : [
76+ {
77+ id : "rizz" ,
78+ label : "Rizz" ,
79+ title : "When you are talking to someone you like" ,
80+ thought : "What do I even say here without sounding desperate..." ,
81+ chatName : "Maya" ,
82+ messages : [
83+ { side : "other" , text : "Tonight was actually fun." } ,
84+ { side : "other" , text : "You are not as annoying as I thought" } ,
85+ { side : "me" , text : "I will take that as a compliment." }
86+ ] ,
87+ suggestion : "Careful. One more compliment and I might ask you out properly."
88+ } ,
89+ {
90+ id : "foreign" ,
91+ label : "Foreign friends" ,
92+ title : "When the room moves in another language" ,
93+ thought : "I want to join in with slang and not sound like a textbook..." ,
94+ chatName : "Yuki and Chen" ,
95+ messages : [
96+ { side : "other" , text : "昨日の写真めっちゃ笑った lol" } ,
97+ { side : "other" , text : "你们昨天真的太搞笑了" } ,
98+ { side : "me" , text : "I understood like 70% of it" }
99+ ] ,
100+ suggestion : "Wait, I caught enough to know I was being roasted in two languages. Fair though, that photo was criminal."
101+ } ,
102+ {
103+ id : "lazy" ,
104+ label : "Low-energy replies" ,
105+ title : "When you do not really want to talk" ,
106+ thought : "I do not want to be rude, but I also do not want to continue this..." ,
107+ chatName : "Evan" ,
108+ messages : [
109+ { side : "other" , text : "So what are you doing later?" } ,
110+ { side : "other" , text : "We could talk for a bit if you are free" } ,
111+ { side : "me" , text : "Maybe, not sure yet" }
112+ ] ,
113+ suggestion : "I am pretty wiped today, so I will probably keep it low-key. Hope your night is good though."
114+ }
115+ ] ,
71116 steps : [
72117 { title : "You are in KakaoTalk" , text : "No copying the whole conversation into a separate AI app." } ,
73118 {
@@ -85,7 +130,7 @@ const COPY = {
85130 finalCta : "Review install notes" ,
86131 platformsKicker : "Works with" ,
87132 platformsTitle : "Works with your favorite messaging apps" ,
88- platformsText : "KakaoTalk, Instagram, Discord, Slack, and more." ,
133+ platformsText : "KakaoTalk, Web Instagram, Discord, Slack, and more." ,
89134 platformStatusReady : "Available now" ,
90135 platformStatusPlanned : "Planned" ,
91136 platformsDisclaimer :
@@ -251,6 +296,51 @@ const COPY = {
251296 ] ,
252297 workflowKicker : "실제로는 이런 느낌" ,
253298 workflowTitle : "설명은 줄이고. 답장은 빨리." ,
299+ useCasesKicker : "어디에 쓰냐면" ,
300+ useCasesTitle : "답장은 문장보다 타이밍과 온도가 더 중요할 때가 많습니다." ,
301+ useCasesText :
302+ "Sayless는 그냥 자동 답장 생성기가 아니라, 지금 채팅방에서 어떤 사람처럼 보여야 할지까지 같이 잡아주는 대화 어시스턴트입니다." ,
303+ useCases : [
304+ {
305+ id : "rizz" ,
306+ label : "썸타는 상대에게" ,
307+ title : "괜히 진지해 보이긴 싫은데, 호감은 보여야 할 때" ,
308+ thought : "뭐라 해야 하지 하... 너무 들이대는 것처럼 보이면 안 되는데" ,
309+ chatName : "지민" ,
310+ messages : [
311+ { side : "other" , text : "오늘 생각보다 재밌었어" } ,
312+ { side : "other" , text : "너 은근 웃기더라" } ,
313+ { side : "me" , text : "은근은 좀 아쉽네" }
314+ ] ,
315+ suggestion : "그럼 다음엔 대놓고 웃겨볼게. 내일 커피 한 번 더 할래?"
316+ } ,
317+ {
318+ id : "foreign" ,
319+ label : "외국인 친구와 대화할 때" ,
320+ title : "영어나 일본어 섞인 대화에 자연스럽게 끼고 싶을 때" ,
321+ thought : "슬랭 섞으면서 재밌게 얘기 끼고 싶은데, 번역기 말투는 싫어..." ,
322+ chatName : "Alex, Yuki" ,
323+ messages : [
324+ { side : "other" , text : "昨日の写真めっちゃ笑った lol" } ,
325+ { side : "other" , text : "Bro that was actually iconic" } ,
326+ { side : "me" , text : "나 그거 아직도 이해 중임" }
327+ ] ,
328+ suggestion : "Okay I got roasted in two languages, but honestly that photo deserved it."
329+ } ,
330+ {
331+ id : "lazy" ,
332+ label : "답장 귀찮은 상대일 때" ,
333+ title : "말하긴 싫은데, 무시하기도 애매할 때" ,
334+ thought : "별로 이어가고 싶진 않은데 뭐라고 끝내야 덜 이상하지" ,
335+ chatName : "민수" ,
336+ messages : [
337+ { side : "other" , text : "오늘 뭐해?" } ,
338+ { side : "other" , text : "시간 되면 좀 얘기하자" } ,
339+ { side : "me" , text : "아직 모르겠어" }
340+ ] ,
341+ suggestion : "오늘은 좀 정신없어서 길게 얘기하긴 어려울 것 같아. 나중에 여유 생기면 말할게."
342+ }
343+ ] ,
254344 steps : [
255345 { title : "카톡을 보고 있다가" , text : "대화 전체를 다른 AI 앱에 복붙할 필요가 없습니다." } ,
256346 {
@@ -478,6 +568,8 @@ function HomePage({ lang, setLang, t }) {
478568 < AssistantMockup key = { lang } demo = { t . demo } />
479569 </ section >
480570
571+ < UseCasesSection t = { t } />
572+
481573 < PlatformsSection t = { t } />
482574
483575 < section className = "proof-band" aria-label = "Sayless workflow" >
@@ -1116,6 +1208,56 @@ function FeatureCard({ icon, title, text }) {
11161208 ) ;
11171209}
11181210
1211+ function UseCasesSection ( { t } ) {
1212+ return (
1213+ < section className = "section use-cases-section" aria-label = { t . home . useCasesKicker } >
1214+ < div className = "use-cases-heading" >
1215+ < p className = "section-kicker" > { t . home . useCasesKicker } </ p >
1216+ < h2 > { t . home . useCasesTitle } </ h2 >
1217+ < p > { t . home . useCasesText } </ p >
1218+ </ div >
1219+ < div className = "use-case-grid" >
1220+ { t . home . useCases . map ( ( useCase ) => (
1221+ < UseCaseCard key = { useCase . id } useCase = { useCase } />
1222+ ) ) }
1223+ </ div >
1224+ </ section >
1225+ ) ;
1226+ }
1227+
1228+ function UseCaseCard ( { useCase } ) {
1229+ return (
1230+ < article className = { `use-case-card ${ useCase . id } ` } >
1231+ < div className = "use-case-top" >
1232+ < span className = "use-case-pill" > { useCase . label } </ span >
1233+ < MessageSquareText size = { 18 } />
1234+ </ div >
1235+ < h3 > { useCase . title } </ h3 >
1236+ < div className = "mini-chat" aria-label = { useCase . chatName } >
1237+ < div className = "mini-chat-head" >
1238+ < span > </ span >
1239+ < strong > { useCase . chatName } </ strong >
1240+ </ div >
1241+ < div className = "mini-chat-thread" >
1242+ { useCase . messages . map ( ( message , index ) => (
1243+ < p key = { `${ message . text } -${ index } ` } className = { `mini-message ${ message . side } ` } >
1244+ { message . text }
1245+ </ p >
1246+ ) ) }
1247+ </ div >
1248+ < div className = "mini-thought" >
1249+ < Wand2 size = { 15 } />
1250+ < span > { useCase . thought } </ span >
1251+ </ div >
1252+ </ div >
1253+ < div className = "mini-suggestion" >
1254+ < span > Sayless</ span >
1255+ < p > { useCase . suggestion } </ p >
1256+ </ div >
1257+ </ article >
1258+ ) ;
1259+ }
1260+
11191261function PlatformsSection ( { t } ) {
11201262 return (
11211263 < section className = "section platform-section" aria-label = { t . home . platformsKicker } >
0 commit comments