Projects · The framework, applied

Operations Blueprint

A free tool that turns the Manufacturing Intelligence Framework into a tailored, foundation-first plan for building a small manufacturer’s operations system. Answer ten questions, get a blueprint.

Most writing about operations software assumes a budget, a team, and clean data a small shop does not have. This is the opposite: a plan built around what you actually have. It applies the same method I document across this site, theManufacturing Intelligence Framework, to your situation, and hands back the order to build things in. It is the practical front end ofwhat I am working toward: making this kind of operational capability reachable for the small manufacturers who make up most of the sector.

Fifteen minutes with it looks like this:

  1. Answer the ten questions below; the plan rewrites itself as you go.
  2. Read it, copy it as Markdown, or download the tailored starter repo.
  3. Hand the export to a coding agent and build one slice at a time. Prefer to read before you answer anything? The open repo haspre-generated blueprints for four sample shops.

It runs entirely in your browser. Nothing you select is sent anywhere or stored.

Operations Blueprint · answer ten questions

Describe your shop and this generates a foundation-first plan for building its operations system: the data model, the process and SOPs, how to organize files and data, and the build action items, in the order that fits your priority. It is a starting blueprint, not a finished spec, and the numbers stay yours.

Your plan at a glance. It redraws as you change answers; hover a box to see what it is, click to jump to that part of the plan.

A foundation-first plan for a custom / made-to-order products operation. It rests on one idea: once you decompose your product into honest, relational data, the things above it (pricing, quoting, scheduling, sales) become outputs of that data rather than work you do by hand. The foundation and data sections are for you, the owner; the build, tooling, and integrator sections are for whoever implements it, whether that is you, a team member, or an AI agent you direct. Build it in the order below; each layer assumes the one before it is solid.

1. Foundation: the relational data model

Start here, because nothing above this layer holds if this layer is shaky. Your data already lives in spreadsheets. The job is to turn those columns into a related model, with one canonical row per thing referenced by id, so nothing is duplicated and everything can be joined.

Decompose your product to its atoms (every material, labor step, unit of time and overhead) and model it as related tables, not a pile of documents. Once the product is honest, joinable data, pricing, quoting, scheduling, and the customer-facing side all become functions of that data.

A schema to start from

TableKey fieldsRelationships
product_templatesid, name, params, base_pricehas many bom_lines; configured into product_variants
product_variantsid, template_id, option_valuesa resolved configuration that can be costed and quoted
materialsid, name, type, unit, cost_per_unit, vendor_idreferenced by bom_lines; belongs to a vendor
bom_linesid, product_ref, material_id, qty, unitbinds a product to the materials it consumes (the bill of materials)
labor_opsid, name, station, std_minutes, rate_per_hra product's routing references these to compute labor
stock_itemsid, material_id, sheet_w, sheet_h, length, costthe raw stock you cut parts from
cut_partsid, product_ref, part_name, w, h, qtyparts nested onto stock_items to compute yield
vendorsid, name, lead_time_days, termssupplies materials; drives purchasing
inventoryid, item_ref, on_hand, locationcurrent stock levels, decremented on consumption
clientsid, name, contact, termsowns projects and quotes
projectsid, client_id, status, created_at, due_datea job from quote through delivery
quotesid, project_id, version, total, statuspriced output of the engine; versioned
quote_linesid, quote_id, product_ref, qty, unit_pricethe line items, each priced by the engine
deliveriesid, project_id, scheduled_date, address, statusshipping / delivery scheduling
production_actualsid, project_id, material_used, time_usedwhat the floor actually consumed, compared back to the estimate

The spine runs materials → bom_lines → products → quote_lines → quotes → projects → clients. Cost rolls up the left side; sales roll down the right; production_actuals close the loop back onto your estimates so the system corrects itself over time.

Because your products are configured or custom, a quote line is not always a catalog item: it can be an assembly built for that job from its own materials and operations. Let a quote line reference either a defined product or a per-quote assembly, and price both the same way through the engine.

Decompose before you automate. Every table above earns its place by being referenced. If something is just a document nobody joins to, it is a file, not data, and it will quietly drift out of date.

2. Process, SOPs, and the feedback loop

Map what actually happens on the floor, workarounds included, not the idealized version. You cannot optimize a process you have not honestly described.

Operations and routing

Model each operation (cut, machine, assemble, finish, pack) as a labor_ops row with a station, a std_minutes, and a rate. A product's routing is its ordered list of operations, and labor cost is simply the sum of std_minutes times rate across that routing. Measure those times once, honestly; they are where estimates usually go wrong.

The feedback loop (what makes it intelligent)

For every job, capture production_actuals: material actually consumed and time actually taken. Compare to the estimate. That variance is the most valuable data you produce, because it tells you whether the gap was a pricing error, a process problem, or a stale standard time, and which one. Feed it back into labor_ops and the next quote.

  • Write one SOP per role and name the owner of each table. The rule: every record has exactly one source of truth and one person accountable for it.

Because you handle delivery or install, add a site SOP: a pre-site checklist, what gets verified on arrival, and a path for site changes to flow back into the project record instead of living in someone’s memory.

Watch the seams between phases, which is where most failures happen (a spec changes after a quote is sent). For each handoff, decide what data moves forward, how you verify it arrived, and what happens when an upstream value changes after the fact.

3. Files, data, and the shape of the system

Everything resolves to one source of truth. A relational database (Postgres) is the core. A small backend service (an API) is the only thing that writes to it, so every surface (internal tools, a customer view, reports) goes through the same logic and cannot drift. Documents (drawings, PDFs) live in a file or object store, referenced by id from the database, never treated as the source of truth themselves.

  • One shared Postgres instance, the API in front of it, and a shared document area (a file server or a Google Drive) referenced by id from the database so nothing important lives in two places. Access by role.

Keep a predictable repository layout, one area per domain (products, materials, projects, quotes, docs), and give each folder a short context file describing what it is and its conventions, so any teammate or AI coding agent is immediately productive there instead of starting cold.

4. Build action items, ordered for your priority (accurate quoting)

Build incrementally, one deployable piece at a time, so the system keeps working for the people who use it while you are still changing it. Each item below names the tables and logic it needs and assumes the ones above it exist.

  1. Product-and-cost engine (build this first; everything depends on it). Tables: the product/template/spec, bom_lines, materials, labor_ops. Build a cost(product_ref, options) service that joins the product to its bom_lines (sum of material.cost_per_unit times qty) and to its routing (sum of labor_ops.std_minutes / 60 times rate_per_hr), then adds overhead and margin and writes an audit row on every price change. Every other surface calls this one function; nothing prices on its own. Decide once where overhead lives (inside a loaded labor rate or as its own line, never both) so it cannot be double-counted, and when a line cannot be priced (a material with no cost, an operation the model does not know) surface it rather than dropping it silently.
  2. Backfill from what you already have. Import your current spreadsheets into the schema in one pass: map each sheet to its table, normalize units and keys (ft vs foot, ea vs each) and dedupe, and keep anything that does not map cleanly in a notes column so nothing is lost. This is usually where the real mess surfaces; fix it in the data once, here.
  3. Cut and nesting optimizer. Input: cut_parts and stock_items. Logic: a bin-packing pass (for example MaxRects) that nests parts onto stock and returns yield, fed back into material cost so batch pricing reflects real offcut waste.
  4. Quote builder. Tables: quotes, quote_lines (versioned). Endpoint POST /quotes that calls the engine per line for unit_price (applying a dealer tier discount where relevant), persists the lines, totals the quote, and returns it; GET /quotes/:id/pdf renders it. Internal and customer-facing quoting both go through the one engine, so they cannot disagree.
  5. True-cost model. Derive each station rate_per_hr from (labor + overhead + machine cost) over available hours instead of typing it, and snapshot the computed cost onto the project when work completes, so historical cost does not move when current rates change. The engine reads the derived rate.
  6. Production capture and variance. Table: production_actuals. Capture material_used and time_used per job (import from the floor or enter), then a variance view that joins actuals to the estimate by operation and station (time_used vs std_minutes, material_used vs bom qty) and feeds corrections back into labor_ops.
  7. Catalog and document generation. A generator that reads products and materials at request time and renders the catalog and spec docs (GET /catalog, plus per-product spec sheets). Keep curated fields (descriptions) in their own columns so regeneration never overwrites them, and stamp provenance (source, as_of) on each derived field.
  8. Inventory tracking. Tables: inventory, vendors. Decrement stock on consumption so quoting and purchasing read real on-hand levels, not a guess.
  9. Delivery scheduling. Table: deliveries. A simple calendar and status flow tied to the project record.

What to log, at field level

In order: materials (cost_per_unit, unit), labor_ops (std_minutes, rate_per_hr), the bom_lines that bind them to products, then quote_lines and quotes, then production_actuals (material_used, time_used). Each layer is only as trustworthy as the one beneath it.

5. Tooling: a self-hostable stack

A stack a small shop can actually run, open and free to start. You do not need all of it on day one; add pieces as the layers above demand them.

  • Postgres: the relational core and single source of truth.
  • A backend service (Python/FastAPI or Node) as the only writer to the database, so every surface shares one set of logic.
  • Docker: run every piece the same way on any machine, dev or production.
  • A queue and cache (Redis) once you have background work like document generation or imports.
  • A vector store (Qdrant) when you add the knowledge layer: semantic search over SOPs and specs.
  • n8n: low-code automation for the glue (scheduled jobs, notifications, syncs).
  • nginx: a reverse proxy in front of the API and any UI.

Hosting and access

For internal-only use, one small server is enough. When people need it off-site (a quote at a client, a status check on a phone), put the API behind Cloudflare (a tunnel plus access control) and a domain, so you expose it safely without opening your network.

Build it with an agent

This plan is written to double as context for an AI coding agent. Hand it the blueprint plus a per-folder context file, and build one deployable piece at a time, reading every change before it lands. The hard part is not writing the code; it is keeping the system correct while real people depend on it.

6. The AI integrator: building and operating it

Someone has to turn this data into running systems, and increasingly that someone is an "AI integrator": not necessarily a career developer, but a person who can structure data, build the systems and endpoints on top of it, and direct AI agents to do most of the building and the routine work. On a small team, one person should own this end to end. It need not be a career developer; it needs someone who can think in data and direct AI agents.

The job is three moves: structure the data (sections 1 to 3), build the systems on it (section 4), then put an agent on every repetitive step so the laborious parts run themselves while you keep the judgment.

Configure your agents

Work folder by folder. Give each part of the system (the engine, the quote service, the document generator, the knowledge base) its own directory with a short context file, its own memory of decisions made, and the skills it repeats, so a fresh agent dropped in is immediately useful. You can run several agents at once across folders; you are the orchestrator, and the work is only ever as coordinated as you make it.

Read and combine the data into answers

The tables are only worth building because of what you join them into. The patterns worth building first:

  • Pricing is a join, and that join is your quote engine: product to bom_lines to materials for material cost, product to routing to labor_ops for labor, plus overhead and margin. Build it once; everything prices through it.
  • A contract is not a new document, it is a locked, versioned snapshot of priced quote_lines plus terms, generated from the same engine, so the contract can never disagree with the quote it came from.
  • Time efficiency: group production_actuals by operation and station and compare time_used to std_minutes. The variance tells you which standard times are wrong and where the floor actually loses time.
  • Material and vendor allocation: aggregate bom_lines across materials and vendors to see spend by material and by vendor, lead-time exposure, and where consolidating purchasing pays off.
  • Margin and mix: roll cost and price up to product, client, and channel to see what actually makes money, not just what sells.
  • Material yield: from the nesting pass, track utilization per job and per material, so batch pricing reflects real offcut waste and you can see which products nest badly.

The documents and reports to generate (from data, not by hand)

DocumentWhenGenerated from
Quotation / estimateOn request, per projectquotes + quote_lines (engine)
ContractOn winlocked quote snapshot + terms
Spec sheetPer product / orderproduct/spec + materials
Work orderOn release to the floorprojects + routing
InvoiceOn delivery / milestoneproject + quote totals
Cut / nesting reportPer batchcut_parts nested on stock_items
Efficiency / time-study reportWeekly or per jobproduction_actuals vs labor_ops
Material and vendor reportMonthlybom_lines, materials, vendors
Delivery / install sheet + site checklistPer jobdeliveries
As-built / end-product recordOn completionproject + actuals + final spec
Customer requirements and conversation logOngoingclient + project notes
Reviews and feedbackAfter deliveryclient + project
Change ordersOn scope changeproject + new quote version

Put AI on each step (with guardrails)

Give an agent read-scoped access to the database and a retrieval layer (vector search over your SOPs, specs, and past projects) so it answers in your context, not generically. Then hand it the repetitive steps: drafting a quote from a stated requirement, generating the documents above, summarizing a customer conversation into structured requirements on the project, producing the reports, and recommending a material or process from what worked before. A human approves anything that goes out the door.

Automate the laborious, keep the judgment. The goal is not to replace people; it is to let a small team run an operation that used to need a big one, by handing every repetitive document, report, and lookup to an agent that works from your real data.

This is an early version, focused on custom manufacturing and production shops. Other kinds of operations are on the way. If it helped, or you want it to cover your case, I would genuinely like to hear it. The engine behind it is open source (MIT) onGitHub, where it also runs as a command-line tool, with tests, docs, and a gallery of pre-generated example blueprints.

Frequently asked questions

What is the Operations Blueprint?
A free tool that turns ten answers about a small manufacturer into a tailored, foundation-first plan for building its operations system: the data model, the process and SOPs, the build order, and a self-hostable tooling list. It applies the Manufacturing Intelligence Framework to your specific situation.
What do I actually get from it?
Two things: a written plan you can read or copy as Markdown, and a downloadable starter repo. The repo is a tailored project with a real Postgres schema, a backend skeleton where the cost engine and quote endpoint are stubbed, build notes, and a compose file. The plan is for you; the repo is for whoever builds it, including an AI coding agent.
Is it free, and do I need to sign up?
It is free, and there is no sign-up. It runs entirely in your browser, and nothing you enter is sent anywhere or stored.
Does it use AI, or send my data anywhere?
No. The engine is deterministic: the same answers always produce the same plan, with no LLM and no network calls. Any AI comes later, on your side, if you use a coding agent to build the system from the plan.
Do I need to be technical to use it?
Not to read the plan; it is written for an owner as much as for a builder. Actually building the system does take a developer or a capable AI coding agent, which is what the downloadable starter repo is designed to hand off to.
What kinds of manufacturers is it for?
Small custom and made-to-order shops: metal fabrication, furniture and millwork, cabinets, signage, and similar. It is not built for high-volume commodity production or for large enterprises that already run full systems.
How is this different from ERP or quoting software?
It is not software you buy and run; it is a plan and a scaffold for building your own, tailored to what you already have. ERP assumes clean data and staff to run it; this starts from the data work a small shop still needs to do, and gives you only the pieces you need.
What does the Operations Blueprint not do?
It does not run your data, and it is not finished software. It generates two things: a written plan and a starter repo for building your own system. There is no login, no customer portal, and nothing you enter is analyzed or stored. The working systems described in the writing on this site are separate, earlier work that the method came from; the blueprint is the starting point for building your own, not the system itself.
Is it open source?
Yes. The engine is MIT-licensed and public at github.com/DamianFKao/operations-blueprint, with a full worked example included.
Can an AI coding agent build the system from it?
Yes, that is the intent. The export includes an AGENTS.md and a TASKS.md written as instructions for a coding agent, along with the schema and stubbed code, so you can point an agent at it and build one piece at a time.
Is there a visual version of the plan?
Yes. A hand-drawn map sits above the written plan: the data spine, the modules your answers switch on, and the estimate-versus-actual feedback loop. It redraws as you change answers, and clicking any box jumps to that part of the text. The map also ships inside the starter repo export and appears for every sample shop in the repo gallery.
Can I run it locally or from the command line?
Yes. Clone the open-source repo and run npm install; the CLI takes the same ten answers as this page, as flags or as an answers.json file, and prints the plan as Markdown or writes the full starter repo to a folder.
Can I see example blueprints without answering the questions?
Yes. The repo has a blueprints folder with pre-generated plans and schemas for four invented shops, plus a full worked example that goes from messy spreadsheets to a small working system.
How do I contribute or report a problem?
Open an issue or a pull request on the GitHub repo. Everything in it is synthetic by design, so contributions should stay that way: invented shops, no real company data. If the tool got your shop wrong, that is exactly the feedback worth sending.

Changelog

v0.6

This is a living tool. Every change to how it works is logged here.

v0.6Jul 2, 2026

  • The plan now draws itself. A hand-drawn map sits above the text: the data spine from materials to clients, the modules your answers switch on, and the estimate-versus-actual feedback loop. It redraws as you change answers; hover a box for what it is, click to jump to that part of the plan.
  • The map travels with the plan: the starter repo export includes it as an SVG, Copy as Markdown embeds a Mermaid version that GitHub renders natively, and the repo gallery shows one per sample shop.
Earlier versions (5)

v0.5Jul 2, 2026

  • The engine now ships as a full standalone package in the open-source repo: a command-line tool, a test suite behind CI, proper docs, and two reusable agent skills grown out of the sample-shop run.
  • Added a gallery of pre-generated blueprints for four invented shops (a custom cabinet shop, a catalog furniture maker, a configurable sign shop, and a general job shop), so you can read full plans and schemas without answering anything.
  • Links inside exported plans are now absolute, so they work on GitHub and on your own disk, not just on this site.

v0.4Jun 30, 2026

  • Refined from a full test run on a sample shop: added a step for importing the spreadsheets you already have, so real data comes in first.
  • Clarified that configurable and custom shops quote by building up an assembly, not by picking a finished product off a catalog.
  • Tightened the cost engine guidance: apply overhead once, and surface any line it cannot price rather than dropping it silently.

v0.3Jun 30, 2026

  • Added a downloadable starter repo. The plan now exports as a tailored project you can hand straight to a coding agent: a real database schema, a backend skeleton with the cost engine and quote endpoint stubbed out, build notes, and a compose file, all zipped in your browser.
  • Reworked the data model so the schema you see on the page and the schema in the export come from one source and cannot drift.

v0.2Jun 29, 2026

  • Grew from six questions to ten (materials and stock, delivery and install, how you sell, and order pattern), so the plan fits more of how a shop actually runs.
  • Went deeper and more technical: a relational schema with fields and relationships, dependency-ordered build steps, and a self-hostable tooling section.
  • Added an "AI integrator" section (the role, configuring agents, and the documents and reports to generate) and a "Copy as Markdown" button.

v0.1Jun 29, 2026

  • First release. Answer a few questions about a small custom-manufacturing operation and get a tailored, foundation-first plan: the data model, the process and SOPs, and an ordered list of what to build.