1:"$Sreact.fragment" 2:I[22016,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/06_fwbpl-tgls.js"],""] 3:I[62474,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ThemeToggle"] f:I[68027,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] :HL["/_next/static/chunks/15m5f55k..iay.css","style"] :HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 0:{"P":null,"c":["","insights","ai-first-architecture-on-azure-patterns-that-work"],"q":"","i":false,"f":[[["",{"children":["insights",{"children":["ai-first-architecture-on-azure-patterns-that-work",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/15m5f55k..iay.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/02ti70zu7rea_.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"inter_2fe1ab3d-module__-T-KAq__variable space_grotesk_6ca79492-module__d8ieqW__variable","data-theme":"dark","suppressHydrationWarning":true,"children":["$","body",null,{"className":"inter_2fe1ab3d-module__-T-KAq__className","children":["$","div",null,{"className":"theme-shell theme-transition min-h-screen flex flex-col","children":[["$","a",null,{"href":"#content","className":"skip-link focus-visible:opacity-100","children":"Skip to content"}],["$","header",null,{"className":"sticky top-0 z-40 border-b theme-surface backdrop-blur supports-[backdrop-filter]:bg-[color:color-mix(in_srgb,var(--bg-secondary)_55%,transparent)]","children":["$","div",null,{"className":"mx-auto max-w-6xl px-4","children":["$","div",null,{"className":"flex items-center justify-between py-4","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"href":"/","className":"text-sm font-semibold tracking-wide theme-text-primary font-[var(--font-heading)]","aria-label":"Jomiko homepage","children":"Mike @ Jomiko Ltd"}]}],["$","div",null,{"className":"hidden md:flex md:items-center md:gap-4","children":["$","nav",null,{"className":"md:flex md:items-center md:gap-6","aria-label":"Primary","children":[[["$","$L2","/services",{"href":"/services","className":"text-sm font-medium theme-text-secondary underline-slide hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5 transition","children":"Services"}],["$","$L2","/insights",{"href":"/insights","className":"text-sm font-medium theme-text-secondary underline-slide hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5 transition","children":"Insights"}],["$","$L2","/about",{"href":"/about","className":"text-sm font-medium theme-text-secondary underline-slide hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5 transition","children":"About"}]],["$","$L3",null,{}],["$","div",null,{"children":["$","$L2",null,{"href":"/contact","className":"inline-flex items-center justify-center rounded-full px-5 py-2.5 text-sm font-semibold transition-all duration-[250ms] ease-in-out hover:scale-[1.01] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset bg-[var(--accent)] text-[var(--bg-primary)] hover:bg-[var(--accent-soft)] hover:text-[var(--text-primary)] active:bg-[var(--accent-soft)] ","children":"Book a Strategy Call"}]}]]}]}],["$","div",null,{"className":"md:hidden","children":["$","nav",null,{"className":"flex flex-col items-end gap-2","aria-label":"Primary mobile","children":[[["$","$L2","/services",{"href":"/services","className":"text-sm font-medium theme-text-secondary underline-slide hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5 transition","children":"Services"}],"$L4","$L5"],"$L6","$L7"]}]}]]}]}]}],"$L8","$L9"]}]}]}]]}],{"children":["$La",{"children":["$Lb",{"children":["$Lc",{},null,false,null]},null,false,"$@d"]},null,false,"$@d"]},null,false,null],"$Le",false]],"m":"$undefined","G":["$f",["$L10"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"lfEugLFFjbfrSWt8vjHCz"} 11:I[39756,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] 12:I[37457,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] 13:I[44223,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/06_fwbpl-tgls.js"],"FadeIn"] 22:I[97367,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] 24:I[97367,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] 25:"$Sreact.suspense" 4:["$","$L2","/insights",{"href":"/insights","className":"text-sm font-medium theme-text-secondary underline-slide hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5 transition","children":"Insights"}] 5:["$","$L2","/about",{"href":"/about","className":"text-sm font-medium theme-text-secondary underline-slide hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5 transition","children":"About"}] 6:["$","div",null,{"className":"pt-1","children":["$","$L3",null,{}]}] 7:["$","div",null,{"className":"pt-1","children":["$","$L2",null,{"href":"/contact","className":"inline-flex items-center justify-center rounded-full px-5 py-2.5 text-sm font-semibold transition-all duration-[250ms] ease-in-out hover:scale-[1.01] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset bg-[var(--accent)] text-[var(--bg-primary)] hover:bg-[var(--accent-soft)] hover:text-[var(--text-primary)] active:bg-[var(--accent-soft)] ","children":"Book a Strategy Call"}]}] 8:["$","main",null,{"id":"content","className":"flex-1","children":["$","$L11",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L12",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}] 9:["$","footer",null,{"className":"border-t theme-surface backdrop-blur depth-section","children":["$","div",null,{"className":"mx-auto max-w-6xl px-4 py-10","children":["$","p",null,{"className":"text-sm theme-text-secondary","children":["© ",2026," Jomiko Ltd. All rights reserved."]}]}]}] a:["$","$1","c",{"children":[null,["$","$L11",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L12",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}] b:["$","$1","c",{"children":[null,["$","$L11",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L12",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}] c:["$","$1","c",{"children":[["$","$L13",null,{"children":["$","section",null,{"id":"$undefined","className":"relative overflow-hidden depth-section py-12 sm:py-16 section-insights-bg ","children":["$","div",null,{"className":"mx-auto max-w-6xl px-4","children":["$","div",null,{"className":"section-panel section-foreground-gradient","children":[["$","header",null,{"children":[["$","div",null,{"className":"max-w-3xl","children":[["$","p",null,{"className":"text-sm font-semibold tracking-wide theme-text-accent","children":"INSIGHTS"}],["$","h2",null,{"className":"mt-2 text-2xl font-semibold tracking-tight theme-text-primary sm:text-3xl font-[var(--font-heading)]","children":"AI-First Architecture on Azure: Patterns That Actually Work"}]]}],["$","p",null,{"className":"mt-3 text-base leading-7 text-pretty theme-text-secondary","children":"Practical architecture patterns for building AI-first systems using Azure’s cloud-native capabilities."}]]}],["$","div",null,{"className":"mt-8","children":["$","div",null,{"className":"mt-2 max-w-3xl space-y-10","children":[["$","p",null,{"className":"text-base leading-7 theme-text-secondary","children":"Most organisations want to adopt AI; fewer move beyond prototypes that fracture under load, governance, or cost. Azure is a strong substrate for AI-first systems—but only when paired with deliberate architecture. Through Jomiko, I focus on patterns that are proven in production: composable, observable, and adoptable without rewriting your entire estate."}],[["$","section","0",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"Why Azure is a strong foundation for AI-first systems"}],[["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"Azure gives you enterprise-grade identity, network boundaries, and compliance artefacts your security teams already recognise. For inference, Azure AI and Azure OpenAI offer managed endpoints that scale without you operating raw GPU fleets. Event Grid and Service Bus provide durable event-driven primitives; Azure Functions supply serverless glue between systems. For retrieval, Azure AI Search and Cosmos DB with vector indexing cover hybrid and metadata-filtered search. App Insights and Azure Monitor close the loop—latency, errors, dependency maps, and cost signals in one operational model. None of this replaces architecture; it shortens the path from design to something you can run and audit."}],["$","p","1",{"className":"text-base leading-7 theme-text-secondary","children":"Private endpoints, managed identities, and key vault integration are first-class, which matters when models sit next to sensitive corpora. The same primitives support multi-region and DR patterns you already use for non-AI workloads—so AI services can inherit resilience assumptions instead of inventing a parallel universe. The goal is not “more Azure services”; it is fewer bespoke integration seams between AI and the systems that already enforce policy."}]]]}],["$","section","1",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"Pattern 1: Retrieval pipelines that scale"}],[["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"Start with embeddings that match your content lifecycle: batch or streaming generation, versioned models, and explicit invalidation when sources change. Chunking is not a one-size setting—tune chunk size and overlap to your document structure and query patterns. Hybrid search (BM25 + vector) reduces false negatives where keywords still matter; metadata filtering enforces permissions and tenancy before similarity runs. Cache embedding results and hot retrieval paths where repeat queries dominate; cap fan-out and batch where the economics justify it. Azure AI Search is a practical backbone here: indexes, skillsets, semantic + vector configuration, and filters aligned to your security model."}],"$L14","$L15"]]}],"$L16","$L17","$L18","$L19","$L1a"],["$L1b"],"$L1c","$L1d","$L1e"]}]}]]}]}]}]}],["$L1f"],"$L20"]}] 21:[] d:"$W21" e:["$","$1","h",{"children":[null,["$","$L22",null,{"children":"$L23"}],["$","div",null,{"hidden":true,"children":["$","$L24",null,{"children":["$","$25",null,{"name":"Next.Metadata","children":"$L26"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] 10:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/15m5f55k..iay.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] 27:I[97367,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] 14:["$","p","1",{"className":"text-base leading-7 theme-text-secondary","children":"Reranking—cross-encoder or lightweight learned rankers—often buys more precision than a larger embedding model alone. Log retrieval candidates and scores at query time so you can replay failures: why did the wrong chunk win? Did the filter strip the right document? Pair that with offline evaluation sets that include permission edge cases, not only happy-path questions."}] 15:["$","p","2",{"className":"text-base leading-7 theme-text-secondary","children":"Example workflow: ingest → chunk → embed → index with metadata → query path applies filters → hybrid retrieval → rerank → grounded answer with citations. Jomiko treats each step as contract-bound: failures surface in telemetry, not silent degradation."}] 16:["$","section","2",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"Pattern 2: Event-driven AI workflows"}],[["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"Request-response fits simple calls; AI workloads benefit when work is asynchronous, retryable, and observable. Event Grid or Service Bus decouples producers from inference: a business event triggers enrichment, summarisation, or classification without blocking the originating transaction. Azure Functions act as lightweight workers—small surface area, idempotent handlers, dead-letter queues for poison paths. Inference stays behind clear boundaries so business rules and orchestration do not entangle with model latency. Retries with backoff, session ordering where needed, and correlation IDs through App Insights keep failures diagnosable."}],["$","p","1",{"className":"text-base leading-7 theme-text-secondary","children":"Design handlers with explicit idempotency keys so duplicate deliveries do not double-charge or double-write. Cap maximum retry depth and route exhausted messages to a human or compensating workflow. For long-running chains, checkpoint state so a partial failure does not force a full replay from scratch unless that is what you want."}],["$","p","2",{"className":"text-base leading-7 theme-text-secondary","children":"Architecture sketch (text): Line-of-business systems publish domain events to Service Bus. Functions consume, call Azure OpenAI or a containerised model, persist results to storage or a downstream topic, and emit completion events. Dashboards in Monitor tie request IDs to token usage and downstream writes—no monolithic “AI in the request path” unless you explicitly want that coupling."}]]]}] 17:["$","section","3",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"Pattern 3: Multi-agent systems on Azure"}],[["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"Assign each agent a narrow role with explicit inputs and outputs—planner, retriever, tool executor, critic—so behaviour stays testable. Tool use should follow contracts: schemas, timeouts, and allow-listed endpoints. Shared memory (short-term context, retrieved facts, structured state) must be scoped; avoid an opaque blob every agent reads. Evaluation loops close the gap between “runs” and “right”: golden sets, regression suites, and human review queues where risk demands it. Host agents on Functions for bursty, short work; on Container Apps or AKS when you need longer sessions, GPU-adjacent services, or tighter networking. Choose Azure OpenAI when managed SLAs and safety features match your policy; pull OSS or specialised models in containers when you need weight or fine-tuning control—still behind the same orchestration and evaluation harness."}],["$","p","1",{"className":"text-base leading-7 theme-text-secondary","children":"Instrument each agent boundary: latency, error rate, tool failure taxonomy, and token attribution per role. Circuit-break hot tools so one degraded dependency does not stall the whole graph. When agents debate or refine outputs, persist the rationale in structured form so downstream reviewers—and future you—can see why a path was chosen."}]]]}] 18:["$","section","4",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"Pattern 4: Cost-controlled inference strategies"}],[["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"Batch work where latency allows; cache prompts and retrieval bundles where repeatability is high. Select models by tier—smaller models for routing and extraction, larger only where quality delta is measurable. Hybrid patterns (edge or local inference for classification; cloud for heavy generation) work when data residency and spend patterns align. Azure Monitor and cost management views belong in the design: per-workflow budgets, alerts on token velocity, and tracing from business event to model call. Predictable spend is an architecture outcome, not a finance afterthought."}],["$","p","1",{"className":"text-base leading-7 theme-text-secondary","children":"Separate “capacity you reserve” from “capacity you burst into”: reserved throughput can stabilise latency for steady workloads; pay-as-you-go with strict caps suits exploratory traffic. Tag every inference call with tenant and feature dimensions so chargeback is honest, not a monthly spreadsheet argument."}]]]}] 19:["$","section","5",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"What organisations get wrong"}],["$","ul",null,{"className":"space-y-2 text-sm theme-text-secondary","children":[["$","li","0",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Treating AI as a feature flag instead of a system with contracts and failure modes."]}],["$","li","1",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Skipping architecture because “the model will handle it.”"]}],["$","li","2",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Over-relying on a single model for retrieval, reasoning, and safety."]}],["$","li","3",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Ignoring evaluation until users report regressions."]}],["$","li","4",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Shipping prototypes that cannot scale, be governed, or be costed."]}],["$","li","5",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Running production traffic through unbounded synchronous chains with no back-pressure or dead-letter discipline."]}],["$","li","6",{"className":"flex gap-3","children":[["$","span",null,{"className":"mt-1 h-2 w-2 shrink-0 rounded-full bg-[var(--accent)]"}],"Assuming managed services remove the need for data classification, residency, and access reviews."]}]]}]]}] 1a:["$","section","6",{"className":"space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight theme-text-primary font-[var(--font-heading)]","children":"How to adopt these patterns without rebuilding everything"}],[["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"Start with retrieval: index what you already trust, wire hybrid search and filters, measure answer quality against a small evaluation set. Introduce event-driven orchestration for the workloads that hurt when synchronous AI blocks transactions. Add agents only where decomposition reduces risk or clarifies ownership—not by default. Wrap the stack in evaluation harnesses and observability from day one, not after launch. Integrate with existing Azure workloads—Functions, messaging, and identity you already run—so the path is incremental. I use this sequencing through Jomiko to keep blast radius small and learning fast."}],["$","p","1",{"className":"text-base leading-7 theme-text-secondary","children":"Pilot on a bounded domain with clear rollback: freeze prompts and tool versions for the pilot window, compare metrics to baseline, and only widen scope when drift and cost curves look stable. Document the decision record—what was in scope, what was explicitly out of scope, and what would trigger a pause—so the organisation does not accidentally “productionise” the experiment by traffic alone."}]]]}] 1b:["$","p","0",{"className":"text-base leading-7 theme-text-secondary","children":"AI-first architecture is not about chasing the newest model. It is about systems that scale, fail predictably, and stay within cost—Azure supplies the primitives; the architecture is what makes them work."}] 1c:["$","p",null,{"className":"text-base leading-7 theme-text-secondary","children":["If you want help applying this to your architecture,"," ",["$","$L2",null,{"href":"/contact","className":"font-semibold underline-slide theme-text-primary","children":"book a strategy call"}]," ","or an architecture review."]}] 1d:["$","p",null,{"className":"text-xs theme-text-secondary","children":["Tags:"," ",["$","span",null,{"className":"text-[var(--text-secondary)]","children":"azure · architecture · ai-first · patterns"}]]}] 1e:["$","p",null,{"children":["$","$L2",null,{"href":"/insights","className":"text-sm font-semibold underline-slide theme-text-secondary hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 theme-ring-offset rounded px-1 py-0.5","children":"← All insights"}]}] 1f:["$","script","script-0",{"src":"/_next/static/chunks/06_fwbpl-tgls.js","async":true,"nonce":"$undefined"}] 20:["$","$L27",null,{"children":["$","$25",null,{"name":"Next.MetadataOutlet","children":"$@28"}]}] 23:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 29:I[27201,["/_next/static/chunks/02ti70zu7rea_.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] 26:[["$","title","0",{"children":"AI-First Architecture on Azure: Patterns That Actually Work | Mike @ Jomiko Ltd"}],["$","meta","1",{"name":"description","content":"Practical architecture patterns for building AI-first systems using Azure’s cloud-native capabilities—retrieval, events, agents, and cost-controlled inference."}],["$","meta","2",{"property":"og:title","content":"AI-First Architecture on Azure: Patterns That Actually Work | Mike @ Jomiko Ltd"}],["$","meta","3",{"property":"og:description","content":"Practical architecture patterns for building AI-first systems using Azure’s cloud-native capabilities—retrieval, events, agents, and cost-controlled inference."}],["$","meta","4",{"property":"og:url","content":"https://jomiko.co.uk"}],["$","meta","5",{"property":"og:type","content":"website"}],["$","meta","6",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","7",{"name":"twitter:title","content":"AI-First Architecture on Azure: Patterns That Actually Work | Mike @ Jomiko Ltd"}],["$","meta","8",{"name":"twitter:description","content":"Practical architecture patterns for building AI-first systems using Azure’s cloud-native capabilities—retrieval, events, agents, and cost-controlled inference."}],["$","link","9",{"rel":"icon","href":"/favicon.ico?favicon.14ijnkx_7krtx.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","10",{"rel":"icon","href":"/icon.png"}],["$","link","11",{"rel":"apple-touch-icon","href":"/apple-icon.png"}],["$","$L29","12",{}]] 28:null