diff --git a/Pages/Blog/Index.cshtml b/Pages/Blog/Index.cshtml index 5541410..716cdb1 100644 --- a/Pages/Blog/Index.cshtml +++ b/Pages/Blog/Index.cshtml @@ -11,7 +11,7 @@

@(fa ? "یادداشت‌های مهندسی" : "Engineering notes")

-

@(fa ? "یافته‌ها از پروژه‌های واقعی. نه ترجمه‌ی مقاله، نه فهرست هیجان." : "Findings from real engagements. Not translated articles, not hype lists.")

+

@(fa ? "درس‌هایی از پروژه‌های واقعی. نه ترجمه‌ی مقاله، نه شعار توخالی." : "Findings from real engagements. Not translated articles, not hype lists.")

diff --git a/Pages/Blog/Index.cshtml.cs b/Pages/Blog/Index.cshtml.cs index 27f556e..ec69bd1 100644 --- a/Pages/Blog/Index.cshtml.cs +++ b/Pages/Blog/Index.cshtml.cs @@ -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), }; } } diff --git a/Pages/Blog/Post.cshtml.cs b/Pages/Blog/Post.cshtml.cs index 6b05b37..7c3db78 100644 --- a/Pages/Blog/Post.cshtml.cs +++ b/Pages/Blog/Post.cshtml.cs @@ -17,12 +17,12 @@ public class PostModel(ContentService content) : BasePageModel // Default bodies (Markdown-lite, rendered server-side) private static readonly Dictionary _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() diff --git a/Pages/Index.cshtml b/Pages/Index.cshtml index 66cb231..d1af21f 100644 --- a/Pages/Index.cshtml +++ b/Pages/Index.cshtml @@ -42,19 +42,19 @@
-

@(fa ? "شش حوزه‌ی تخصص" : "Six areas of practice")

-

@(fa ? "از نخستین جلسه‌ی راهبرد تا استقرار تولید؛ یک شریک مهندسی برای کل چرخه‌ی عمر هوش مصنوعی." : "From the first strategy session to production rollout, one engineering partner for the full AI lifecycle.")

+

@(fa ? "شش کاری که انجام می‌دهم" : "Six areas of practice")

+

@(fa ? "از همان جلسه‌ی اول تا وقتی محصول روی پای خودش می‌ایستد، کنارتان هستم؛ در تمام مسیر هوش مصنوعی." : "From the first strategy session to production rollout, one engineering partner for the full AI lifecycle.")

@{ 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 @@

@(fa ? "از سند خام تا پاسخ قابل اتکا" : "From raw document to a trustworthy answer")

-

@(fa ? "مسیری که هر پرسش در یک سامانه‌ی RAG تولیدی طی می‌کند. هر مرحله قابل اندازه‌گیری، قابل ممیزی و بهینه‌شده برای تأخیر." : "The path every query takes through a production RAG system. Each stage is measurable, auditable, and tuned for latency.")

+

@(fa ? "مسیری که هر پرسش در یک سامانه‌ی RAG واقعی طی می‌کند. هر مرحله را می‌شود اندازه گرفت، دنبال کرد و برای سرعت بهتر کرد." : "The path every query takes through a production RAG system. Each stage is measurable, auditable, and tuned for latency.")

    @{ 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 @@ }
-

@(fa ? "تأخیر سرتاسری زیر ۵۰ میلی‌ثانیه؛ هر مرحله مشاهده‌پذیر." : "Sub-50ms end-to-end, every stage observable.")

+

@(fa ? "تأخیر کل زیر ۵۰ میلی‌ثانیه؛ هر مرحله قابل مشاهده." : "Sub-50ms end-to-end, every stage observable.")

@@ -125,7 +125,7 @@

@(fa ? "ابزار روزمره" : "Daily tooling")

-

@(fa ? "هر چه می‌سازم بر این پایه‌ها استوار است؛ انتخاب‌شده برای دوام، نه چرخه‌های هیجان." : "Everything I ship sits on this foundation, chosen for longevity, not hype cycles.")

+

@(fa ? "هر چیزی که می‌سازم روی این‌ها بنا می‌شود؛ انتخاب‌شان کرده‌ام چون می‌مانند، نه چون مد روزند." : "Everything I ship sits on this foundation, chosen for longevity, not hype cycles.")

@@ -159,18 +159,18 @@
-

@(fa ? "آنچه در آن عمیق می‌شوم" : "What I go deep on")

-

@(fa ? "سامانه‌هایی که میلیون‌ها رویداد در روز را دوام می‌آورند. این‌ها حوزه‌هایی‌اند که برایشان بهینه می‌کنم." : "Systems that survive millions of events per day. These are the areas I optimize for.")

+

@(fa ? "جاهایی که عمیق شده‌ام" : "What I go deep on")

+

@(fa ? "سامانه‌هایی که روزانه میلیون‌ها رویداد را تاب می‌آورند. این‌ها همان چیزهایی‌اند که سال‌ها رویشان کار کرده‌ام." : "Systems that survive millions of events per day. These are the areas I optimize for.")

@{ 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 @@

@(fa ? "نمونه‌کارهای منتخب" : "Selected work")

-

@(fa ? "محصولاتی که طراحی و ساخته‌ام. روی هر کارت بزنید تا نسخه‌ی زنده را ببینید." : "Products I have designed and built. Tap any card to open the live site.")

+

@(fa ? "محصولاتی که خودم طراحی و ساخته‌ام. روی هر کارت بزنید تا خودِ سایت را ببینید." : "Products I have designed and built. Tap any card to open the live site.")

@@ -242,18 +242,18 @@

@(fa ? "یادداشت‌های مهندسی" : "Engineering notes")

-

@(fa ? "یافته‌ها از پروژه‌های واقعی. نه ترجمه‌ی مقاله، نه فهرست هیجان." : "Findings from real engagements. Not translated articles, not hype lists.")

+

@(fa ? "درس‌هایی از پروژه‌های واقعی. نه ترجمه‌ی مقاله، نه شعار توخالی." : "Findings from real engagements. Not translated articles, not hype lists.")

@{ 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 @@

@(fa ? "رزرو یک جلسه‌ی ۳۰ دقیقه‌ای" : "Book a 30-minute call")

-

@(fa ? "بدون هزینه، بدون تعهد. مورد کاربری، محدودیت‌ها و گام بعدی را با هم مشخص می‌کنیم." : "No cost, no commitment. We map the use case, the constraints, and the next step together.")

+

@(fa ? "بدون هزینه، بدون تعهد. با هم می‌بینیم چه می‌خواهید، چه محدودیت‌هایی هست، و قدم بعد چیست." : "No cost, no commitment. We map the use case, the constraints, and the next step together.")

+ data-success-msg="@(fa ? "پیام رسید! معمولاً ظرف ۲۴ ساعت کاری جواب می‌دهم." : "Sent. Typical reply within 24 working hours.")" + data-error-msg="@(fa ? "یک مشکلی پیش آمد. لطفاً دوباره تلاش کنید." : "Something went wrong. Please try again.")">
@@ -315,10 +315,10 @@ @if (fa) { - + - + } @@ -347,11 +347,11 @@
- +
- -

@(fa ? "معمولاً ظرف ۲۴ ساعت کاری پاسخ می‌دهم." : "Typical reply within 24 working hours.")

+ +

@(fa ? "معمولاً ظرف ۲۴ ساعت کاری جواب می‌دهم." : "Typical reply within 24 working hours.")

diff --git a/Pages/Shared/_Layout.cshtml b/Pages/Shared/_Layout.cshtml index 2a6039e..3439af5 100644 --- a/Pages/Shared/_Layout.cshtml +++ b/Pages/Shared/_Layout.cshtml @@ -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"); } @@ -15,7 +15,7 @@ @title @@ -126,7 +126,7 @@ @(locale == "fa" ? "سروش اسعدی" : "Soroush Asadi") -

@(fa ? "مهندسی سامانه‌های هوش مصنوعی برای سازمان‌ها؛ از راهبرد تا استقرار در تولید." : "AI systems engineering for the enterprise, from strategy to live deployment.")

+

@(fa ? "هوش مصنوعی می‌سازم که در عمل کار می‌کند؛ از طراحی تا اجرا." : "AI systems engineering for the enterprise, from strategy to live deployment.")