{"id":71,"date":"2026-07-26T18:51:59","date_gmt":"2026-07-26T18:51:59","guid":{"rendered":"https:\/\/www.dobryakov.net\/blog\/71\/"},"modified":"2026-07-26T18:55:53","modified_gmt":"2026-07-26T18:55:53","slug":"book-as-context","status":"publish","type":"post","link":"https:\/\/www.dobryakov.net\/blog\/71\/","title":{"rendered":"How to design professional software architecture with AI even if you don&#8217;t know the domain"},"content":{"rendered":"<p>Give the agent an authoritative book on the subject as a wiki in the repo \u2014 indexed and cross-linked, not a one-off file drop into the chat. Then even a short prompt designs in the source\u2019s terms: queues, delivery guarantees, idempotency, fault tolerance. Below: the book-as-context method, a shop\u2192ERP walkthrough, and the method\u2019s limits.<\/p>\n<p><!--more--><\/p>\n<p>A familiar scene. Someone \u2014 a founder, a product lead, sometimes even an engineer outside their usual zone \u2014 opens Claude or Cursor and types something like: \u201cmove orders from the online shop into the ERP.\u201d The ask sounds reasonable: orders appear on the site; accounting needs them. They skip the details not out of laziness, but because they do not know which details matter. \u201cERP is sometimes down,\u201d \u201corders must not be lost,\u201d \u201cduplicates are bad,\u201d \u201cCRM should get them too\u201d \u2014 all of that lives as common sense, not as requirements.<\/p>\n<p>The agent answers with confidence. A minute later you have a design: dump orders to CSV on a cron, push the file over FTP, \u201csomething on the other side will pick it up.\u201d The chat says \u201cdone.\u201d From the outside it looks like a solution. Inside it is textbook minimum: a night batch, a share, manual cleanup when ERP did not answer, and a magical \u201cjust send again\u201d when something vanishes.<\/p>\n<p>From here the story splits.<\/p>\n<p>Branch one: an engineer who has already built these paths is close enough to help. They look at FTP and see the bill \u2014 six hours of ERP downtime, stock drift, who owns redelivery, where the audit trail is. They go back into the chat and raise the brief: async, a queue, idempotency, a state journal, channel security. After a dozen clarifications the agent draws an adult design. The moral of this branch is familiar: \u201cAI works if you already know how to ask.\u201d<\/p>\n<p>Branch two: that experience is not nearby. Or a seasoned colleague is around and smirks: \u201csure, chat-driven amateurs can ship a three-page site \u2014 never real architecture.\u201d For them CSV-over-FTP is not a method bug; it is proof the model \u201ccan\u2019t do architecture.\u201d They are right about one thing: an empty prompt does not yield industrial grade. They are wrong about another: the model is not \u201cdumb.\u201d<\/p>\n<p>The root is what the model was trained on. Open internet has orders of magnitude more tutorials about \u201cexport CSV and drop it on FTP\u201d than production write-ups with a broker, an outbox, and retry semantics. The average temperature of the sample is textbooks and Stack Overflow, not a write-up from a real corporate integration. Without a domain base the agent does not know that the sane answer here is event-driven: an order is not \u201ca file left\u201d; it is an event that survives ERP downtime, does not duplicate on retry, and leaves a trail you can use in an incident review.<\/p>\n<p>So the question is not whether AI \u201ccan do architecture.\u201d The question is where it takes its bar from when you cannot state that bar yourself. If the domain is yours \u2014 you are the bar, and a long dialogue saves you. If it is not \u2014 you need an external carrier of expertise for the design phase. Not one more paragraph in the prompt (\u201cmake it reliable and production-ready\u201d), but a substrate the agent must read as a tech lead\u2019s handbook.<\/p>\n<h2>The method: book-as-context<\/h2>\n<p><strong>Book-as-context<\/strong> means giving the agent an authoritative primary source (a book, a spec) as a structured context substrate: a wiki of concepts, cross-links, and traceability back to book chunks. It lives in the project; the agent walks it like a tech lead\u2019s handbook \u2014 without hoping a single system-prompt line or raw PDF search will hold the architectural bar.<\/p>\n<p>It is a concrete case of what people now call <strong>context engineering<\/strong>: the model works from a corpus assembled for the task, not from \u201cwhatever it remembers.\u201d Nearby names in the community are other packagings of the same idea. <a href=\"https:\/\/gist.github.com\/karpathy\/442a6bf555914893e9891c11519de94f\">LLM Wiki<\/a> (Karpathy) \u2014 compile sources into linked markdown pages instead of pulling raw chunks from RAG on every ask. <strong>Book-to-skill<\/strong> (and \u201cturn a book into a Claude skill\u201d) \u2014 compress a book into a Claude Code \/ Copilot skill: <code>SKILL.md<\/code>, chapters, checklists the agent can load on demand. Delivery differs: a skill lives in the assistant\u2019s skills folder; book-as-context puts the wiki <strong>in the project repo<\/strong>, so plans, specs, and code share one substrate. The point is the same \u2014 the book becomes working context, not a one-shot chat summary.<\/p>\n<p>For distributed systems, high load, and eventing I used Tanenbaum\u2019s <em>Distributed Systems: Principles and Paradigms<\/em>. In that zone it plays the role Kotler plays for marketers: hard engineering, not a blog paraphrase.<\/p>\n<p>The cutting pipeline is <a href=\"https:\/\/github.com\/dobryakov\/obsidian-llm-wiki-local\">obsidian-llm-wiki<\/a> (olw, a fork in the LLM Wiki vein): a fast model for ingest (concepts from a chunk), a heavy model for compile (concept pages). On the Tanenbaum run: <strong>30<\/strong> source chunks \u2192 <strong>116<\/strong> concept pages. A full run is about <strong>$1.5<\/strong> via OpenRouter. \u201cRun once and ship\u201d does not work: three runs produced 16 + 14 + 23 notes \u2014 chunk and model parameters need iteration.<\/p>\n<p>The wiki sits in the repository (or a symlink). The agent does not load the whole book into the window: it walks the index and pulls the nodes it needs \u2014 via Cursor\u2019s built-in indexing or a hybrid-search MCP. From there, plans, API contracts, infrastructure, and vibe-coding lean on the book\u2019s concepts and methods. The bar holds from a single prompt: you do not have to append \u201cadd eventing, async, contracts, and fifty more requirements\u201d every time.<\/p>\n<h2>One prompt, two worlds<\/h2>\n<p>Same class of problem. Two outcomes.<\/p>\n<p><strong>Without a substrate:<\/strong><\/p>\n<blockquote>\n<p>\u201cMove orders from the online shop into the ERP\u201d<\/p>\n<\/blockquote>\n<p>\u2192 CSV, cron, FTP, \u201cdone.\u201d<\/p>\n<p><strong>With a Tanenbaum wiki<\/strong> \u2014 a real brief: <strong>1C-Bitrix \u2192 ERP Galaktika \u2192 CRM Creatio<\/strong>. The agent does not rush straight into writing code, and it does not stop at a list of smart words. It walks the book\u2019s concept graph first \u2014 from a business risk to the author\u2019s term, from the term to a pattern:<\/p>\n<pre><code>\u201cERP may be down for hours; orders must not be lost\u201d\n  \u2192 message-oriented middleware:\n    persistent communication \u2014 the queue keeps the message until delivery\n    vs transient \u2014 the receiver must accept now\n  \u2192 message queue systems \u2014 guarantees, journal, balancing\n  \u2192 AMQP: unsettled \u2192 settled \u2192 forgotten\n  \u2192 two-phase commit \u2014 when two databases must update atomically<\/code><\/pre>\n<p>Those formulations do not stop as a smart paragraph in the thread. They get worked through on two layers. In the <strong>brief<\/strong> \u2014 spec sections, SLOs, transport priority, partial-success rules, a \u201cwiki principle \u2192 section number\u201d map. In the <strong>implementation<\/strong> \u2014 the same decisions become concrete mechanisms: a transactional outbox next to the order, a persistent broker, ERP\/CRM adapters, idempotency keys on retries, a DLQ, an end-to-end state journal. Without a wiki the agent says \u201cqueue\u201d and draws FTP; with a wiki the book\u2019s queue has to survive into the design and into the code.<\/p>\n<table>\n<thead>\n<tr>\n<th>Question<\/th>\n<th>Without wiki<\/th>\n<th>With wiki<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Sync model<\/td>\n<td>REST \u201csent \u2014 done\u201d<\/td>\n<td>DB outbox \u2192 broker \u2192 adapters<\/td>\n<\/tr>\n<tr>\n<td>ERP offline<\/td>\n<td>\u201cresend tomorrow by hand\u201d<\/td>\n<td>queue buffers; shop keeps working<\/td>\n<\/tr>\n<tr>\n<td>Loss \/ duplicate<\/td>\n<td>\u201cjust send again\u201d<\/td>\n<td>idempotency key, at-least-once, DLQ<\/td>\n<\/tr>\n<tr>\n<td>Path to ERP<\/td>\n<td>FTP as the main path<\/td>\n<td>bus\/queue \u2192 REST\/SOAP \u2192 file as fallback only<\/td>\n<\/tr>\n<tr>\n<td>ERP + CRM<\/td>\n<td>best effort<\/td>\n<td>state journal, partial success, eventual consistency<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Spec excerpt: outbox, broker, adapters<\/h3>\n<p>Event source \u2014 Bitrix after order commit. The event is written first into the same database as the order (<strong>transactional outbox<\/strong>: record the fact, then promise delivery), mapped to a <strong>canonical model<\/strong>, and lands in a <strong>persistent broker<\/strong>. Adapters deliver asynchronously to ERP and CRM; end-to-end state lives in an <strong>integration journal<\/strong>. Retries use <strong>idempotency<\/strong> (a retry must not create a second order), backoff, and a <strong>DLQ<\/strong> (dead-letter queue for poisoned messages); per-order change order follows <strong>causal ordering<\/strong>.<\/p>\n<pre><code>[Shop 1C-Bitrix] --(Outbox)--&gt; [Integration service]\n                                      |\n                    canonicalize, validate, enrich master data\n                                      |\n                         [Broker (persistent queues)]\n                         \/                              \n            [ERP Galaktika adapter]          [CRM Creatio adapter]\n                                                       \/\n                          `--&gt; [State journal] &lt;--&#x27;<\/code><\/pre>\n<p>Transport priority to ERP: (1) corporate bus \/ queue manager, (2) HTTPS REST or SOAP, (3) file exchange \u2014 emergency or batch only.<\/p>\n<p>And it is not only boxes on a diagram. In the same pass the agent pulled non-functionals using the book\u2019s criteria:<\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>In the spec<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RPO (how much data you may lose) for broker\/outbox events<\/td>\n<td><strong>0<\/strong> \u2014 loss not allowed<\/td>\n<\/tr>\n<tr>\n<td>RTO (how fast processing must come back)<\/td>\n<td><strong>\u2264 1 h<\/strong> normal, <strong>\u2264 4 h<\/strong> degraded<\/td>\n<\/tr>\n<tr>\n<td>End-to-end ERP + CRM<\/td>\n<td><strong>P95 \u2264 5 min<\/strong>, <strong>P99 \u2264 15 min<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Integration availability<\/td>\n<td><strong>\u2265 99.9%<\/strong> \/ month<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Partial ERP + CRM success is handled as <strong>eventual consistency<\/strong> without automatic 2PC: a successful write to a target is not auto-rolled back; if ERP accepted and CRM is down \u2014 retry CRM with the same idempotency key; if CRM exhausts retries \u2014 partial success, DLQ, alert. While ERP is down \u2014 do not call CRM.<\/p>\n<p>Channel security is not \u201clater\u201d: TLS 1.2+, mTLS between components, shop webhooks with HMAC\/JWS and replay protection, rate limits, queue overflow \u2192 DLQ.<\/p>\n<p>The spec appendix has an explicit <strong>wiki \u2192 document section<\/strong> map: guaranteed delivery and persistence \u2192 SLO and topology; failure models \u2192 resilience; retry\/idempotency \u2192 retry semantics; fallacies of distributed computing (\u201cthe network is reliable\u201d, \u201clatency is zero\u201d) \u2014 listed as forbidden assumptions. The brief-writer may not have held that expertise in the moment. The primary source carried it.<\/p>\n<h2>\u201cI don\u2019t know the domain\u201d does not mean \u201cI don\u2019t review the result\u201d<\/h2>\n<p>Book-as-context does not turn you into Tanenbaum. It stops the agent from offering textbook minimums while you are still learning to write production-grade requirements.<\/p>\n<p>You still have to go through what the agent produced \u2014 the way you read a strong architect\u2019s brief: argue decisions, cut scope, accept trade-offs. The starting point changes. Without a wiki you argue with FTP. With a wiki you argue outbox vs 2PC, RPO and DLQ. That is a different conversation, even if yesterday you could not tell persistent communication from \u201cdrop a file on a share.\u201d<\/p>\n<p>Second skill, or the substrate softens: query the wiki in the <strong>author\u2019s terms<\/strong>, not the task\u2019s slang.<\/p>\n<table>\n<thead>\n<tr>\n<th>Weak query<\/th>\n<th>Strong query<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u201cfind something about Kafka\u201d<\/td>\n<td><strong>reliable multicast<\/strong> + <strong>FIFO ordering<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\u201chow to sync orders\u201d<\/td>\n<td><strong>persistent vs transient communication<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\u201cdelivery guarantees\u201d<\/td>\n<td>AMQP: unsettled \u2192 settled \u2192 forgotten<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Wiki + retrieval without that layer is blind RAG: chunks are fine, hits miss. More on search in the <a href=\"https:\/\/www.dobryakov.net\/howto\/hybrid-search.html\">hybrid-search howto<\/a>.<\/p>\n<h2>How to build it locally<\/h2>\n<ol>\n<li><strong>Pick the book for the phase.<\/strong> Integration architecture \u2014 Tanenbaum (or your domain\u2019s equivalent). Implementation \u2014 <em>Clean Code<\/em>. Review \u2014 Fowler. QA \u2014 a domain QA text. A weak source multiplies weakness into every agent answer.<\/li>\n<li><strong>Cut into a wiki.<\/strong> <code>olw init<\/code> \u2192 chunks in <code>raw\/<\/code> \u2192 <code>olw run<\/code>. Output: sources + concept pages with wikilinks and chunk traceability.<\/li>\n<li><strong>Drop it into the project.<\/strong> Wiki directory in the repo or a symlink. The agent must see the index.<\/li>\n<li><strong>Query in the author\u2019s terms.<\/strong> Business need \u2192 pattern from the book \u2192 implementation (Kafka or Rabbit is already a local tool choice).<\/li>\n<li><strong>Verify drafts before you cite them.<\/strong> olw may mark <code>confidence: 0.35<\/code> and <code>single-source<\/code> \u2014 re-check before you take a wording into an architecture review.<\/li>\n<\/ol>\n<p>Vault anatomy and run parameters are in the howto: <a href=\"https:\/\/www.dobryakov.net\/howto\/book-as-context.html\">Book-as-context<\/a>.<\/p>\n<h2>Limits of the method<\/h2>\n<ul>\n<li><strong>Parameters decide wiki quality.<\/strong> Early runs often produce fragments or walls of text \u2014 tune chunks, models, and run count until the pages stop falling apart.<\/li>\n<li><strong>Coverage is partial.<\/strong> One run had 30 chunks and 116 concepts; a question outside that grid sends the agent back to the internet\u2019s average temperature.<\/li>\n<li><strong>A weak primary source multiplies weakness.<\/strong> A blogger compilation without failure models yields the same \u201caverage\u201d architecture, only more confidently.<\/li>\n<li><strong>Task-language queries miss.<\/strong> While the agent searches \u201cabout Kafka\u201d instead of delivery ordering and retry semantics, it pulls tutorials again.<\/li>\n<li><strong>The substrate does not remove ownership.<\/strong> Drafts get more adult, but shipping to production is still your call: scope, money, risk, stakeholder politics.<\/li>\n<\/ul>\n<h2>Who it is for<\/h2>\n<p>Founders, product and delivery leads who already see that \u201cbuild me a system\u201d fails, and engineers who want to type less while landing closer to industrial designs. The method travels: a wiki is text; copy or symlink it across projects. The bottleneck is picking the primary source; \u201cyou\u2019re smart, invent it\u201d does not stand in for one.<\/p>\n<h2>Bottom line<\/h2>\n<p>AI \u201ccan\u2019t do architecture\u201d while you feed it an empty prompt and wait for a miracle from the internet\u2019s average. Put a book underneath \u2014 and the argument moves to outbox, RPO, and DLQ.<\/p>\n<p>Some programmers leave this alone on purpose: they fear for their jobs. Call it gatekeeper syndrome \u2014 the value feels like keeping the wrong people out of architecture, not like making the system better. It is easier to keep saying \u201cAI can\u2019t do architecture\u201d than to admit that book-as-context, LLM Wiki, book-to-skill, and nearby mechanisms already raise the bar on both the brief and the build. People who actually want an industrial system pick up those tools. People who guard the pass to \u201cthe hard stuff\u201d leave the agent on CSV and FTP \u2014 and call that proof.<\/p>\n<p>Repo: <a href=\"https:\/\/github.com\/dobryakov\/obsidian-llm-wiki-local\">github.com\/dobryakov\/obsidian-llm-wiki-local<\/a><\/p>\n<p>Howto: <a href=\"https:\/\/www.dobryakov.net\/howto\/book-as-context.html\">dobryakov.net\/howto\/book-as-context.html<\/a><\/p>\n<p>Retrieval layer: <a href=\"https:\/\/www.dobryakov.net\/howto\/hybrid-search.html\">dobryakov.net\/howto\/hybrid-search.html<\/a><\/p>\n<p><!-- ilj-pilot-related --><\/p>\n<p>Related: <a href=\"https:\/\/www.dobryakov.net\/blog\/65\/\">skill onboarding<\/a> for assistant behavior packs, and agent security when a <a href=\"https:\/\/www.dobryakov.net\/blog\/63\/\">system prompt<\/a> is not a control.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Without a domain substrate, an agent ships FTP and CSV and calls it done. Book-as-context puts a book into the project as a wiki \u2014 next to LLM Wiki and book-to-skill \u2014 so a short prompt yields outbox, queues, idempotency, and fault tolerance.<\/p>\n","protected":false},"author":0,"featured_media":70,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,41],"tags":[42,43,45,47,29,44,46,48,49],"class_list":["post-71","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-engineering","category-architecture","tag-book-as-context","tag-book-to-skill","tag-context-engineering","tag-distributed-systems","tag-enterprise","tag-llm-wiki","tag-rag","tag-tanenbaum","tag-vibe-coding"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.dobryakov.net\/blog\/71\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Grigoriy Dobryakov - IT+AI Blog - Grigoriy Dobryakov&#039;s blog: management, development and testing\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How to design professional software architecture with AI even if you don&#039;t know the domain\" \/>\n\t\t<meta property=\"og:description\" content=\"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.dobryakov.net\/blog\/71\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-26T18:51:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-26T18:55:53+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How to design professional software architecture with AI even if you don&#039;t know the domain\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#blogposting\",\"name\":\"How to design professional software architecture with AI even if you don't know the domain\",\"headline\":\"How to design professional software architecture with AI even if you don&#8217;t know the domain\",\"author\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/author\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/book-as-context.jpg\",\"width\":1200,\"height\":630,\"caption\":\"How to design professional software architecture with AI even if you don't know the domain\"},\"datePublished\":\"2026-07-26T18:51:59+00:00\",\"dateModified\":\"2026-07-26T18:55:53+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#webpage\"},\"articleSection\":\"AI Engineering, Architecture, book-as-context, book-to-skill, context engineering, distributed systems, enterprise, LLM Wiki, RAG, Tanenbaum, vibe-coding\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-engineering\\\/#listItem\",\"name\":\"AI Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-engineering\\\/#listItem\",\"position\":2,\"name\":\"AI Engineering\",\"item\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-engineering\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#listItem\",\"name\":\"How to design professional software architecture with AI even if you don&#8217;t know the domain\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#listItem\",\"position\":3,\"name\":\"How to design professional software architecture with AI even if you don&#8217;t know the domain\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-engineering\\\/#listItem\",\"name\":\"AI Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#organization\",\"name\":\"Grigoriy Dobryakov - IT+AI Blog\",\"description\":\"Grigoriy Dobryakov's blog: management, development and testing\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#webpage\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/\",\"name\":\"How to design professional software architecture with AI even if you don't know the domain\",\"description\":\"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\\u2192ERP example \\u2014 outbox and queues without deep domain expertise.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/author\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/author\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/book-as-context.jpg\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#mainImage\",\"width\":1200,\"height\":630,\"caption\":\"How to design professional software architecture with AI even if you don't know the domain\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/71\\\/#mainImage\"},\"datePublished\":\"2026-07-26T18:51:59+00:00\",\"dateModified\":\"2026-07-26T18:55:53+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/\",\"name\":\"Grigoriy Dobryakov - IT+AI Blog\",\"description\":\"Grigoriy Dobryakov's blog: management, development and testing\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How to design professional software architecture with AI even if you don't know the domain","description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.","canonical_url":"https:\/\/www.dobryakov.net\/blog\/71\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.dobryakov.net\/blog\/71\/#blogposting","name":"How to design professional software architecture with AI even if you don't know the domain","headline":"How to design professional software architecture with AI even if you don&#8217;t know the domain","author":{"@id":"https:\/\/www.dobryakov.net\/blog\/author\/#author"},"publisher":{"@id":"https:\/\/www.dobryakov.net\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.dobryakov.net\/blog\/wp-content\/uploads\/2026\/07\/book-as-context.jpg","width":1200,"height":630,"caption":"How to design professional software architecture with AI even if you don't know the domain"},"datePublished":"2026-07-26T18:51:59+00:00","dateModified":"2026-07-26T18:55:53+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.dobryakov.net\/blog\/71\/#webpage"},"isPartOf":{"@id":"https:\/\/www.dobryakov.net\/blog\/71\/#webpage"},"articleSection":"AI Engineering, Architecture, book-as-context, book-to-skill, context engineering, distributed systems, enterprise, LLM Wiki, RAG, Tanenbaum, vibe-coding"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dobryakov.net\/blog\/71\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.dobryakov.net\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/category\/ai-engineering\/#listItem","name":"AI Engineering"}},{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/category\/ai-engineering\/#listItem","position":2,"name":"AI Engineering","item":"https:\/\/www.dobryakov.net\/blog\/category\/ai-engineering\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/71\/#listItem","name":"How to design professional software architecture with AI even if you don&#8217;t know the domain"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/71\/#listItem","position":3,"name":"How to design professional software architecture with AI even if you don&#8217;t know the domain","previousItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/category\/ai-engineering\/#listItem","name":"AI Engineering"}}]},{"@type":"Organization","@id":"https:\/\/www.dobryakov.net\/blog\/#organization","name":"Grigoriy Dobryakov - IT+AI Blog","description":"Grigoriy Dobryakov's blog: management, development and testing","url":"https:\/\/www.dobryakov.net\/blog\/"},{"@type":"WebPage","@id":"https:\/\/www.dobryakov.net\/blog\/71\/#webpage","url":"https:\/\/www.dobryakov.net\/blog\/71\/","name":"How to design professional software architecture with AI even if you don't know the domain","description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.dobryakov.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.dobryakov.net\/blog\/71\/#breadcrumblist"},"author":{"@id":"https:\/\/www.dobryakov.net\/blog\/author\/#author"},"creator":{"@id":"https:\/\/www.dobryakov.net\/blog\/author\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.dobryakov.net\/blog\/wp-content\/uploads\/2026\/07\/book-as-context.jpg","@id":"https:\/\/www.dobryakov.net\/blog\/71\/#mainImage","width":1200,"height":630,"caption":"How to design professional software architecture with AI even if you don't know the domain"},"primaryImageOfPage":{"@id":"https:\/\/www.dobryakov.net\/blog\/71\/#mainImage"},"datePublished":"2026-07-26T18:51:59+00:00","dateModified":"2026-07-26T18:55:53+00:00"},{"@type":"WebSite","@id":"https:\/\/www.dobryakov.net\/blog\/#website","url":"https:\/\/www.dobryakov.net\/blog\/","name":"Grigoriy Dobryakov - IT+AI Blog","description":"Grigoriy Dobryakov's blog: management, development and testing","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.dobryakov.net\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Grigoriy Dobryakov - IT+AI Blog - Grigoriy Dobryakov's blog: management, development and testing","og:type":"article","og:title":"How to design professional software architecture with AI even if you don't know the domain","og:description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.","og:url":"https:\/\/www.dobryakov.net\/blog\/71\/","article:published_time":"2026-07-26T18:51:59+00:00","article:modified_time":"2026-07-26T18:55:53+00:00","twitter:card":"summary_large_image","twitter:title":"How to design professional software architecture with AI even if you don't know the domain","twitter:description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise."},"aioseo_meta_data":{"post_id":"71","title":"How to design professional software architecture with AI even if you don't know the domain","description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.","keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":"How to design professional software architecture with AI even if you don't know the domain","og_description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.","og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":"How to design professional software architecture with AI even if you don't know the domain","twitter_description":"Book-as-context: production architecture with AI via a book wiki (LLM Wiki, book-to-skill). Shop\u2192ERP example \u2014 outbox and queues without deep domain expertise.","schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-07-26 18:52:26","updated":"2026-07-26 19:01:07"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.dobryakov.net\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.dobryakov.net\/blog\/category\/ai-engineering\/\" title=\"AI Engineering\">AI Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow to design professional software architecture with AI even if you don\u2019t know the domain\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.dobryakov.net\/blog"},{"label":"AI Engineering","link":"https:\/\/www.dobryakov.net\/blog\/category\/ai-engineering\/"},{"label":"How to design professional software architecture with AI even if you don&#8217;t know the domain","link":"https:\/\/www.dobryakov.net\/blog\/71\/"}],"_links":{"self":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":1,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":72,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions\/72"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/media\/70"}],"wp:attachment":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}