Reposition from AI-only to engineering + apps + AI
deploy / deploy (push) Successful in 23s

Broaden the messaging so AI is one strong pillar, not the whole story
(matches the real portfolio: web/SaaS, mobile, a game, plus AI tools).

- Hero: "software, enterprise apps, and AI solutions"; role is now
  "Software & AI Engineer, Solution Architect"
- Services reframed: Web & enterprise apps, Mobile apps, Solution
  architecture & cloud, AI solutions, Automation & integrations, Strategy
  (replaces the six AI-centric ones; new "apps" icon)
- Expertise areas lead with architecture + web/enterprise apps, AI as one
- Contact service options, meta description, title, footer blurb updated

English and Persian both. No CSS/JS changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-26 04:03:24 +03:30
parent 255e8d25e5
commit 93f7873dd1
2 changed files with 42 additions and 42 deletions
+37 -37
View File
@@ -17,10 +17,10 @@
</h1> </h1>
<p class="reveal mx-auto mt-6 max-w-2xl text-balance leading-snug text-zinc-800" style="font-size:clamp(1.2rem,2.4vw,1.6rem);transition-delay:.1s"> <p class="reveal mx-auto mt-6 max-w-2xl text-balance leading-snug text-zinc-800" style="font-size:clamp(1.2rem,2.4vw,1.6rem);transition-delay:.1s">
@(fa ? "هوش مصنوعی‌ای می‌سازم که " : "I build ")<span class="accent-text font-semibold">@(fa ? "فقط روی کاغذ نمی‌ماند" : "production-grade AI")</span>@(fa ? "؛ از طراحی تا اجرا، در مقیاس سازمانی." : " for the enterprise, from strategy to live deployment.") @(fa ? "نرم‌افزار، اپلیکیشن‌های سازمانی و " : "I build software, enterprise apps, and ")<span class="accent-text font-semibold">@(fa ? "راهکارهای هوش مصنوعی" : "AI solutions")</span>@(fa ? " می‌سازم که در عمل و در مقیاس واقعی کار می‌کنند." : " that hold up in production, at real scale.")
</p> </p>
<p class="lede reveal mx-auto mt-4 text-[.98rem]" style="transition-delay:.15s">@(fa ? "مهندس هوش مصنوعی و معمار نرم‌افزار." : "AI Engineer, Consultant, and Solution Architect.")</p> <p class="lede reveal mx-auto mt-4 text-[.98rem]" style="transition-delay:.15s">@(fa ? "مهندس نرم‌افزار و هوش مصنوعی، معمار سیستم." : "Software and AI Engineer, Solution Architect.")</p>
<div class="reveal mt-9 flex flex-wrap items-center justify-center gap-3" style="transition-delay:.2s"> <div class="reveal mt-9 flex flex-wrap items-center justify-center gap-3" style="transition-delay:.2s">
<a href="#contact" class="btn"> <a href="#contact" class="btn">
@@ -43,25 +43,25 @@
<div class="mx-auto max-w-6xl"> <div class="mx-auto max-w-6xl">
<div class="sec-head"> <div class="sec-head">
<h2>@(fa ? "شش کاری که انجام می‌دهم" : "Six areas of practice")</h2> <h2>@(fa ? "شش کاری که انجام می‌دهم" : "Six areas of practice")</h2>
<p class="lede">@(fa ? "از همان جلسه‌ی اول تا وقتی محصول روی پای خودش می‌ایستد، کنارتان هستم؛ در تمام مسیر هوش مصنوعی." : "From the first strategy session to production rollout, one engineering partner for the full AI lifecycle.")</p> <p class="lede">@(fa ? "از همان جلسه‌ی اول تا وقتی محصول روی پای خودش می‌ایستد، کنارتان هستم؛ در تمام مسیر مهندسی و محصول." : "From the first idea to production rollout, one engineering partner across the whole product.")</p>
</div> </div>
<div class="grid grid-cols-1 gap-x-10 gap-y-10 sm:grid-cols-2 lg:grid-cols-3"> <div class="grid grid-cols-1 gap-x-10 gap-y-10 sm:grid-cols-2 lg:grid-cols-3">
@{ @{
var services = fa ? new[]{ var services = fa ? new[]{
("strategy","راهبرد و نقشه‌ی راه هوش مصنوعی","با هم می‌بینیم سازمان کجای کار است، کدام ایده‌ها بیشترین ارزش را دارند، و نقشه‌ی راه ۱۲ تا ۱۸ ماهه با هدف‌های روشن می‌چینیم.",new[]{"Discovery","ROI Mapping","Roadmap"}), ("apps","اپلیکیشن‌های وب و سازمانی","پلتفرم‌های وب و SaaS از صفر تا صد: داشبورد، چندمستاجری، صورت‌حساب و پنل مدیریت، ساخته‌شده برای رشد.",new[]{"Web","SaaS","Dashboards"}),
("automation","اتوماسیون هوش مصنوعی","عامل‌های خودکار و گردش‌کارهای n8n که کارهای دستی را به سامانه‌هایی قابل‌ردیابی و قابل‌اتکا تبدیل می‌کنند.",new[]{"n8n","Agents","Workflows"}), ("mobile","اپلیکیشن‌های موبایل","اپ‌های بومی و چندسکویی با Flutter، Swift و Kotlin، با حسی روان و نزدیک به تجربه‌ی بومی.",new[]{"Flutter","Swift","Kotlin"}),
("llm-rag","مهندسی LLM و RAG","ساخت پایپ‌لاین‌های RAG با پایگاه‌های برداری، چارچوب ارزیابی، و پاسخ‌دهی با تأخیر زیر ۵۰ میلی‌ثانیه.",new[]{"RAG","Vector DB","Eval"}), ("architecture","معماری راهکار و زیرساخت ابری","سیستم‌های توزیع‌شده روی Kubernetes؛ میکروسرویس، استریم رویداد، و پایداری زیر بار سنگین.",new[]{"K8s","Microservices","Cloud"}),
("architecture","معماری نرم‌افزار و سیستم","طراحی سیستم‌های توزیع‌شده روی Kubernetes؛ میکروسرویس، استریم رویداد، و الگوهایی که زیر بار سنگین هم پایدار می‌مانند.",new[]{"K8s","Microservices","Event-Driven"}), ("llm-rag","راهکارهای هوش مصنوعی","قابلیت‌های LLM و RAG، عامل‌ها و اتوماسیون که داخل محصول واقعی کار می‌کنند، نه فقط دمو.",new[]{"LLM","RAG","Agents"}),
("mobile","اپلیکیشن‌های موبایل هوش مصنوعی","اپ‌های Flutter، Swift و Kotlin با پردازش روی خود دستگاه، استریم LLM و تجربه‌ای روان و بومی.",new[]{"Flutter","Swift","Kotlin"}), ("automation","اتوماسیون و یکپارچه‌سازی","ابزارهایتان را به هم وصل می‌کنم و کارهای دستی را حذف؛ با گردش‌کارهای n8n، API و وب‌هوک.",new[]{"n8n","APIs","Webhooks"}),
("google-stack","تخصص روی استک گوگل","راه‌اندازی روی Vertex AI، GKE و Gemini با کنترل هزینه و امنیت در سطح سازمانی.",new[]{"Vertex AI","GKE","Gemini"}), ("strategy","راهبرد و نقشه‌ی راه","راهبرد فنی، بازبینی معماری، و نقشه‌ی راهی روشن از ایده تا عرضه.",new[]{"Discovery","Architecture","Roadmap"}),
} : new[]{ } : new[]{
("strategy","AI Strategy and Roadmap","Maturity assessment, highest-ROI use-case discovery, and a 12 to 18 month roadmap with measurable KPIs.",new[]{"Discovery","ROI Mapping","Roadmap"}), ("apps","Web & enterprise apps","End-to-end web platforms and SaaS: dashboards, multi-tenant, billing, and admin, built to scale.",new[]{"Web","SaaS","Dashboards"}),
("automation","AI Automation","Autonomous agents and n8n workflows that turn manual processes into auditable, observable systems.",new[]{"n8n","Agents","Workflows"}), ("mobile","Mobile apps","Native and cross-platform apps with Flutter, Swift, and Kotlin, with a smooth native feel.",new[]{"Flutter","Swift","Kotlin"}),
("llm-rag","LLM and RAG Engineering","Production RAG pipelines with vector stores, evaluation frameworks, and sub-50ms serving.",new[]{"RAG","Vector DB","Eval"}), ("architecture","Solution architecture & cloud","Distributed systems on Kubernetes: microservices, event streaming, and resilience at scale.",new[]{"K8s","Microservices","Cloud"}),
("architecture","Solution Architecture","Distributed systems on Kubernetes: microservices, event streaming, and resilience patterns at scale.",new[]{"K8s","Microservices","Event-Driven"}), ("llm-rag","AI solutions","LLM and RAG features, agents, and automation built into real products, not just demos.",new[]{"LLM","RAG","Agents"}),
("mobile","Mobile AI Apps","Flutter, Swift, and Kotlin apps with on-device inference, streaming LLM UX, and native polish.",new[]{"Flutter","Swift","Kotlin"}), ("automation","Automation & integrations","Connect your tools and remove manual work with n8n workflows, APIs, and webhooks.",new[]{"n8n","APIs","Webhooks"}),
("google-stack","Google Stack Specialist","Vertex AI, GKE, and Gemini deployments with cost optimization and enterprise security patterns.",new[]{"Vertex AI","GKE","Gemini"}), ("strategy","Strategy & roadmap","Technical strategy, architecture review, and a clear roadmap from idea to launch.",new[]{"Discovery","Architecture","Roadmap"}),
}; };
} }
@{ int si = 0; } @{ int si = 0; }
@@ -166,17 +166,17 @@
<dl> <dl>
@{ @{
var areas = fa ? new[]{ var areas = fa ? new[]{
("مهندسی LLM و RAG","ساخت پایپ‌لاین‌های بازیابی، ارزیابی و تولید پاسخ مستند برای محیط واقعی."), ("معماری نرم‌افزار و سیستم‌های توزیع‌شده","میکروسرویس، استریم رویداد و الگوهای پایداری زیر بار سنگین."),
("معماری ابری و Kubernetes","سرویس‌های توزیع‌شده، مقیاس‌پذیری خودکار و پایداری زیر بار سنگین."), ("اپلیکیشن‌های وب و سازمانی","پلتفرم‌های چندمستاجری، داشبورد و سیستم‌های پرترافیک."),
("سیستم‌های عامل‌محور و اتوماسیون","گردش‌کارهای خودکار و قابل‌ردیابی با n8n و LangGraph."), ("راهکارهای هوش مصنوعی (LLM و RAG)","بازیابی، ارزیابی و تولید پاسخ مستند، داخل محصول واقعی."),
("استک گوگل کلود (Vertex / GKE)","Vertex AI، GKE و Gemini، با حواس‌جمعی روی هزینه."), ("زیرساخت ابری و Kubernetes","استقرار، مقیاس‌پذیری خودکار و حواس‌جمعی روی هزینه."),
("موبایل بومی و چندسکویی","Flutter، Swift و Kotlin با پردازش روی خود دستگاه."), ("موبایل بومی و چندسکویی","Flutter، Swift و Kotlin برای اپ‌های روان و سریع."),
} : new[]{ } : new[]{
("LLM and RAG engineering","Retrieval pipelines, evals, and grounded generation in production."), ("Software architecture & distributed systems","Microservices, event streaming, and resilience patterns at scale."),
("Cloud architecture and Kubernetes","Distributed services, autoscaling, and resilience at scale."), ("Web & enterprise applications","Multi-tenant platforms, dashboards, and high-traffic systems."),
("Agentic systems and automation","Auditable autonomous workflows with n8n and LangGraph."), ("AI solutions (LLM & RAG)","Retrieval, evals, and grounded generation, inside real products."),
("Google Cloud stack (Vertex / GKE)","Vertex AI, GKE, and Gemini with real cost discipline."), ("Cloud infrastructure & Kubernetes","Deployment, autoscaling, and real cost discipline."),
("Native and cross-platform mobile","Flutter, Swift, and Kotlin with on-device inference."), ("Native & cross-platform mobile","Flutter, Swift, and Kotlin for smooth, fast apps."),
}; };
} }
@foreach (var (alabel, adesc) in areas) @foreach (var (alabel, adesc) in areas)
@@ -315,21 +315,21 @@
<option value="" disabled selected>@(fa ? "انتخاب کنید" : "Select…")</option> <option value="" disabled selected>@(fa ? "انتخاب کنید" : "Select…")</option>
@if (fa) @if (fa)
{ {
<option value="apps">اپلیکیشن وب و سازمانی</option>
<option value="mobile">اپلیکیشن موبایل</option>
<option value="architecture">معماری و زیرساخت ابری</option>
<option value="ai">راهکار هوش مصنوعی</option>
<option value="automation">اتوماسیون و یکپارچه‌سازی</option>
<option value="strategy">راهبرد و نقشه‌ی راه</option> <option value="strategy">راهبرد و نقشه‌ی راه</option>
<option value="automation">اتوماسیون هوش مصنوعی</option>
<option value="llm-rag">مهندسی LLM و RAG</option>
<option value="architecture">معماری نرم‌افزار</option>
<option value="mobile">موبایل</option>
<option value="google-stack">استک گوگل</option>
} }
else else
{ {
<option value="strategy">AI Strategy and Roadmap</option> <option value="apps">Web & enterprise apps</option>
<option value="automation">AI Automation</option> <option value="mobile">Mobile apps</option>
<option value="llm-rag">LLM and RAG Engineering</option> <option value="architecture">Solution architecture & cloud</option>
<option value="architecture">Solution Architecture</option> <option value="ai">AI solutions</option>
<option value="mobile">Mobile AI Apps</option> <option value="automation">Automation & integrations</option>
<option value="google-stack">Google Stack</option> <option value="strategy">Strategy & roadmap</option>
} }
</select> </select>
</div> </div>
@@ -363,7 +363,7 @@
"llm-rag" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>""", "llm-rag" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>""",
"architecture" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><rect x="2" y="3" width="6" height="6"/><rect x="16" y="3" width="6" height="6"/><rect x="9" y="15" width="6" height="6"/><path d="M5 9v3h14V9M12 12v3"/></svg>""", "architecture" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><rect x="2" y="3" width="6" height="6"/><rect x="16" y="3" width="6" height="6"/><rect x="9" y="15" width="6" height="6"/><path d="M5 9v3h14V9M12 12v3"/></svg>""",
"mobile" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><rect x="5" y="2" width="14" height="20" rx="2"/><path d="M12 18h.01"/></svg>""", "mobile" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><rect x="5" y="2" width="14" height="20" rx="2"/><path d="M12 18h.01"/></svg>""",
"google-stack" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>""", "apps" => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 9h18"/><path d="M7 6.5h.01"/></svg>""",
_ => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/></svg>""", _ => """<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/></svg>""",
}; };
} }
+5 -5
View File
@@ -5,8 +5,8 @@
var dir = isRtl ? "rtl" : "ltr"; var dir = isRtl ? "rtl" : "ltr";
var lang = locale == "fa" ? "fa" : "en"; var lang = locale == "fa" ? "fa" : "en";
var title = (string?)ViewData["Title"] ?? (locale == "fa" var title = (string?)ViewData["Title"] ?? (locale == "fa"
? "سروش اسعدی - مهندس هوش مصنوعی و معمار نرم‌افزار" ? "سروش اسعدی - مهندس نرم‌افزار و هوش مصنوعی"
: "Soroush Asadi - AI Engineer, Consultant, Solution Architect"); : "Soroush Asadi - Software & AI Engineer");
} }
<!doctype html> <!doctype html>
<html lang="@lang" dir="@dir"> <html lang="@lang" dir="@dir">
@@ -15,8 +15,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>@title</title> <title>@title</title>
<meta name="description" content="@(locale == "fa" <meta name="description" content="@(locale == "fa"
? "سامانههای هوش مصنوعی می‌سازم که در مقیاس سازمانی واقعاً کار می‌کنند؛ از راهبرد و مهندسی LLM و RAG تا عامل‌های خودکار، زیرساخت ابری و استک گوگل." ? "نرم‌افزار، اپلیکیشن‌های سازمانی و راهکارهای هوش مصنوعی می‌سازم: پلتفرم‌های وب و موبایل، سیستم‌های توزیع‌شده، زیرساخت ابری و قابلیت‌های LLM و RAG که به تولید می‌رسند."
: "Designing and deploying enterprise-grade AI systems. Strategy, LLM and RAG, agentic automation, cloud infrastructure, and the Google stack.")" /> : "I design and build software, enterprise apps, and AI solutions: web and mobile platforms, distributed systems, cloud, and LLM/RAG features that ship to production.")" />
<meta name="theme-color" content="#fafafa" /> <meta name="theme-color" content="#fafafa" />
<!-- Fonts: Syne (display) + Vazirmatn (Persian). Body is system sans. --> <!-- Fonts: Syne (display) + Vazirmatn (Persian). Body is system sans. -->
@@ -126,7 +126,7 @@
<img src="/logo-mark.svg" alt="" width="26" height="26" class="h-[26px] w-[26px]" /> <img src="/logo-mark.svg" alt="" width="26" height="26" class="h-[26px] w-[26px]" />
<span class="font-display text-[15px] font-bold text-zinc-900 @(isRtl ? "font-fa" : "")">@(locale == "fa" ? "سروش اسعدی" : "Soroush Asadi")</span> <span class="font-display text-[15px] font-bold text-zinc-900 @(isRtl ? "font-fa" : "")">@(locale == "fa" ? "سروش اسعدی" : "Soroush Asadi")</span>
</a> </a>
<p class="mt-4 max-w-xs text-sm leading-relaxed text-zinc-600">@(fa ? "هوش مصنوعی می‌سازم که در عمل کار می‌کند؛ از طراحی تا اجرا." : "AI systems engineering for the enterprise, from strategy to live deployment.")</p> <p class="mt-4 max-w-xs text-sm leading-relaxed text-zinc-600">@(fa ? "نرم‌افزار، اپلیکیشن‌های سازمانی و راهکارهای هوش مصنوعی که در عمل کار می‌کنند." : "Software, enterprise apps, and AI solutions, engineered to last.")</p>
<div class="mt-5 flex gap-2.5"> <div class="mt-5 flex gap-2.5">
<a class="social" href="https://www.linkedin.com/in/soroushdes/" target="_blank" rel="noopener" aria-label="LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM3 9h4v12H3V9Zm6 0h3.8v1.64h.05c.53-1 1.83-2.06 3.76-2.06 4.02 0 4.76 2.65 4.76 6.1V21h-4v-5.4c0-1.29-.02-2.95-1.8-2.95-1.8 0-2.07 1.4-2.07 2.85V21H9V9Z"/></svg></a> <a class="social" href="https://www.linkedin.com/in/soroushdes/" target="_blank" rel="noopener" aria-label="LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM3 9h4v12H3V9Zm6 0h3.8v1.64h.05c.53-1 1.83-2.06 3.76-2.06 4.02 0 4.76 2.65 4.76 6.1V21h-4v-5.4c0-1.29-.02-2.95-1.8-2.95-1.8 0-2.07 1.4-2.07 2.85V21H9V9Z"/></svg></a>
<a class="social" href="https://www.instagram.com/soroushasadicom/" target="_blank" rel="noopener" aria-label="Instagram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.2" cy="6.8" r="1.1" fill="currentColor" stroke="none"/></svg></a> <a class="social" href="https://www.instagram.com/soroushasadicom/" target="_blank" rel="noopener" aria-label="Instagram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.2" cy="6.8" r="1.1" fill="currentColor" stroke="none"/></svg></a>