Inventory management, reimagined for the AI age

Run your shop by asking

inventory.chat is full inventory and job costing for custom shops, built so that everything the screens can do, the chat can do too. Quote a job, log what came off the saw, reprice the book when steel moves — by saying it, or by clicking it. Same operations either way.

For cabinet shops, fab shops, sign shops and anyone else quoting one-off work. Founding accounts lock their price for life.

Walnut dining table, 84" Chat

Quote an 84 inch walnut table, 8/4 top, steel base, three coats of finish

Called 5 tools

  • find_material("walnut 8/4")
  • estimate_board_feet(length_in: 84, waste: 0.15)
  • add_component("steel base, powder coat")
  • apply_labor(bench: 18.5, finish: 4.0)
  • price_quote(margin: 0.32)

32 board feet, 22.5 shop hours. Materials $818, labor $1,423, overhead $405 → quoted at $3,888.

Every number here came from your costing engine. The model picked the tools and filled in the arguments — it never does the arithmetic.

One system, two ways in

Not a chatbot bolted onto an app

Most software with a chat window can answer questions about your data. This drives it. Both surfaces call the same registered tools, so anything you can do in the UI you can do by asking — and the reverse.

Traditional UI

Click through it like any app

Forms, tables, filters and reports. Everything has a screen, because some work is faster with your hands and some people simply prefer it.

Walnut dining table, 84" Quote
Walnut, 8/4 32 bd ft × $14.50 · 15% waste $533.60
Steel base 41 lb × $2.10 · powder coat $246.10
Hardware & fasteners Figure-8 clips, threaded inserts $38.00
Bench labor 18.5 hrs × $65 $1,202.50
Finishing 4.0 hrs × $55 · 3 coats $220.00
Shop overhead 22.5 hrs × $18 $405.00
Price at 32% margin $3,888

Walnut moves to $16.20/bd ft → this quote and every other one using it reprices to $4,077.

Chat

Or just say what you want

Put it the way you'd say it across the bench. Useful when you're on the floor with dirty hands and a form is the last thing you want to fill in.

  • "We burned three sheets of maple on the Henderson job"
  • "What's my margin on everything open right now?"
  • "Walnut went up 12% — what does that do to my quotes?"
  • "Reorder anything under two weeks of stock"
  • "Why is this job $400 more than the last one?"

Both surfaces call the same registered tools

find_material estimate_board_feet add_component apply_labor price_quote reprice_job adjust_stock list_affected_quotes

One registry, one permission model, one audit trail. A tool built for a screen is available to the chat the same day — and to any MCP client you point at your account.

Where the numbers come from

The model never does your arithmetic

This is the part that matters when it's your margin. The language model reads what you asked, picks which operations to run, and fills in the arguments. Your costing engine computes every figure.

Deterministic maths

Board feet, waste factors, labor and margin are calculated by the same engine that runs the UI. Ask the same question twice and you get the same number, because nothing about the price is generated.

It shows its working

Every reply lists the tools it called and the arguments it used. If it picked the wrong material or misread a quantity, you can see that immediately rather than discovering it in the total.

It asks before it writes

Reading is free. Anything that changes stock, pricing or a live quote is confirmed first, and lands in the same audit trail as a change made by hand — with a note that it came from chat.

What's underneath

A costing engine worth talking to

The chat is only as good as what it can operate. Underneath is a parts database you define and a formula engine built for made-to-order work.

Parts you define

Every shop's material list is different. Create the fields you actually track — species, gauge, alloy, finish, repeat — instead of forcing your stock into someone else's schema.

Units that convert

Buy by the sheet, consume by the square foot. Buy by the pound, quote by the part. Set the conversion once and stop doing it in your head.

Labor and overhead as real costs

Separate rates for cutting, assembly, finishing and install. Overhead applied the way your accountant actually wants it applied.

Formulas, not fixed markups

Write the pricing rule your shop already uses — waste factors, minimums, quantity breaks — and have it applied the same way on every quote.

Reprice when material moves

Change one cost and every affected job, quote and product updates, with a list of which customers it touches.

Quotes that show the work

Materials, labor and overhead broken out separately, so you can defend the number when someone pushes back on it.

Open by default

Bring your own AI

The same tool registry is exposed over MCP, so your shop's data isn't locked behind our chat window. Point Claude, or anything else that speaks the protocol, at your account and it can quote, look up stock and reprice jobs under exactly the permissions you granted.

Built on RubyLLM, so adding a tool is ordinary Ruby — and every tool added is immediately available to all three surfaces at once.

  • Standard MCP server, no bespoke integration
  • Scoped tokens — read-only, or read and write
  • Every call attributed and logged, same as the UI
  • Your data is never used to train a model

One registry, three surfaces

Your shop's tools
price_quote adjust_stock reprice_job find_material

Called by the web UI, by the built-in chat, and by any MCP client you authorise. Same validation, same permissions, same audit trail — whichever one made the call.

Early access

Get set up this week

Tell us what you make and we'll get your materials, rates and formulas in so you're quoting from real numbers rather than a spreadsheet.

  • Founding accounts lock their price for life
  • No card, no trial clock, no sales call
  • Import your existing parts list to start

No card required. Unsubscribe any time.

Questions

The ones worth asking

Can the AI make up a price?

No, because it never calculates one. The model decides which operations to run and what to pass them; the costing engine does the arithmetic and returns the figure. The same question always produces the same number, and every reply shows which tools ran and with what arguments.

What if I don't want to use the chat at all?

Then don't. Every function has a screen, and the app is complete without ever opening the chat window. It's a second way in, not a replacement for the interface.

Can it change things, or only look them up?

Both, but writes are confirmed before they happen and logged the same way a manual change would be, tagged as coming from chat. You can also issue read-only access to anyone who should be able to ask but not alter.

Is my costing data used to train a model?

No. Your parts, rates and quotes are yours. They are not used as training data, and they aren't shared with other accounts.

What's MCP and why should I care?

It's an open standard for letting AI assistants call an application's functions. Because we expose the same tools over it, you can drive your inventory from Claude or whatever you already use, instead of being stuck with our chat box. Scoped tokens mean you control exactly what it can do.

Do I have to fit my parts into your categories?

No. The parts database is defined per account — you create the attributes your trade cares about. That decision is the foundation of the product.

How long does setup take?

An afternoon for a small parts list, longer if you're importing years of material history. You can start with the handful of materials on your next job and add the rest as you quote — it's useful before it's complete.

Quote it, log it, reprice it — by asking

Founding pricing is locked for accounts opened during early access.

Founding accounts lock their price for life. No card required.