Rewrite the FA strings sitewide in natural, human Persian (English unchanged), removing translation calques like «معمار راهکار», «هوش مصنوعی تولیدی», «موارد کاربری», «چرخههای هیجان», «استقرار در تولید», «محیط تولید». Covers: hero, services, pipeline, stack, expertise, portfolio, blog, contact (Index), nav/meta/footer (_Layout), the /blog list + per-post FA titles (BlogIndexModel, PostModel). Also removed two stray English em-dashes in the blog excerpts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
<h1 class="@(fa ? "font-fa" : "")" style="font-size:clamp(2rem,4vw,2.75rem)">
|
||||
@(fa ? "یادداشتهای مهندسی" : "Engineering notes")
|
||||
</h1>
|
||||
<p class="lede mt-4">@(fa ? "یافتهها از پروژههای واقعی. نه ترجمهی مقاله، نه فهرست هیجان." : "Findings from real engagements. Not translated articles, not hype lists.")</p>
|
||||
<p class="lede mt-4">@(fa ? "درسهایی از پروژههای واقعی. نه ترجمهی مقاله، نه شعار توخالی." : "Findings from real engagements. Not translated articles, not hype lists.")</p>
|
||||
</div>
|
||||
|
||||
<div class="border-b border-zinc-200">
|
||||
|
||||
@@ -10,19 +10,19 @@ public class BlogIndexModel : BasePageModel
|
||||
{
|
||||
var fa = IsFa;
|
||||
Posts = fa ? new BlogPost[]{
|
||||
new("rag-eval-framework","LLM","چارچوب ارزیابی RAG که در تولید کار میکند","چرا BLEU و ROUGE برای RAG ناکافیاند، و معیارهایی که در پروژههای واقعی تصمیم میسازند.",8),
|
||||
new("agentic-n8n-patterns","Automation","الگوهای عاملمحور با n8n برای سازمان","چگونه n8n را با LangGraph ترکیب کنیم تا گردشکارهای قابل ممیزی بسازیم.",11),
|
||||
new("vertex-cost-control","Google Stack","کنترل هزینه روی Vertex AI در مقیاس بالا","سه ضدالگو که در ۸۰٪ پروژههای Vertex میبینم، و چگونه ۶۰٪ هزینه را کاهش دادیم.",6),
|
||||
new("k8s-llm-inference","Infra","استنتاج LLM روی Kubernetes با تأخیر زیر ۵۰ میلیثانیه","الگوی استقرار با KEDA، GPU sharing، و request hedging برای سرویسدهی پایدار.",14),
|
||||
new("flutter-on-device-ai","Mobile","هوش مصنوعی on-device در Flutter","استفاده از Gemini Nano و LiteRT برای استنتاج آفلاین در اپلیکیشنهای موبایل.",9),
|
||||
new("enterprise-ai-roadmap","Strategy","نقشه راه هوش مصنوعی سازمانی در ۹۰ روز","چارچوبی که برای CTOها میسازم — از کشف موارد کاربری تا اولین استقرار تولید.",7),
|
||||
new("rag-eval-framework","LLM","چارچوب ارزیابی RAG که در عمل جواب میدهد","چرا BLEU و ROUGE برای RAG کافی نیستند، و معیارهایی که واقعاً به تصمیم کمک میکنند.",8),
|
||||
new("agentic-n8n-patterns","Automation","الگوهای عاملمحور با n8n برای سازمان","چطور n8n را با LangGraph ترکیب کنیم تا گردشکارهای خودکار و قابلردیابی بسازیم.",11),
|
||||
new("vertex-cost-control","Google Stack","کنترل هزینه روی Vertex AI در مقیاس بالا","سه اشتباه رایج که در بیشتر پروژههای Vertex میبینم، و اینکه چطور ۶۰٪ هزینه را کم کردیم.",6),
|
||||
new("k8s-llm-inference","Infra","اجرای LLM روی Kubernetes با تأخیر زیر ۵۰ میلیثانیه","الگوی استقرار با KEDA، اشتراک GPU و request hedging برای سرویسدهی پایدار.",14),
|
||||
new("flutter-on-device-ai","Mobile","هوش مصنوعی روی دستگاه در Flutter","استفاده از Gemini Nano و LiteRT برای پردازش آفلاین در اپهای موبایل.",9),
|
||||
new("enterprise-ai-roadmap","Strategy","نقشهی راه هوش مصنوعی سازمانی در ۹۰ روز","چارچوبی که برای مدیران فنی میچینم؛ از پیدا کردن بهترین ایده تا اولین اجرای واقعی.",7),
|
||||
} : new BlogPost[]{
|
||||
new("rag-eval-framework","LLM","A RAG evaluation framework that holds up in production","Why BLEU and ROUGE fall short for RAG, and the metrics that actually drive decisions in real projects.",8),
|
||||
new("agentic-n8n-patterns","Automation","Agentic patterns with n8n for the enterprise","How to combine n8n with LangGraph to build auditable, debuggable autonomous workflows.",11),
|
||||
new("vertex-cost-control","Google Stack","Vertex AI cost control at scale","Three anti-patterns I see in 80% of Vertex projects — and how we cut 60% of monthly spend.",6),
|
||||
new("vertex-cost-control","Google Stack","Vertex AI cost control at scale","Three anti-patterns I see in 80% of Vertex projects, and how we cut 60% of monthly spend.",6),
|
||||
new("k8s-llm-inference","Infra","Sub-50ms LLM inference on Kubernetes","Deployment pattern with KEDA, GPU sharing, and request hedging for stable serving.",14),
|
||||
new("flutter-on-device-ai","Mobile","On-device AI in Flutter","Using Gemini Nano and LiteRT for offline inference inside mobile apps.",9),
|
||||
new("enterprise-ai-roadmap","Strategy","A 90-day enterprise AI roadmap","The framework I build for CTOs — from use-case discovery to first production deployment.",7),
|
||||
new("enterprise-ai-roadmap","Strategy","A 90-day enterprise AI roadmap","The framework I build for CTOs, from use-case discovery to first production deployment.",7),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,12 +17,12 @@ public class PostModel(ContentService content) : BasePageModel
|
||||
// Default bodies (Markdown-lite, rendered server-side)
|
||||
private static readonly Dictionary<string, (string Cat, string TitleEn, string TitleFa, int RT, string Body)> _defaults = new()
|
||||
{
|
||||
["rag-eval-framework"] = ("LLM", "A RAG evaluation framework that holds up in production", "چارچوب ارزیابی RAG که در تولید کار میکند", 8, DefaultBodies.RagEval),
|
||||
["rag-eval-framework"] = ("LLM", "A RAG evaluation framework that holds up in production", "چارچوب ارزیابی RAG که در عمل جواب میدهد", 8, DefaultBodies.RagEval),
|
||||
["agentic-n8n-patterns"] = ("Automation", "Agentic patterns with n8n for the enterprise", "الگوهای عاملمحور با n8n برای سازمان", 11, DefaultBodies.N8nPatterns),
|
||||
["vertex-cost-control"] = ("Google Stack", "Vertex AI cost control at scale", "کنترل هزینه روی Vertex AI در مقیاس بالا", 6, DefaultBodies.VertexCost),
|
||||
["k8s-llm-inference"] = ("Infra", "Sub-50ms LLM inference on Kubernetes", "استنتاج LLM روی Kubernetes با تأخیر زیر ۵۰ ms",14, DefaultBodies.K8sInference),
|
||||
["flutter-on-device-ai"] = ("Mobile", "On-device AI in Flutter", "هوش مصنوعی on-device در Flutter", 9, DefaultBodies.FlutterAI),
|
||||
["enterprise-ai-roadmap"] = ("Strategy", "A 90-day enterprise AI roadmap", "نقشه راه هوش مصنوعی سازمانی در ۹۰ روز", 7, DefaultBodies.EnterpriseRoadmap),
|
||||
["k8s-llm-inference"] = ("Infra", "Sub-50ms LLM inference on Kubernetes", "اجرای LLM روی Kubernetes با تأخیر زیر ۵۰ میلیثانیه",14, DefaultBodies.K8sInference),
|
||||
["flutter-on-device-ai"] = ("Mobile", "On-device AI in Flutter", "هوش مصنوعی روی دستگاه در Flutter", 9, DefaultBodies.FlutterAI),
|
||||
["enterprise-ai-roadmap"] = ("Strategy", "A 90-day enterprise AI roadmap", "نقشهی راه هوش مصنوعی سازمانی در ۹۰ روز", 7, DefaultBodies.EnterpriseRoadmap),
|
||||
};
|
||||
|
||||
public void OnGet()
|
||||
|
||||
+38
-38
@@ -42,19 +42,19 @@
|
||||
<section id="services" class="px-5 py-24 sm:px-8 sm:py-28">
|
||||
<div class="mx-auto max-w-6xl">
|
||||
<div class="sec-head">
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 gap-x-10 gap-y-10 sm:grid-cols-2 lg:grid-cols-3">
|
||||
@{
|
||||
var services = fa ? new[]{
|
||||
("strategy","راهبرد و نقشه راه هوش مصنوعی","ارزیابی بلوغ سازمانی، شناسایی موارد کاربری با بیشترین بازده، و طراحی نقشه راه ۱۲ تا ۱۸ ماهه با KPIهای روشن.",new[]{"Discovery","ROI Mapping","Roadmap"}),
|
||||
("automation","اتوماسیون هوش مصنوعی","ساخت عاملهای خودکار و گردشکارهای n8n که فرایندهای دستی را به سامانههای قابل ممیزی تبدیل میکنند.",new[]{"n8n","Agents","Workflows"}),
|
||||
("llm-rag","مهندسی LLM و RAG","طراحی pipelineهای RAG با پایگاههای برداری، evaluation framework، و سرویسدهی با تأخیر زیر ۵۰ میلیثانیه.",new[]{"RAG","Vector DB","Eval"}),
|
||||
("architecture","معماری راهکار","طراحی سامانههای توزیعشده روی Kubernetes با میکروسرویسها، event streaming، و الگوهای پایداری در مقیاس بالا.",new[]{"K8s","Microservices","Event-Driven"}),
|
||||
("mobile","اپلیکیشنهای موبایل هوش مصنوعی","برنامههای Flutter، Swift و Kotlin با on-device inference، استریم LLM و تجربهی کاربری بومی.",new[]{"Flutter","Swift","Kotlin"}),
|
||||
("google-stack","تخصص استک گوگل","استقرار روی Vertex AI، GKE و Gemini با بهینهسازی هزینه و الگوهای امنیتی سطح enterprise.",new[]{"Vertex AI","GKE","Gemini"}),
|
||||
("strategy","راهبرد و نقشهی راه هوش مصنوعی","با هم میبینیم سازمان کجای کار است، کدام ایدهها بیشترین ارزش را دارند، و نقشهی راه ۱۲ تا ۱۸ ماهه با هدفهای روشن میچینیم.",new[]{"Discovery","ROI Mapping","Roadmap"}),
|
||||
("automation","اتوماسیون هوش مصنوعی","عاملهای خودکار و گردشکارهای n8n که کارهای دستی را به سامانههایی قابلردیابی و قابلاتکا تبدیل میکنند.",new[]{"n8n","Agents","Workflows"}),
|
||||
("llm-rag","مهندسی LLM و RAG","ساخت پایپلاینهای RAG با پایگاههای برداری، چارچوب ارزیابی، و پاسخدهی با تأخیر زیر ۵۰ میلیثانیه.",new[]{"RAG","Vector DB","Eval"}),
|
||||
("architecture","معماری نرمافزار و سیستم","طراحی سیستمهای توزیعشده روی Kubernetes؛ میکروسرویس، استریم رویداد، و الگوهایی که زیر بار سنگین هم پایدار میمانند.",new[]{"K8s","Microservices","Event-Driven"}),
|
||||
("mobile","اپلیکیشنهای موبایل هوش مصنوعی","اپهای Flutter، Swift و Kotlin با پردازش روی خود دستگاه، استریم LLM و تجربهای روان و بومی.",new[]{"Flutter","Swift","Kotlin"}),
|
||||
("google-stack","تخصص روی استک گوگل","راهاندازی روی Vertex AI، GKE و Gemini با کنترل هزینه و امنیت در سطح سازمانی.",new[]{"Vertex AI","GKE","Gemini"}),
|
||||
} : 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"}),
|
||||
("automation","AI Automation","Autonomous agents and n8n workflows that turn manual processes into auditable, observable systems.",new[]{"n8n","Agents","Workflows"}),
|
||||
@@ -86,17 +86,17 @@
|
||||
<div class="mx-auto max-w-6xl">
|
||||
<div class="sec-head">
|
||||
<h2>@(fa ? "از سند خام تا پاسخ قابل اتکا" : "From raw document to a trustworthy answer")</h2>
|
||||
<p class="lede">@(fa ? "مسیری که هر پرسش در یک سامانهی RAG تولیدی طی میکند. هر مرحله قابل اندازهگیری، قابل ممیزی و بهینهشده برای تأخیر." : "The path every query takes through a production RAG system. Each stage is measurable, auditable, and tuned for latency.")</p>
|
||||
<p class="lede">@(fa ? "مسیری که هر پرسش در یک سامانهی RAG واقعی طی میکند. هر مرحله را میشود اندازه گرفت، دنبال کرد و برای سرعت بهتر کرد." : "The path every query takes through a production RAG system. Each stage is measurable, auditable, and tuned for latency.")</p>
|
||||
</div>
|
||||
|
||||
<ol class="grid grid-cols-1 gap-x-6 gap-y-8 sm:grid-cols-3 lg:grid-cols-5">
|
||||
@{
|
||||
var nodes = fa ? new[]{
|
||||
("دریافت","نرمالسازی، قطعهبندی و پاکسازی اسناد منبع"),
|
||||
("برداریسازی","تولید embedding و نمایهسازی در پایگاه برداری"),
|
||||
("دریافت","نرمالسازی، تکهتکهکردن و پاکسازی سندهای منبع"),
|
||||
("برداریسازی","ساخت embedding و نمایهکردن در پایگاه برداری"),
|
||||
("بازیابی","جستجوی ترکیبی معنایی و کلیدواژهای"),
|
||||
("بازرتبهبندی","مرتبسازی مجدد نامزدها با cross-encoder"),
|
||||
("تولید","پاسخ مستند با ارجاع به منبع"),
|
||||
("بازرتبهبندی","چیدن دوبارهی نتایج با cross-encoder"),
|
||||
("تولید","پاسخ مستند همراه با ذکر منبع"),
|
||||
} : new[]{
|
||||
("Ingest","Normalize, chunk, and clean source documents"),
|
||||
("Embed","Generate embeddings and index in the vector store"),
|
||||
@@ -116,7 +116,7 @@
|
||||
</li>
|
||||
}
|
||||
</ol>
|
||||
<p class="mt-8 text-sm text-zinc-500">@(fa ? "تأخیر سرتاسری زیر ۵۰ میلیثانیه؛ هر مرحله مشاهدهپذیر." : "Sub-50ms end-to-end, every stage observable.")</p>
|
||||
<p class="mt-8 text-sm text-zinc-500">@(fa ? "تأخیر کل زیر ۵۰ میلیثانیه؛ هر مرحله قابل مشاهده." : "Sub-50ms end-to-end, every stage observable.")</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
<div class="mx-auto max-w-6xl">
|
||||
<div class="sec-head">
|
||||
<h2>@(fa ? "ابزار روزمره" : "Daily tooling")</h2>
|
||||
<p class="lede">@(fa ? "هر چه میسازم بر این پایهها استوار است؛ انتخابشده برای دوام، نه چرخههای هیجان." : "Everything I ship sits on this foundation, chosen for longevity, not hype cycles.")</p>
|
||||
<p class="lede">@(fa ? "هر چیزی که میسازم روی اینها بنا میشود؛ انتخابشان کردهام چون میمانند، نه چون مد روزند." : "Everything I ship sits on this foundation, chosen for longevity, not hype cycles.")</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 gap-x-8 gap-y-9 sm:grid-cols-2 lg:grid-cols-4">
|
||||
@@ -159,18 +159,18 @@
|
||||
<section id="expertise" class="px-5 py-24 sm:px-8 sm:py-28">
|
||||
<div class="mx-auto max-w-4xl">
|
||||
<div class="sec-head">
|
||||
<h2>@(fa ? "آنچه در آن عمیق میشوم" : "What I go deep on")</h2>
|
||||
<p class="lede">@(fa ? "سامانههایی که میلیونها رویداد در روز را دوام میآورند. اینها حوزههاییاند که برایشان بهینه میکنم." : "Systems that survive millions of events per day. These are the areas I optimize for.")</p>
|
||||
<h2>@(fa ? "جاهایی که عمیق شدهام" : "What I go deep on")</h2>
|
||||
<p class="lede">@(fa ? "سامانههایی که روزانه میلیونها رویداد را تاب میآورند. اینها همان چیزهاییاند که سالها رویشان کار کردهام." : "Systems that survive millions of events per day. These are the areas I optimize for.")</p>
|
||||
</div>
|
||||
|
||||
<dl>
|
||||
@{
|
||||
var areas = fa ? new[]{
|
||||
("مهندسی LLM و RAG","پایپلاینهای بازیابی، ارزیابی و تولید مستند در محیط تولید."),
|
||||
("معماری ابری و Kubernetes","سرویسهای توزیعشده، مقیاس خودکار و پایداری در مقیاس بالا."),
|
||||
("سیستمهای عاملمحور و اتوماسیون","گردشکارهای خودکار قابل ممیزی با n8n و LangGraph."),
|
||||
("استک گوگل کلود (Vertex / GKE)","Vertex AI، GKE و Gemini با انضباط هزینه."),
|
||||
("موبایل بومی و cross-platform","Flutter، Swift و Kotlin با استنتاج روی دستگاه."),
|
||||
("مهندسی LLM و RAG","ساخت پایپلاینهای بازیابی، ارزیابی و تولید پاسخ مستند برای محیط واقعی."),
|
||||
("معماری ابری و Kubernetes","سرویسهای توزیعشده، مقیاسپذیری خودکار و پایداری زیر بار سنگین."),
|
||||
("سیستمهای عاملمحور و اتوماسیون","گردشکارهای خودکار و قابلردیابی با n8n و LangGraph."),
|
||||
("استک گوگل کلود (Vertex / GKE)","Vertex AI، GKE و Gemini، با حواسجمعی روی هزینه."),
|
||||
("موبایل بومی و چندسکویی","Flutter، Swift و Kotlin با پردازش روی خود دستگاه."),
|
||||
} : new[]{
|
||||
("LLM and RAG engineering","Retrieval pipelines, evals, and grounded generation in production."),
|
||||
("Cloud architecture and Kubernetes","Distributed services, autoscaling, and resilience at scale."),
|
||||
@@ -195,7 +195,7 @@
|
||||
<div class="mx-auto max-w-6xl">
|
||||
<div class="sec-head">
|
||||
<h2>@(fa ? "نمونهکارهای منتخب" : "Selected work")</h2>
|
||||
<p class="lede">@(fa ? "محصولاتی که طراحی و ساختهام. روی هر کارت بزنید تا نسخهی زنده را ببینید." : "Products I have designed and built. Tap any card to open the live site.")</p>
|
||||
<p class="lede">@(fa ? "محصولاتی که خودم طراحی و ساختهام. روی هر کارت بزنید تا خودِ سایت را ببینید." : "Products I have designed and built. Tap any card to open the live site.")</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 gap-5 sm:grid-cols-2">
|
||||
@@ -242,18 +242,18 @@
|
||||
<div class="mx-auto max-w-4xl">
|
||||
<div class="sec-head">
|
||||
<h2>@(fa ? "یادداشتهای مهندسی" : "Engineering notes")</h2>
|
||||
<p class="lede">@(fa ? "یافتهها از پروژههای واقعی. نه ترجمهی مقاله، نه فهرست هیجان." : "Findings from real engagements. Not translated articles, not hype lists.")</p>
|
||||
<p class="lede">@(fa ? "درسهایی از پروژههای واقعی. نه ترجمهی مقاله، نه شعار توخالی." : "Findings from real engagements. Not translated articles, not hype lists.")</p>
|
||||
</div>
|
||||
|
||||
<div class="border-b border-zinc-200">
|
||||
@{
|
||||
var posts = fa ? new[]{
|
||||
("rag-eval-framework","LLM","چارچوب ارزیابی RAG که در تولید دوام میآورد","چرا BLEU و ROUGE برای RAG کافی نیستند، و معیارهایی که در پروژههای واقعی تصمیم میسازند.",8),
|
||||
("agentic-n8n-patterns","Automation","الگوهای عاملمحور با n8n برای سازمان","چگونه n8n را با LangGraph ترکیب کنیم تا گردشکارهای قابل ممیزی بسازیم.",11),
|
||||
("vertex-cost-control","Google Stack","کنترل هزینه روی Vertex AI در مقیاس بالا","سه ضدالگو که در ۸۰٪ پروژههای Vertex میبینم، و چگونه ۶۰٪ هزینه را کاهش دادیم.",6),
|
||||
("k8s-llm-inference","Infra","استنتاج LLM روی Kubernetes با تأخیر زیر ۵۰ میلیثانیه","الگوی استقرار با KEDA، GPU sharing، و request hedging برای سرویسدهی پایدار.",14),
|
||||
("flutter-on-device-ai","Mobile","هوش مصنوعی on-device در Flutter","استفاده از Gemini Nano و LiteRT برای استنتاج آفلاین در اپلیکیشنهای موبایل.",9),
|
||||
("enterprise-ai-roadmap","Strategy","نقشه راه هوش مصنوعی سازمانی در ۹۰ روز","چارچوبی که برای CTOها میسازم؛ از کشف موارد کاربری تا اولین استقرار تولید.",7),
|
||||
("rag-eval-framework","LLM","چارچوب ارزیابی RAG که در عمل جواب میدهد","چرا BLEU و ROUGE برای RAG کافی نیستند، و معیارهایی که واقعاً به تصمیم کمک میکنند.",8),
|
||||
("agentic-n8n-patterns","Automation","الگوهای عاملمحور با n8n برای سازمان","چطور n8n را با LangGraph ترکیب کنیم تا گردشکارهای خودکار و قابلردیابی بسازیم.",11),
|
||||
("vertex-cost-control","Google Stack","کنترل هزینه روی Vertex AI در مقیاس بالا","سه اشتباه رایج که در بیشتر پروژههای Vertex میبینم، و اینکه چطور ۶۰٪ هزینه را کم کردیم.",6),
|
||||
("k8s-llm-inference","Infra","اجرای LLM روی Kubernetes با تأخیر زیر ۵۰ میلیثانیه","الگوی استقرار با KEDA، اشتراک GPU و request hedging برای سرویسدهی پایدار.",14),
|
||||
("flutter-on-device-ai","Mobile","هوش مصنوعی روی دستگاه در Flutter","استفاده از Gemini Nano و LiteRT برای پردازش آفلاین در اپهای موبایل.",9),
|
||||
("enterprise-ai-roadmap","Strategy","نقشهی راه هوش مصنوعی سازمانی در ۹۰ روز","چارچوبی که برای مدیران فنی میچینم؛ از پیدا کردن بهترین ایده تا اولین اجرای واقعی.",7),
|
||||
} : new[]{
|
||||
("rag-eval-framework","LLM","A RAG evaluation framework that holds up in production","Why BLEU and ROUGE fall short for RAG, and the metrics that actually drive decisions in real projects.",8),
|
||||
("agentic-n8n-patterns","Automation","Agentic patterns with n8n for the enterprise","How to combine n8n with LangGraph to build auditable, debuggable autonomous workflows.",11),
|
||||
@@ -289,12 +289,12 @@
|
||||
<div class="mx-auto max-w-2xl">
|
||||
<div class="sec-head">
|
||||
<h2>@(fa ? "رزرو یک جلسهی ۳۰ دقیقهای" : "Book a 30-minute call")</h2>
|
||||
<p class="lede">@(fa ? "بدون هزینه، بدون تعهد. مورد کاربری، محدودیتها و گام بعدی را با هم مشخص میکنیم." : "No cost, no commitment. We map the use case, the constraints, and the next step together.")</p>
|
||||
<p class="lede">@(fa ? "بدون هزینه، بدون تعهد. با هم میبینیم چه میخواهید، چه محدودیتهایی هست، و قدم بعد چیست." : "No cost, no commitment. We map the use case, the constraints, and the next step together.")</p>
|
||||
</div>
|
||||
|
||||
<form id="contact-form" class="card space-y-5 p-6 sm:p-8"
|
||||
data-success-msg="@(fa ? "پیام ارسال شد. معمولاً ظرف ۲۴ ساعت کاری پاسخ میدهم." : "Sent. Typical reply within 24 working hours.")"
|
||||
data-error-msg="@(fa ? "خطایی رخ داد. لطفاً دوباره امتحان کنید." : "Something went wrong. Please try again.")">
|
||||
data-success-msg="@(fa ? "پیام رسید! معمولاً ظرف ۲۴ ساعت کاری جواب میدهم." : "Sent. Typical reply within 24 working hours.")"
|
||||
data-error-msg="@(fa ? "یک مشکلی پیش آمد. لطفاً دوباره تلاش کنید." : "Something went wrong. Please try again.")">
|
||||
<input type="hidden" name="locale" value="@locale" />
|
||||
|
||||
<div class="grid grid-cols-1 gap-5 sm:grid-cols-2">
|
||||
@@ -315,10 +315,10 @@
|
||||
<option value="" disabled selected>@(fa ? "انتخاب کنید" : "Select…")</option>
|
||||
@if (fa)
|
||||
{
|
||||
<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="architecture">معماری نرمافزار</option>
|
||||
<option value="mobile">موبایل</option>
|
||||
<option value="google-stack">استک گوگل</option>
|
||||
}
|
||||
@@ -347,11 +347,11 @@
|
||||
|
||||
<div>
|
||||
<label class="flabel" for="message">@(fa ? "پیام" : "Message")</label>
|
||||
<textarea id="message" name="message" required rows="4" placeholder="@(fa ? "هدف، بازه زمانی، موانع فعلی…" : "Goal, timeline, current blockers…")" class="field resize-none"></textarea>
|
||||
<textarea id="message" name="message" required rows="4" placeholder="@(fa ? "هدف، بازهی زمانی، و چیزی که الان گیرتان انداخته…" : "Goal, timeline, current blockers…")" class="field resize-none"></textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn w-full">@(fa ? "ارسال درخواست" : "Send request")</button>
|
||||
<p id="contact-status" class="mt-1 text-sm text-zinc-500">@(fa ? "معمولاً ظرف ۲۴ ساعت کاری پاسخ میدهم." : "Typical reply within 24 working hours.")</p>
|
||||
<button type="submit" class="btn w-full">@(fa ? "ارسال پیام" : "Send request")</button>
|
||||
<p id="contact-status" class="mt-1 text-sm text-zinc-500">@(fa ? "معمولاً ظرف ۲۴ ساعت کاری جواب میدهم." : "Typical reply within 24 working hours.")</p>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var dir = isRtl ? "rtl" : "ltr";
|
||||
var lang = locale == "fa" ? "fa" : "en";
|
||||
var title = (string?)ViewData["Title"] ?? (locale == "fa"
|
||||
? "سروش اسعدی - مهندس هوش مصنوعی، مشاور، معمار راهکار"
|
||||
? "سروش اسعدی - مهندس هوش مصنوعی و معمار نرمافزار"
|
||||
: "Soroush Asadi - AI Engineer, Consultant, Solution Architect");
|
||||
}
|
||||
<!doctype html>
|
||||
@@ -15,7 +15,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>@title</title>
|
||||
<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.")" />
|
||||
<meta name="theme-color" content="#fafafa" />
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
<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>
|
||||
</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 ? "هوش مصنوعی میسازم که در عمل کار میکند؛ از طراحی تا اجرا." : "AI systems engineering for the enterprise, from strategy to live deployment.")</p>
|
||||
<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.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>
|
||||
|
||||
Reference in New Issue
Block a user