856 lines
33 KiB
TypeScript
856 lines
33 KiB
TypeScript
export type Locale = 'fa' | 'en';
|
||
|
||
export const LOCALES: Locale[] = ['fa', 'en'];
|
||
export const DEFAULT_LOCALE: Locale = 'fa';
|
||
|
||
/**
|
||
* Service identifiers stay locale-independent so they can key into
|
||
* routes (`/services/[slug]`), analytics events, and form values.
|
||
*/
|
||
export const SERVICE_IDS = [
|
||
'strategy',
|
||
'automation',
|
||
'llm-rag',
|
||
'architecture',
|
||
'mobile',
|
||
'google-stack',
|
||
] as const;
|
||
export type ServiceId = (typeof SERVICE_IDS)[number];
|
||
|
||
export const dict = {
|
||
fa: {
|
||
meta: {
|
||
title: 'سروش اسعدی — مهندس هوش مصنوعی، مشاور، معمار راهکار',
|
||
description:
|
||
'طراحی و پیادهسازی سامانههای هوش مصنوعی در مقیاس سازمانی — راهبرد، LLM و RAG، اتوماسیون عاملمحور، زیرساخت ابری و استک گوگل.',
|
||
},
|
||
nav: {
|
||
services: 'خدمات',
|
||
stack: 'استک',
|
||
expertise: 'تخصص',
|
||
portfolio: 'نمونهکارها',
|
||
blog: 'بلاگ',
|
||
contact: 'تماس',
|
||
book: 'رزرو جلسه',
|
||
},
|
||
locale: {
|
||
switchTo: 'EN',
|
||
label: 'زبان',
|
||
},
|
||
hero: {
|
||
availability: 'پذیرش پروژههای منتخب فصل سوم ۲۰۲۶',
|
||
eyebrow: 'مهندس هوش مصنوعی · مشاور · معمار راهکار',
|
||
name: 'سروش اسعدی',
|
||
headlineLead: 'طراحی سامانههای',
|
||
headlineAccent: 'هوش مصنوعی',
|
||
headlineTrail: 'در مقیاس سازمانی.',
|
||
sub:
|
||
'از راهبرد تا تولید — ساخت پایپلاینهای LLM، عاملهای خودکار، و معماریهای ابری که در میلیونها رویداد در روز پایدار میمانند.',
|
||
roles: [
|
||
'راهبرد هوش مصنوعی',
|
||
'مهندسی LLM و RAG',
|
||
'معماری راهکار',
|
||
'اتوماسیون عاملمحور',
|
||
'استک گوگل کلود',
|
||
],
|
||
ctaPrimary: 'رزرو جلسه مشاوره',
|
||
ctaSecondary: 'مشاهده خدمات',
|
||
scroll: 'اسکرول',
|
||
metrics: [
|
||
{ value: '۱۸+', label: 'مدل هوش مصنوعی مستقر' },
|
||
{ value: '۴۰+', label: 'میکروسرویس تولید' },
|
||
{ value: '۱۲ms', label: 'تأخیر استنتاج' },
|
||
{ value: '۹۹٪', label: 'پایداری SLA' },
|
||
],
|
||
},
|
||
services: {
|
||
eyebrow: 'خدمات',
|
||
title: 'شش حوزه تخصصی',
|
||
sub:
|
||
'از اولین جلسهی راهبرد تا استقرار تولید — یک شریک مهندسی برای کل چرخهی عمر هوش مصنوعی شما.',
|
||
items: [
|
||
{
|
||
id: 'strategy',
|
||
title: 'راهبرد و نقشه راه هوش مصنوعی',
|
||
description:
|
||
'ارزیابی بلوغ سازمانی، شناسایی موارد کاربری با بیشترین بازده، و طراحی نقشه راه ۱۲–۱۸ ماهه با KPIهای روشن.',
|
||
tags: ['Discovery', 'ROI Mapping', 'Roadmap'],
|
||
color: 'electric',
|
||
},
|
||
{
|
||
id: 'automation',
|
||
title: 'اتوماسیون هوش مصنوعی',
|
||
description:
|
||
'ساخت عاملهای خودکار و گردشکارهای n8n که فرایندهای دستی را به سامانههای قابل ممیزی تبدیل میکنند.',
|
||
tags: ['n8n', 'Agents', 'Workflows'],
|
||
color: 'violet',
|
||
},
|
||
{
|
||
id: 'llm-rag',
|
||
title: 'مهندسی LLM و RAG',
|
||
description:
|
||
'طراحی pipelineهای RAG با پایگاههای برداری، evaluation framework، و سرویسدهی با تأخیر زیر ۵۰ میلیثانیه.',
|
||
tags: ['RAG', 'Vector DB', 'Eval'],
|
||
color: 'magenta',
|
||
},
|
||
{
|
||
id: 'architecture',
|
||
title: 'معماری راهکار',
|
||
description:
|
||
'طراحی سامانههای توزیعشده روی Kubernetes با میکروسرویسها، event streaming، و الگوهای پایداری در مقیاس بالا.',
|
||
tags: ['K8s', 'Microservices', 'Event-Driven'],
|
||
color: 'emerald',
|
||
},
|
||
{
|
||
id: 'mobile',
|
||
title: 'اپلیکیشنهای موبایل هوش مصنوعی',
|
||
description:
|
||
'برنامههای Flutter، Swift و Kotlin با on-device inference، استریم LLM و تجربهی کاربری بومی.',
|
||
tags: ['Flutter', 'Swift', 'Kotlin'],
|
||
color: 'electric',
|
||
},
|
||
{
|
||
id: 'google-stack',
|
||
title: 'تخصص استک گوگل',
|
||
description:
|
||
'استقرار روی Vertex AI، GKE و Gemini با بهینهسازی هزینه و الگوهای امنیتی سطح enterprise.',
|
||
tags: ['Vertex AI', 'GKE', 'Gemini'],
|
||
color: 'cyan',
|
||
},
|
||
],
|
||
},
|
||
dataflow: {
|
||
eyebrow: 'پایپلاین',
|
||
title: 'از سند خام تا پاسخ قابل اتکا',
|
||
sub:
|
||
'مسیری که هر پرسش در یک سامانهی RAG تولیدی طی میکند — هر مرحله قابل اندازهگیری، قابل ممیزی و بهینهشده برای تأخیر.',
|
||
caption: 'تأخیر سرتاسری زیر ۵۰ میلیثانیه · هر مرحله مشاهدهپذیر',
|
||
nodes: [
|
||
{
|
||
id: 'ingest',
|
||
label: 'دریافت',
|
||
desc: 'نرمالسازی، قطعهبندی و پاکسازی اسناد منبع',
|
||
accent: 'electric',
|
||
},
|
||
{
|
||
id: 'embed',
|
||
label: 'برداریسازی',
|
||
desc: 'تولید embedding و نمایهسازی در پایگاه برداری',
|
||
accent: 'violet',
|
||
},
|
||
{
|
||
id: 'retrieve',
|
||
label: 'بازیابی',
|
||
desc: 'جستجوی ترکیبی معنایی و کلیدواژهای',
|
||
accent: 'cyan',
|
||
},
|
||
{
|
||
id: 'rerank',
|
||
label: 'بازرتبهبندی',
|
||
desc: 'مرتبسازی مجدد نامزدها با cross-encoder',
|
||
accent: 'magenta',
|
||
},
|
||
{
|
||
id: 'generate',
|
||
label: 'تولید',
|
||
desc: 'پاسخ مستند با ارجاع به منبع',
|
||
accent: 'emerald',
|
||
},
|
||
],
|
||
},
|
||
stack: {
|
||
eyebrow: 'استک',
|
||
title: 'ابزارهای روزانه',
|
||
sub:
|
||
'هر چه ساخته میشود از این پایهها بیرون میآید — انتخابشده برای عمر طولانی، نه ترند روز.',
|
||
categories: [
|
||
{
|
||
id: 'languages',
|
||
label: 'زبانها',
|
||
items: ['Python', 'TypeScript', 'Go', 'Rust', 'SQL'],
|
||
},
|
||
{
|
||
id: 'mobile',
|
||
label: 'موبایل',
|
||
items: ['Flutter', 'Swift / SwiftUI', 'Kotlin', 'React Native'],
|
||
},
|
||
{
|
||
id: 'infra',
|
||
label: 'زیرساخت',
|
||
items: ['Kubernetes', 'Terraform', 'Postgres', 'Redis', 'Kafka', 'NATS'],
|
||
},
|
||
{
|
||
id: 'ai',
|
||
label: 'هوش مصنوعی',
|
||
items: ['Vertex AI', 'Gemini', 'OpenAI', 'Anthropic', 'LangGraph', 'Pinecone', 'pgvector'],
|
||
},
|
||
],
|
||
},
|
||
expertise: {
|
||
eyebrow: 'تخصص',
|
||
title: 'اعدادی که اهمیت دارند',
|
||
sub:
|
||
'سامانههایی که در میلیونها رویداد در روز پایدار میمانند — اینها معیارهایی هستند که اندازه میگیریم.',
|
||
bars: [
|
||
{ label: 'مهندسی LLM و RAG', value: 95 },
|
||
{ label: 'معماری ابری و Kubernetes', value: 92 },
|
||
{ label: 'سیستمهای عاملمحور و اتوماسیون', value: 90 },
|
||
{ label: 'استک گوگل کلود (Vertex / GKE)', value: 88 },
|
||
{ label: 'موبایل بومی و cross-platform', value: 82 },
|
||
],
|
||
},
|
||
blog: {
|
||
eyebrow: 'بلاگ',
|
||
title: 'یادداشتهای مهندسی',
|
||
sub:
|
||
'یافتهها از پروژههای واقعی — نه ترجمهی مقاله، نه فهرست hype.',
|
||
readMore: 'ادامه',
|
||
readTimeSuffix: 'دقیقه',
|
||
items: [
|
||
{
|
||
slug: 'rag-eval-framework',
|
||
category: 'LLM',
|
||
title: 'چارچوب ارزیابی RAG که در تولید کار میکند',
|
||
excerpt:
|
||
'چرا BLEU و ROUGE برای RAG ناکافیاند، و معیارهایی که در پروژههای واقعی تصمیم میسازند.',
|
||
readTime: 8,
|
||
},
|
||
{
|
||
slug: 'agentic-n8n-patterns',
|
||
category: 'Automation',
|
||
title: 'الگوهای عاملمحور با n8n برای سازمان',
|
||
excerpt:
|
||
'چگونه n8n را با LangGraph ترکیب کنیم تا گردشکارهای قابل ممیزی بسازیم.',
|
||
readTime: 11,
|
||
},
|
||
{
|
||
slug: 'vertex-cost-control',
|
||
category: 'Google Stack',
|
||
title: 'کنترل هزینه روی Vertex AI در مقیاس بالا',
|
||
excerpt:
|
||
'سه ضدالگو که در ۸۰٪ پروژههای Vertex میبینم، و چگونه ۶۰٪ هزینه را کاهش دادیم.',
|
||
readTime: 6,
|
||
},
|
||
{
|
||
slug: 'k8s-llm-inference',
|
||
category: 'Infra',
|
||
title: 'استنتاج LLM روی Kubernetes با تأخیر زیر ۵۰ میلیثانیه',
|
||
excerpt:
|
||
'الگوی استقرار با KEDA، GPU sharing، و request hedging برای سرویسدهی پایدار.',
|
||
readTime: 14,
|
||
},
|
||
{
|
||
slug: 'flutter-on-device-ai',
|
||
category: 'Mobile',
|
||
title: 'هوش مصنوعی on-device در Flutter',
|
||
excerpt:
|
||
'استفاده از Gemini Nano و LiteRT برای استنتاج آفلاین در اپلیکیشنهای موبایل.',
|
||
readTime: 9,
|
||
},
|
||
{
|
||
slug: 'enterprise-ai-roadmap',
|
||
category: 'Strategy',
|
||
title: 'نقشه راه هوش مصنوعی سازمانی در ۹۰ روز',
|
||
excerpt:
|
||
'چارچوبی که برای CTOها میسازم — از کشف موارد کاربری تا اولین استقرار تولید.',
|
||
readTime: 7,
|
||
},
|
||
],
|
||
},
|
||
portfolio: {
|
||
eyebrow: 'نمونهکارها',
|
||
title: 'سامانههایی که در تولید کار میکنند',
|
||
sub:
|
||
'گزیدهای از پروژههای واقعی — از پایپلاین RAG تا مش داده رویدادمحور. روی هر کارت بزنید تا گالری و جزئیات معماری را ببینید.',
|
||
labels: {
|
||
role: 'نقش',
|
||
year: 'سال',
|
||
client: 'کارفرما',
|
||
stack: 'استک',
|
||
view: 'مشاهده پروژه',
|
||
gallery: 'گالری',
|
||
close: 'بستن',
|
||
next: 'بعدی',
|
||
prev: 'قبلی',
|
||
},
|
||
items: [
|
||
{
|
||
id: 'atlas-rag',
|
||
title: 'اطلس — پلتفرم RAG سازمانی',
|
||
client: 'بانک ردیفاول',
|
||
year: '۲۰۲۵',
|
||
role: 'مهندس ارشد هوش مصنوعی',
|
||
summary:
|
||
'دستیار دانش روی بیش از ۴ میلیون سند داخلی؛ بازیابی ترکیبی با pgvector و reranker، چارچوب ارزیابی اختصاصی و سرویسدهی با تأخیر زیر ۴۰ میلیثانیه روی Vertex AI.',
|
||
accent: 'electric',
|
||
tags: ['RAG', 'pgvector', 'Vertex AI', 'Eval'],
|
||
metrics: [
|
||
{ value: '۴M+', label: 'سند نمایهشده' },
|
||
{ value: '۳۸ms', label: 'تأخیر p95' },
|
||
{ value: '۹۲٪', label: 'دقت پاسخ' },
|
||
],
|
||
cover: '/portfolio/atlas-rag/cover.svg',
|
||
gallery: [
|
||
'/portfolio/atlas-rag/01.svg',
|
||
'/portfolio/atlas-rag/02.svg',
|
||
'/portfolio/atlas-rag/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'sentinel-agents',
|
||
title: 'سنتینل — اتوماسیون عاملمحور عملیات',
|
||
client: 'اسکیلآپ SaaS',
|
||
year: '۲۰۲۵',
|
||
role: 'معمار راهکار',
|
||
summary:
|
||
'سامانه پاسخ خودکار به رخدادها با ترکیب n8n و LangGraph؛ عاملهای قابل ممیزی که هشدارها را دستهبندی، ریشهیابی و در صورت امکان ترمیم میکنند.',
|
||
accent: 'violet',
|
||
tags: ['n8n', 'LangGraph', 'Agents', 'Observability'],
|
||
metrics: [
|
||
{ value: '۷۰٪', label: 'کاهش MTTR' },
|
||
{ value: '۲۴/۷', label: 'پوشش on-call' },
|
||
{ value: '۱۵۰+', label: 'گردشکار خودکار' },
|
||
],
|
||
cover: '/portfolio/sentinel-agents/cover.svg',
|
||
gallery: [
|
||
'/portfolio/sentinel-agents/01.svg',
|
||
'/portfolio/sentinel-agents/02.svg',
|
||
'/portfolio/sentinel-agents/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'vertex-vision',
|
||
title: 'ورتکس ویژن — بینایی ماشین بلادرنگ',
|
||
client: 'زنجیره خردهفروشی',
|
||
year: '۲۰۲۴',
|
||
role: 'مهندس هوش مصنوعی',
|
||
summary:
|
||
'استنتاج بینایی بلادرنگ روی GKE با Triton و Vertex AI برای تحلیل قفسه و رفتار مشتری در صدها شعبه، با مقیاسپذیری خودکار مبتنی بر صف.',
|
||
accent: 'cyan',
|
||
tags: ['Vertex AI', 'GKE', 'Triton', 'Computer Vision'],
|
||
metrics: [
|
||
{ value: '۱.۲B', label: 'استنتاج در ماه' },
|
||
{ value: '۳۰۰+', label: 'شعبه' },
|
||
{ value: '۶۰٪', label: 'کاهش هزینه GPU' },
|
||
],
|
||
cover: '/portfolio/vertex-vision/cover.svg',
|
||
gallery: [
|
||
'/portfolio/vertex-vision/01.svg',
|
||
'/portfolio/vertex-vision/02.svg',
|
||
'/portfolio/vertex-vision/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'mirage-mobile',
|
||
title: 'میراژ — هوش مصنوعی روی دستگاه',
|
||
client: 'محصول مصرفکننده',
|
||
year: '۲۰۲۴',
|
||
role: 'سرپرست موبایل و هوش مصنوعی',
|
||
summary:
|
||
'اپلیکیشن Flutter با استنتاج کاملاً آفلاین بهکمک Gemini Nano و LiteRT؛ تجربهی استریم پاسخ بدون وابستگی به شبکه و با حفظ کامل حریم خصوصی.',
|
||
accent: 'magenta',
|
||
tags: ['Flutter', 'Gemini Nano', 'LiteRT', 'On-device'],
|
||
metrics: [
|
||
{ value: '۰', label: 'وابستگی شبکه' },
|
||
{ value: '<۸۰ms', label: 'پاسخدهی' },
|
||
{ value: '۴.۸★', label: 'امتیاز کاربران' },
|
||
],
|
||
cover: '/portfolio/mirage-mobile/cover.svg',
|
||
gallery: [
|
||
'/portfolio/mirage-mobile/01.svg',
|
||
'/portfolio/mirage-mobile/02.svg',
|
||
'/portfolio/mirage-mobile/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'flux-stream',
|
||
title: 'فلاکس — مش داده رویدادمحور',
|
||
client: 'پلتفرم لجستیک',
|
||
year: '۲۰۲۳',
|
||
role: 'معمار پلتفرم',
|
||
summary:
|
||
'ستون فقرات استریمینگ با Kafka و NATS روی Kubernetes؛ بیش از ۴۰ میکروسرویس با الگوهای پایداری، tracing سراسری و تحویل دقیقاً یکبار.',
|
||
accent: 'emerald',
|
||
tags: ['Kafka', 'NATS', 'Kubernetes', 'Go'],
|
||
metrics: [
|
||
{ value: '۴۰+', label: 'میکروسرویس' },
|
||
{ value: '۲M/s', label: 'رویداد در ثانیه' },
|
||
{ value: '۹۹.۹٪', label: 'پایداری' },
|
||
],
|
||
cover: '/portfolio/flux-stream/cover.svg',
|
||
gallery: [
|
||
'/portfolio/flux-stream/01.svg',
|
||
'/portfolio/flux-stream/02.svg',
|
||
'/portfolio/flux-stream/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'oracle-forecast',
|
||
title: 'اوراکل — موتور پیشبینی تقاضا',
|
||
client: 'زنجیره تأمین',
|
||
year: '۲۰۲۳',
|
||
role: 'مهندس یادگیری ماشین',
|
||
summary:
|
||
'پایپلاین پیشبینی سریزمانی روی BigQuery و dbt با بازآموزی خودکار؛ کاهش چشمگیر هدررفت موجودی و بهبود دقت برنامهریزی تأمین.',
|
||
accent: 'electric',
|
||
tags: ['Forecasting', 'BigQuery', 'dbt', 'MLOps'],
|
||
metrics: [
|
||
{ value: '۲۳٪', label: 'کاهش هدررفت' },
|
||
{ value: '۸۹٪', label: 'دقت پیشبینی' },
|
||
{ value: 'روزانه', label: 'بازآموزی' },
|
||
],
|
||
cover: '/portfolio/oracle-forecast/cover.svg',
|
||
gallery: [
|
||
'/portfolio/oracle-forecast/01.svg',
|
||
'/portfolio/oracle-forecast/02.svg',
|
||
'/portfolio/oracle-forecast/03.svg',
|
||
],
|
||
},
|
||
],
|
||
},
|
||
contact: {
|
||
eyebrow: 'تماس',
|
||
title: 'یک جلسه ۳۰ دقیقهای رزرو کنید',
|
||
sub:
|
||
'هیچ هزینهای، هیچ تعهدی. کاربرد، چالشها و قدم بعدی را با هم بررسی میکنیم.',
|
||
fields: {
|
||
name: 'نام',
|
||
company: 'شرکت',
|
||
service: 'خدمت مورد نظر',
|
||
budget: 'بودجه (تقریبی)',
|
||
message: 'پیام',
|
||
},
|
||
placeholders: {
|
||
name: 'نام و نام خانوادگی',
|
||
company: 'نام سازمان',
|
||
message: 'هدف، زمانبندی، و چالشهای فعلی…',
|
||
},
|
||
budgets: ['کمتر از $10k', '$10k–$50k', '$50k–$200k', 'بیش از $200k'],
|
||
submit: 'ارسال درخواست',
|
||
note: 'پاسخ معمولاً ظرف ۲۴ ساعت کاری.',
|
||
},
|
||
footer: {
|
||
tagline: 'طراحیشده در تهران · ساختهشده برای enterprise',
|
||
rights: '© ۲۰۲۶ سروش اسعدی. تمام حقوق محفوظ است.',
|
||
},
|
||
},
|
||
en: {
|
||
meta: {
|
||
title: 'Soroush Asadi — AI Engineer · Consultant · Solution Architect',
|
||
description:
|
||
'Designing and shipping production-grade AI systems for the enterprise — strategy, LLM & RAG, agentic automation, cloud infrastructure, and the Google Stack.',
|
||
},
|
||
nav: {
|
||
services: 'Services',
|
||
stack: 'Stack',
|
||
expertise: 'Expertise',
|
||
portfolio: 'Work',
|
||
blog: 'Journal',
|
||
contact: 'Contact',
|
||
book: 'Book a call',
|
||
},
|
||
locale: {
|
||
switchTo: 'FA',
|
||
label: 'Language',
|
||
},
|
||
hero: {
|
||
availability: 'Available for select Q3 2026 engagements',
|
||
eyebrow: 'AI Engineer · Consultant · Solution Architect',
|
||
name: 'Soroush Asadi',
|
||
headlineLead: 'Architecting',
|
||
headlineAccent: 'production-grade AI',
|
||
headlineTrail: 'for the enterprise.',
|
||
sub:
|
||
'From strategy to deployment — building LLM pipelines, autonomous agents, and cloud architectures that hold up at millions of events per day.',
|
||
roles: [
|
||
'AI Strategy',
|
||
'LLM & RAG Engineering',
|
||
'Solution Architecture',
|
||
'Agentic Automation',
|
||
'Google Cloud Stack',
|
||
],
|
||
ctaPrimary: 'Book a consultation',
|
||
ctaSecondary: 'View services',
|
||
scroll: 'Scroll',
|
||
metrics: [
|
||
{ value: '18+', label: 'AI models in production' },
|
||
{ value: '40+', label: 'microservices shipped' },
|
||
{ value: '12ms', label: 'inference latency' },
|
||
{ value: '99%', label: 'SLA uptime' },
|
||
],
|
||
},
|
||
services: {
|
||
eyebrow: 'Services',
|
||
title: 'Six areas of practice',
|
||
sub:
|
||
'From the first strategy session to production rollout — one engineering partner for the full AI lifecycle.',
|
||
items: [
|
||
{
|
||
id: 'strategy',
|
||
title: 'AI Strategy & Roadmap',
|
||
description:
|
||
'Maturity assessment, highest-ROI use-case discovery, and a 12–18 month roadmap with measurable KPIs.',
|
||
tags: ['Discovery', 'ROI Mapping', 'Roadmap'],
|
||
color: 'electric',
|
||
},
|
||
{
|
||
id: 'automation',
|
||
title: 'AI Automation',
|
||
description:
|
||
'Autonomous agents and n8n workflows that turn manual processes into auditable, observable systems.',
|
||
tags: ['n8n', 'Agents', 'Workflows'],
|
||
color: 'violet',
|
||
},
|
||
{
|
||
id: 'llm-rag',
|
||
title: 'LLM & RAG Engineering',
|
||
description:
|
||
'Production RAG pipelines with vector stores, evaluation frameworks, and sub-50ms serving.',
|
||
tags: ['RAG', 'Vector DB', 'Eval'],
|
||
color: 'magenta',
|
||
},
|
||
{
|
||
id: 'architecture',
|
||
title: 'Solution Architecture',
|
||
description:
|
||
'Distributed systems on Kubernetes — microservices, event streaming, and resilience patterns at scale.',
|
||
tags: ['K8s', 'Microservices', 'Event-Driven'],
|
||
color: 'emerald',
|
||
},
|
||
{
|
||
id: 'mobile',
|
||
title: 'Mobile AI Apps',
|
||
description:
|
||
'Flutter, Swift, and Kotlin apps with on-device inference, streaming LLM UX, and native polish.',
|
||
tags: ['Flutter', 'Swift', 'Kotlin'],
|
||
color: 'electric',
|
||
},
|
||
{
|
||
id: 'google-stack',
|
||
title: 'Google Stack Specialist',
|
||
description:
|
||
'Vertex AI, GKE, and Gemini deployments with cost optimization and enterprise security patterns.',
|
||
tags: ['Vertex AI', 'GKE', 'Gemini'],
|
||
color: 'cyan',
|
||
},
|
||
],
|
||
},
|
||
dataflow: {
|
||
eyebrow: 'Pipeline',
|
||
title: 'From raw document to trustworthy answer',
|
||
sub:
|
||
'The path every query takes through a production RAG system — each stage measurable, auditable, and tuned for latency.',
|
||
caption: 'Sub-50ms end-to-end · every stage observable',
|
||
nodes: [
|
||
{
|
||
id: 'ingest',
|
||
label: 'Ingest',
|
||
desc: 'Normalize, chunk, and clean source documents',
|
||
accent: 'electric',
|
||
},
|
||
{
|
||
id: 'embed',
|
||
label: 'Embed',
|
||
desc: 'Generate embeddings and index in the vector store',
|
||
accent: 'violet',
|
||
},
|
||
{
|
||
id: 'retrieve',
|
||
label: 'Retrieve',
|
||
desc: 'Hybrid semantic + keyword search',
|
||
accent: 'cyan',
|
||
},
|
||
{
|
||
id: 'rerank',
|
||
label: 'Rerank',
|
||
desc: 'Re-order candidates with a cross-encoder',
|
||
accent: 'magenta',
|
||
},
|
||
{
|
||
id: 'generate',
|
||
label: 'Generate',
|
||
desc: 'Grounded answer with source citations',
|
||
accent: 'emerald',
|
||
},
|
||
],
|
||
},
|
||
stack: {
|
||
eyebrow: 'Stack',
|
||
title: 'Daily tooling',
|
||
sub:
|
||
'Everything I ship sits on this foundation — chosen for longevity, not hype cycles.',
|
||
categories: [
|
||
{
|
||
id: 'languages',
|
||
label: 'Languages',
|
||
items: ['Python', 'TypeScript', 'Go', 'Rust', 'SQL'],
|
||
},
|
||
{
|
||
id: 'mobile',
|
||
label: 'Mobile',
|
||
items: ['Flutter', 'Swift / SwiftUI', 'Kotlin', 'React Native'],
|
||
},
|
||
{
|
||
id: 'infra',
|
||
label: 'Infrastructure',
|
||
items: ['Kubernetes', 'Terraform', 'Postgres', 'Redis', 'Kafka', 'NATS'],
|
||
},
|
||
{
|
||
id: 'ai',
|
||
label: 'AI / ML',
|
||
items: ['Vertex AI', 'Gemini', 'OpenAI', 'Anthropic', 'LangGraph', 'Pinecone', 'pgvector'],
|
||
},
|
||
],
|
||
},
|
||
expertise: {
|
||
eyebrow: 'Expertise',
|
||
title: 'The numbers that matter',
|
||
sub:
|
||
'Systems that survive millions of events per day — these are the metrics I optimize for.',
|
||
bars: [
|
||
{ label: 'LLM & RAG engineering', value: 95 },
|
||
{ label: 'Cloud architecture & Kubernetes', value: 92 },
|
||
{ label: 'Agentic systems & automation', value: 90 },
|
||
{ label: 'Google Cloud stack (Vertex / GKE)', value: 88 },
|
||
{ label: 'Native + cross-platform mobile', value: 82 },
|
||
],
|
||
},
|
||
blog: {
|
||
eyebrow: 'Journal',
|
||
title: 'Engineering notes',
|
||
sub:
|
||
'Findings from real engagements — not translated articles, not hype lists.',
|
||
readMore: 'Read',
|
||
readTimeSuffix: 'min',
|
||
items: [
|
||
{
|
||
slug: 'rag-eval-framework',
|
||
category: 'LLM',
|
||
title: 'A RAG evaluation framework that holds up in production',
|
||
excerpt:
|
||
'Why BLEU and ROUGE fall short for RAG, and the metrics that actually drive decisions in real projects.',
|
||
readTime: 8,
|
||
},
|
||
{
|
||
slug: 'agentic-n8n-patterns',
|
||
category: 'Automation',
|
||
title: 'Agentic patterns with n8n for the enterprise',
|
||
excerpt:
|
||
'How to combine n8n with LangGraph to build auditable, debuggable autonomous workflows.',
|
||
readTime: 11,
|
||
},
|
||
{
|
||
slug: 'vertex-cost-control',
|
||
category: 'Google Stack',
|
||
title: 'Vertex AI cost control at scale',
|
||
excerpt:
|
||
'Three anti-patterns I see in 80% of Vertex projects — and how we cut 60% of monthly spend.',
|
||
readTime: 6,
|
||
},
|
||
{
|
||
slug: 'k8s-llm-inference',
|
||
category: 'Infra',
|
||
title: 'Sub-50ms LLM inference on Kubernetes',
|
||
excerpt:
|
||
'Deployment pattern with KEDA, GPU sharing, and request hedging for stable serving.',
|
||
readTime: 14,
|
||
},
|
||
{
|
||
slug: 'flutter-on-device-ai',
|
||
category: 'Mobile',
|
||
title: 'On-device AI in Flutter',
|
||
excerpt:
|
||
'Using Gemini Nano and LiteRT for offline inference inside mobile apps.',
|
||
readTime: 9,
|
||
},
|
||
{
|
||
slug: 'enterprise-ai-roadmap',
|
||
category: 'Strategy',
|
||
title: 'A 90-day enterprise AI roadmap',
|
||
excerpt:
|
||
'The framework I build for CTOs — from use-case discovery to first production deployment.',
|
||
readTime: 7,
|
||
},
|
||
],
|
||
},
|
||
portfolio: {
|
||
eyebrow: 'Selected work',
|
||
title: 'Systems that run in production',
|
||
sub:
|
||
'A selection of real engagements — from RAG pipelines to event-driven data meshes. Tap any card for the gallery and the architecture behind it.',
|
||
labels: {
|
||
role: 'Role',
|
||
year: 'Year',
|
||
client: 'Client',
|
||
stack: 'Stack',
|
||
view: 'View project',
|
||
gallery: 'Gallery',
|
||
close: 'Close',
|
||
next: 'Next',
|
||
prev: 'Previous',
|
||
},
|
||
items: [
|
||
{
|
||
id: 'atlas-rag',
|
||
title: 'Atlas — Enterprise RAG Platform',
|
||
client: 'Tier-1 bank',
|
||
year: '2025',
|
||
role: 'Lead AI Engineer',
|
||
summary:
|
||
'A knowledge assistant over 4M+ internal documents — hybrid retrieval with pgvector and a reranker, a bespoke evaluation harness, and sub-40ms serving on Vertex AI.',
|
||
accent: 'electric',
|
||
tags: ['RAG', 'pgvector', 'Vertex AI', 'Eval'],
|
||
metrics: [
|
||
{ value: '4M+', label: 'docs indexed' },
|
||
{ value: '38ms', label: 'p95 latency' },
|
||
{ value: '92%', label: 'answer accuracy' },
|
||
],
|
||
cover: '/portfolio/atlas-rag/cover.svg',
|
||
gallery: [
|
||
'/portfolio/atlas-rag/01.svg',
|
||
'/portfolio/atlas-rag/02.svg',
|
||
'/portfolio/atlas-rag/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'sentinel-agents',
|
||
title: 'Sentinel — Agentic Ops Automation',
|
||
client: 'SaaS scale-up',
|
||
year: '2025',
|
||
role: 'Solution Architect',
|
||
summary:
|
||
'Autonomous incident response combining n8n and LangGraph — auditable agents that triage alerts, find root cause, and self-heal where it is safe to do so.',
|
||
accent: 'violet',
|
||
tags: ['n8n', 'LangGraph', 'Agents', 'Observability'],
|
||
metrics: [
|
||
{ value: '70%', label: 'MTTR reduction' },
|
||
{ value: '24/7', label: 'on-call coverage' },
|
||
{ value: '150+', label: 'automated flows' },
|
||
],
|
||
cover: '/portfolio/sentinel-agents/cover.svg',
|
||
gallery: [
|
||
'/portfolio/sentinel-agents/01.svg',
|
||
'/portfolio/sentinel-agents/02.svg',
|
||
'/portfolio/sentinel-agents/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'vertex-vision',
|
||
title: 'Vertex Vision — Realtime Vision Inference',
|
||
client: 'Retail chain',
|
||
year: '2024',
|
||
role: 'AI Engineer',
|
||
summary:
|
||
'Real-time vision inference on GKE with Triton and Vertex AI for shelf analytics and customer flow across hundreds of stores, autoscaled off a work queue.',
|
||
accent: 'cyan',
|
||
tags: ['Vertex AI', 'GKE', 'Triton', 'Computer Vision'],
|
||
metrics: [
|
||
{ value: '1.2B', label: 'inferences / mo' },
|
||
{ value: '300+', label: 'stores' },
|
||
{ value: '60%', label: 'GPU cost cut' },
|
||
],
|
||
cover: '/portfolio/vertex-vision/cover.svg',
|
||
gallery: [
|
||
'/portfolio/vertex-vision/01.svg',
|
||
'/portfolio/vertex-vision/02.svg',
|
||
'/portfolio/vertex-vision/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'mirage-mobile',
|
||
title: 'Mirage — On-device AI Suite',
|
||
client: 'Consumer product',
|
||
year: '2024',
|
||
role: 'Mobile + AI Lead',
|
||
summary:
|
||
'A Flutter app with fully offline inference via Gemini Nano and LiteRT — streaming response UX with zero network dependency and privacy preserved end to end.',
|
||
accent: 'magenta',
|
||
tags: ['Flutter', 'Gemini Nano', 'LiteRT', 'On-device'],
|
||
metrics: [
|
||
{ value: '0', label: 'network deps' },
|
||
{ value: '<80ms', label: 'response' },
|
||
{ value: '4.8★', label: 'user rating' },
|
||
],
|
||
cover: '/portfolio/mirage-mobile/cover.svg',
|
||
gallery: [
|
||
'/portfolio/mirage-mobile/01.svg',
|
||
'/portfolio/mirage-mobile/02.svg',
|
||
'/portfolio/mirage-mobile/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'flux-stream',
|
||
title: 'Flux — Event-Driven Data Mesh',
|
||
client: 'Logistics platform',
|
||
year: '2023',
|
||
role: 'Platform Architect',
|
||
summary:
|
||
'A streaming backbone on Kafka and NATS over Kubernetes — 40+ microservices with resilience patterns, end-to-end tracing, and exactly-once delivery.',
|
||
accent: 'emerald',
|
||
tags: ['Kafka', 'NATS', 'Kubernetes', 'Go'],
|
||
metrics: [
|
||
{ value: '40+', label: 'microservices' },
|
||
{ value: '2M/s', label: 'events / sec' },
|
||
{ value: '99.9%', label: 'uptime' },
|
||
],
|
||
cover: '/portfolio/flux-stream/cover.svg',
|
||
gallery: [
|
||
'/portfolio/flux-stream/01.svg',
|
||
'/portfolio/flux-stream/02.svg',
|
||
'/portfolio/flux-stream/03.svg',
|
||
],
|
||
},
|
||
{
|
||
id: 'oracle-forecast',
|
||
title: 'Oracle — Demand Forecasting Engine',
|
||
client: 'Supply chain',
|
||
year: '2023',
|
||
role: 'ML Engineer',
|
||
summary:
|
||
'A time-series forecasting pipeline on BigQuery and dbt with automated retraining — sharply reduced inventory waste and improved supply planning accuracy.',
|
||
accent: 'electric',
|
||
tags: ['Forecasting', 'BigQuery', 'dbt', 'MLOps'],
|
||
metrics: [
|
||
{ value: '23%', label: 'waste reduction' },
|
||
{ value: '89%', label: 'forecast accuracy' },
|
||
{ value: 'daily', label: 'retraining' },
|
||
],
|
||
cover: '/portfolio/oracle-forecast/cover.svg',
|
||
gallery: [
|
||
'/portfolio/oracle-forecast/01.svg',
|
||
'/portfolio/oracle-forecast/02.svg',
|
||
'/portfolio/oracle-forecast/03.svg',
|
||
],
|
||
},
|
||
],
|
||
},
|
||
contact: {
|
||
eyebrow: 'Contact',
|
||
title: 'Book a 30-minute call',
|
||
sub:
|
||
'No cost, no commitment. We map the use case, the constraints, and the next step together.',
|
||
fields: {
|
||
name: 'Name',
|
||
company: 'Company',
|
||
service: 'Service',
|
||
budget: 'Budget (rough)',
|
||
message: 'Message',
|
||
},
|
||
placeholders: {
|
||
name: 'Full name',
|
||
company: 'Organization',
|
||
message: 'Goal, timeline, current blockers…',
|
||
},
|
||
budgets: ['Under $10k', '$10k–$50k', '$50k–$200k', '$200k+'],
|
||
submit: 'Send request',
|
||
note: 'Typical reply within 24 working hours.',
|
||
},
|
||
footer: {
|
||
tagline: 'Designed in Tehran · Built for the enterprise',
|
||
rights: '© 2026 Soroush Asadi. All rights reserved.',
|
||
},
|
||
},
|
||
} as const;
|
||
|
||
export type Dict = typeof dict.en;
|