{{ envBadge }}
The shop could not be opened
{{ loadErrMsg }}
Nothing has been changed or saved. Reload to try again; if it keeps happening, send the red line from the browser console to support, or restore a backup from Admin → Backup & restore once the shop opens.
Click the feature you're reporting — Esc cancels
A new version is ready — this screen updates itself once it has been idle for a minute
Read-only — another tab is writing
⌘K
Where everyone is
{{ presStaleMsg }}
{{ presEmptyMsg }}
{{ pg.label }} {{ pg.idle }} {{ pv.init }}
{{ pf.init }} {{ pf.name }} · {{ pf.wc }} {{ pf.what }} {{ pf.state }} {{ pf.state }}
Role: {{ roleLabel }}
{{ omTitle }}
{{ storeWarnMsg }}
{{ loadingMsg }}
It is taking longer than usual. Nothing has been saved or changed.

CAM · Fiber laser

Mitsubishi GX-F80 · parts come from items with a laser op
{{ camNote }}
Loading cut files…

Stores

{{ soHead }}
{{ t.k }}
{{ t.v }}{{ t.sub }}
Waiting · {{ soWaitN }}
STOPPED {{ r.item }} {{ r.qty }} via Arthur bin top-up {{ r.expect }} {{ r.age }}
{{ r.who }}· {{ r.pick }} {{ r.drop }} {{ r.no }}
In hand
{{ h.item }}{{ h.qty }}{{ h.runner }} has it · {{ h.since }}
{{ h.drop }}{{ h.no }}
{{ soEmptyTitle }} {{ soEmptySub }}
Where it is going
live
{{ zl.code }}
pick drop stopped
{{ soPlanNote }}
On shift
{{ sh.init }} {{ sh.name }}Stores Runner {{ sh.hand }} in hand
{{ soShiftNote }}
No deliveries yet — the log fills as the runner works.
SDItemQtyForRunnerLegsTotalState
{{ d.no }} {{ d.item }} {{ d.qty }} {{ d.who }} {{ d.runner }} {{ d.legTxt }} {{ d.tot }} {{ d.state }}
Median response, by department
{{ dt.name }} {{ dt.v }}
Request to delivered. This is the figure the operator's card quotes as "usually".
Stopped requests
{{ soStoppedMed }} minmedian · {{ soStoppedSub }}
An operator who has downed tools waits this long. It is the number worth driving down — the rest is convenience.
{{ cs.k }}
{{ cs.v }}{{ cs.sub }}
No count tasks yet — the engine drops them into the runner's quiet time.
Count tasks
CCBinItemsStateVariance
{{ ct.no }} {{ ct.bin }} {{ ct.items }} {{ ct.state }} {{ ct.v }}
Consignment
No vendor owns stock on your shelf yet. Add an agreement — one item and one sheet size at a time — and the vendor appears here with its folders.
Everything under a vendor belongs to that vendor: the stock they own, the counts we take, the statements we send, and the paper between us. Cadences are in working days.
New agreement — one item, one size
{{ csVendor }}{{ csFolderName }}
{{ csVendor }} {{ csVContact }} {{ csVTerms }}
{{ t.k }}{{ t.v }}{{ t.sub }}
Needs attention
Recent Nothing yet — usage, counts, orders and statements land here.
{{ r.when }}{{ r.t }}{{ r.by }}
{{ csVendor }}'s stock on our shelves — one line per item and sheet size. We use it freely; the vendor bills what the statement shows used. A size under its agreed minimum gets a $0 restock order.
Item · sizeOn shelfPlacedUsed · unbilledRestock <Last · next count
{{ ag.size }}{{ ag.id }} {{ ag.onHand }}{{ ag.placed }}{{ ag.used }}{{ ag.min }}{{ ag.last }} · {{ ag.next }}
Edit {{ ag.id }}{{ csEdWhat }}
{{ csEdScopeQ }}
Earlier changes
{{ lg.when }}{{ lg.t }}
{{ csEdErr }}
The vendor, item and size stay as they are — to change those, end this agreement and open a new one. Issued statements never change.
Every {{ csCadence }} working days by agreement. Count now pins the bins on the runner's board; Count here lets the office post the same blind count in place. Every difference on vendor stock is held until someone approves it.
On the runner's board
{{ ot.id }}{{ ot.line }}{{ ot.state }}
Count · {{ csVendor }}blind — the book figure shows once you have typed yours
{{ cr.number }} {{ cr.size }}{{ cr.where }} {{ cr.delta }} {{ cr.unit }}
Held differences
{{ cv.id }}{{ cv.line }}{{ cv.delta }}{{ cv.when }}
Count history No count on record for this vendor's stock.
{{ h.when }}{{ h.t }}{{ h.by }}
Current period · draft{{ csStPeriod }}
ItemOpeningUsedCountedClosingOwed
{{ sr.number }} {{ sr.size }}{{ sr.byJob }}{{ sr.opening }}{{ sr.used }}{{ sr.counted }}{{ sr.closing }}{{ sr.owed }}
Owed to {{ csVendor }}: {{ csStOwed }}
Issued No statement issued yet.
{{ h.id }}{{ h.line }}{{ h.owed }}
Restock orders to {{ csVendor }} — always $0, always marked CONSIGNED. Receiving one books the stock and grows the agreement; nothing is payable. No restock orders yet. The Stock folder raises one when a size falls under its agreed minimum.
{{ o.st }}{{ o.line }}{{ o.when }}$0.00
The paper between us: the signed agreement, price schedules, certs that came with the stock, correspondence. Files stay with the vendor.
{{ d.sub }}
A read-only page for {{ csVendor }}: their stock on our shelf, what we have used since the last statement, our counts, and every statement with its PDF. Live, keyed by a link only they hold.
Their link {{ csPortalUrl }}

Prototypes

{{ ppDigest }}
Nothing is being prototyped.
Open a STEP in the CAD engine and press Start prototype — every step arrives here with its gate closed.
{{ p.number }} {{ p.job }} {{ p.name }} · {{ p.cust }} · {{ p.qty }} {{ p.age }} {{ p.due }} {{ pt.number }} Spent {{ p.spent }} {{ p.ahead }}
{{ p.need }}
{{ p.soHead }} {{ p.soStateTxt }} {{ p.soHeadSub }}
Against the number they agreed {{ p.soCapTxt }}
at what they pay charging {{ p.soLegKept }} ({{ p.soLegKeptSub }}) undecided {{ p.soLegPend }} ({{ p.soLegPendSub }}) absorbed, not charged ({{ p.soLegDropSub }}) cap {{ p.soCap }}
What the customer sees in their portal {{ p.shareNote }}
Never shared, whatever you switch on: what anything cost you, work-centre rates, your margin, anything you absorbed, who worked on it.
{{ p.soApprTxt }}
Nothing has accrued yet. A line lands the moment a step is finished or its material is drawn.
What has happened so far {{ p.soNote }}
{{ r.label }} {{ r.sub }} {{ r.amt }}
{{ r.what }}new {{ r.detail }} {{ r.why }} {{ r.amt }}
Cost we are charging{{ p.soKeptCost }} Margin% They pay{{ p.soPrice }} We absorbed, at cost{{ p.soDropCost }}
{{ p.soGateTxt }}
Nothing matches that filter.
Clear it to see all {{ ppTotal }} prototypes.

Bend deduction

Coupons in, bend table out — millimetres throughout. The table is the mean of its samples, never typed.
No flat materials in the library yet. Add a sheet under Items first — a coupon is measured against a specific flat.
1Material, coupon & tooling
{{ bnTLinkTxt }} thickness measured mm
Coupon shape
{{ bnShapeNote }}
Tool set — from the library
Method
{{ bnPickNote }}
{{ bnToolLine }}
2After bending, measured
{{ bnWarnTxt }}
3What it works out to
{{ bnNoCalcTxt }}
Bend deduction {{ bnBD }} mm
{{ bnWorking }}
{{ o.k }}
{{ o.v }}{{ o.u }}
{{ bnStoredTxt }}
Material
Angle
{{ bnGradeName }} {{ bnGradeMeta }} tight spread re-measure
No samples yet at this angle on this material. Measure a coupon and it starts the first row — or tick “show every thickness and tool set” to see the empty grid and start from a cell.
Thickness
{{ ct.name }} {{ ct.spec }}
{{ cr.sold }}{{ cr.tmm }} {{ cr.no }} {{ cr.lnkTxt }}
Typing a figure: admins, leads
{{ bnChHiddenTxt }} Amber cells are out of range for that die — the guide is V ≥ 6 × T. Click one anyway if the shop really bends it there.
{{ bnBlendHead }}
{{ bnBlendSub }}
{{ br.no }} {{ br.name }} {{ br.flat }} {{ br.sets }}
{{ bnOcTitle }}{{ bnOcSub }}
{{ bnOcUndoTxt }}
{{ bnOcAskTxt }}
Bend deduction{{ bnOcBD }} mm{{ bnOcAdjChip }}{{ bnOcPinNote }} Bend allowance{{ bnOcBA }} mm Inside radius{{ bnOcIR }} mm K{{ bnOcK }}
{{ bnOcSpread }}
{{ bnOcHistLine }}
{{ h.at }} {{ h.by }} {{ h.lines }} — {{ h.why }} {{ h.mean }} mm
CouponByBlankH1H2V / widthAngleBD
{{ cp.when }} {{ cp.by }} {{ cp.shape }} {{ cp.blank }} {{ cp.H1 }} {{ cp.H2 }} {{ cp.third }} {{ cp.angM }} {{ cp.bd }} {{ cp.dev }} excluded
Each coupon's deduction is recomputed from its own measurements; the cell is their mean. Edit opens the deduction and every coupon in one place — nothing changes until you save, and every save is kept in the history above. An excluded coupon stays on record greyed out — nothing measured is thrown away. Amber deviation: more than 0.15 mm from the mean.
Edit deduction {{ bnEdTitle }} — {{ bnEdSub }}
Material thickness {{ bnEdTNum }} {{ bnEdTNomTxt }}
{{ bnEdTNeverTxt }}
{{ bnEdTLinkedTxt }}
{{ bnEdTStagedTxt }}
The coupons in this cell were measured at
thickness measured mm {{ bnEdTNote }}
The deduction comes from {{ bnEdSrcNote }}
{{ fg.k }} {{ fg.v }} {{ fg.prop }} {{ fg.u }}
{{ bnEdSpread }}{{ bnEdMeasuredNote }}
Adjustment mm {{ bnEdOffEq }}
{{ bnEdOffWarnTxt }}
Follows the coupons — when new samples move the mean, the adjustment rides on top. Clear it and the cell is the plain mean again.
{{ bnEdAskTxt }}
{{ bnEdPinRef }}
{{ bnEdPinWarnTxt }}
When coupons are measured here they show beside it, and this figure stays until someone switches the cell to the mean — at 3 samples the cell asks.
Samples {{ bnEdSamplesNote }}
No coupons in this cell — the typed figure stands alone.
{{ cp.when }} {{ cp.by }} {{ cp.shape }} {{ cp.mic }} excluded {{ cp.bd }} {{ cp.dev }}
deleted at Save
Where was this coupon really bent? Change the punch, the die or the material — it moves to that cell at Save. A punch and die that are not a tool set yet become one.
{{ cp.moveNote }}
Each coupon’s deduction is recomputed from its own measurements; the mean is theirs. A changed field keeps its old value underneath until Save. Excluded coupons stay on record greyed out. Amber deviation: more than 0.15 mm from the mean.
{{ bnEdSummary }}
{{ bnEdConfirmTxt }}
Dot: green spread under 0.10 mm, amber to 0.25, red over. Amber thickness means the flat is still on its nominal — mic it and link it before trusting the row. Three samples of one setup is the minimum worth trusting.

Each tool is a real piece of steel with a profile, a length made of segments and a load rating. Drop its DXF or STEP and the profile becomes the tool's face — shown wherever the tool is named — rather than a number typed from a catalogue.

Import a tooling catalog
Reading the supplier catalogs built into the site…
Drop a supplier’s XML here — punches, dies, punch holders, die holders The format a bend simulator loads (FabSupply, Wilson Tool, …). Only European-style records are offered; American and other styles are counted and left out. Nothing is written until you press Import.
{{ cf.name }} built in {{ cf.note }}
{{ cr.no }}in library {{ cr.type }} {{ cr.spec }}
{{ bnCiSummary }}
Tool categories
{{ ct.name }}{{ ct.note }} {{ ct.role }} {{ ct.n }}
New category
Where it sits in a bend
{{ bnCatRoleNote }} Name the category whatever the shop calls it. The three roles are fixed, because the maths only knows three places a piece of steel can be: on the ram, in the bed, or holding something. The role decides which measurements a tool carries and whether it can be the punch or the die of a set.
The library is empty. Add the punches and dies you bend with — a tool set is then two picks from here, and every deduction is keyed to real pieces of steel.
{{ lc.no }} {{ lc.type }} {{ lc.spec }}
{{ lc.mount }} {{ lc.segTxt }} {{ lc.src }}
{{ bnLdNo }}{{ bnLdRole }}{{ bnLdSub }}
Profile — from {{ bnLdSrc }}
{{ dm.t }}
section, mm{{ bnLdScale }}
{{ bnLdFileNote }}
{{ bnLdDerived }}
Measurements
{{ sg.label }}
{{ bnLdSegTotal }} — the Station tab stacks from these, so a bend longer than the shelf is caught at the desk.
Wear & service
{{ bnLdWearNote }}
In a bend
{{ bnLdAccNote }}
Used by
{{ bnLdSetsNone }}
{{ us.name }}{{ us.sub }} {{ us.rows }}

A bend needs tooling as long as the flange, and the load has to be inside what the tool and the press are rated for. Both come from the library: the segments you own, and the ratings on each tool.

The stack
{{ bar.t }} {{ bnStNeedTxt }}
{{ bnStFitTxt }}
{{ bnStSegNote }}
Load
{{ ld.k }}
{{ ld.v }}{{ ld.u }}
{{ ck.t }}
Shut height
ram bed {{ bnStStackTxt }}

A tool set is a punch and a die from the library, on a named machine. In an air bend the die decides the inside radius — about 0.16 × V — so swapping the V is a different row in the bend table even with the same punch.

Tool set{{ bnTeIR }}
Punch — from the library
{{ bnTePLine }}
Die — from the library
{{ bnTeDLine }}
No tool sets yet. Add the punch and die you bend coupons with — every deduction is keyed to one.
{{ t.name }}{{ t.method }}
{{ t.machine }}
Punch {{ t.punch }}
Die {{ t.die }}
{{ t.ir }}·{{ t.n }}

A sheet sold as 1/8″ measures 3.00 to 3.17 mm, and every bend on it is wrong by the difference if you trust the label. Each flat carries the thickness a coupon actually measured; every deduction and every flat pattern reads that figure when it exists.

FlatNameNominalMeasuredΔCoupons
{{ lk.num }}{{ lk.name }} {{ lk.nom }}{{ lk.meas }}{{ lk.delta }}{{ lk.n }} {{ lk.state }}

CAD Engine

{{ qeFileLabel }}
{{ qeCreateWhyHead }}
{{ w.txt }}
Each was made while one file was open, from a build tree that came from another tab: its ops, BOM and material are the other file’s, and the open file’s drawing and customer may have been put on it. Open it and check it; make the right part again from its own file. Checked takes it off this list.
{{ mx.txt }} {{ mx.date }}
{{ cqStripLabel }}
{{ t.group }}
{{ cw.init }} {{ cqConflictTxt }}
{{ cqCurName }} {{ cqCurSub }} {{ cqCurAge }} {{ cqCurState }}
No CAD yet{{ cqCurNoFileTxt }}
{{ cqCarriedNote }}
What is this cut from?
One pick per thickness — laser times, cost and sheet consumption follow it. Pick a stocked flat, or use Something else for anything the laser does not cut.
Hardware at this file {{ qeMatHwSub }}
{{ hw.name }} {{ hw.qty }} {{ hw.mergedNote }} {{ hw.tag }} {{ hw.linked }}
{{ hw.qCount }}
{{ go.number }} {{ go.name }} {{ go.sub }}
{{ hw.qNote }}
Create as new purchased item…
{{ hw.qNote }}
New purchased item — the CAD name is only a starting point
{{ mg.tLabel }} {{ mg.count }} {{ mg.hwHint }}
{{ mg.qCount }}
— leave chart-only (no consumption) —
{{ mo2.number }} {{ mo2.name }} {{ mo2.thick }} {{ mo2.sub }}
{{ mg.qNote }}
{{ mg.qNote }}
Operation {{ mg.altOpCount }}
{{ ao.name }} {{ ao.meta }}
{{ mg.altOpsNoneMsg }}
Material {{ mg.altItCount }}
{{ ai.number }} {{ ai.name }}
{{ mg.altItemsNoneMsg }}
{{ mg.altStripMsg }}

Open a STEP file: every part is unfolded and timed from the laser cut chart and press-brake feed, PEM / captive hardware is detected from the product tree, and one click reproduces the file's build tree as items with BOM + routing — then quotes it. Drop a DXF instead and it is read as a finished flat: contours measured and timed, material and thickness picked here.

{{ qeRbTitle }}{{ qeRbTxt }}
{{ qeRevModeLabel }} {{ qeRevModeSub }}
{{ qeRevModeNote }}
What changed {{ qeRsSub }} Nothing is written until you press Apply
{{ qeRsDropTxt }}
{{ rf.name }}
{{ qeRsBusy }}
{{ qeRsWhole }}
{{ r.headTxt }}{{ r.headN }}{{ r.headHint }}
{{ r.number }} {{ r.name }} {{ r.chip }} {{ r.revTxt }}shown on the right →
{{ r.diffTxt }} {{ r.revSrc }}
Replaces
{{ ip.t }}
{{ qeCmpNo }}{{ qeCmpName }}{{ qeCmpChip }}
{{ qeCmpOldLbl }}
{{ qeCmpOldNoneTxt }}
{{ qeCmpNewLbl }}
{{ qeCmpNewTxt }}
The cut file now · {{ qeCmpDxfTxt }}
{{ qeCmpFlatNote }}
The drawing now
{{ qeCmpDrwOldTxt }}
The dropped drawing
{{ qeCmpDrwNewTxt }}
What changed{{ cd.t }}{{ qeCmpRevSrc }}
What it touches{{ ci.t }}
Its jobs not cut yet
Change record — kept on every item that changes
{{ qeRsNoneTxt }}
On the floor — every op of a part with a new rev shows
{{ qeRsBanTitle }}{{ qeRsBanSub }}
{{ qeRsApplyLbl }} to LaminaThis is what Apply writes. The old revision’s files are kept in each item’s history.
{{ sl.t }}
Written to Lamina {{ aw.t }}
{{ qeRevGoneMsg }}
Change a build you already made {{ qeRevGoneMsg }}
{{ qeChWhat }}
1 · The build
{{ qeChPickNum }}{{ qeChPickSub }}{{ qeChPickMeta }}
{{ qeRevCount }}
Recently worked on
Nothing matches. Only builds this engine made can be revised — a hand-built item has no CAD tree to read against.
{{ qeChFileLbl }}
{{ cf.name }}
{{ qeChNote }}
{{ qeChHint }}
Parts {{ qeCountLabel }}
{{ cqZoneTitle }} Several files, a folder, or a zip — each part becomes a tab you can work in any order. One file on its own opens straight into the engine.
{{ r.name }} {{ r.time }}
×{{ r.qty }}· {{ r.mat }} HW
Job totals
Laser{{ qeTotLaser }}{{ qeTotLaserSetup }}
Brake{{ qeTotBrake }}{{ qeTotBrakeSetup }}
Hardware{{ qeTotHw }}
All-in{{ qeTotAll }}
run = Σ qty × min/pc · setups from op templates
3D preview drag to orbit · click a part · drop a STEP or DXF anywhere here
{{ qeBusy }}
{{ qeError }}
This part
{{ cqCurState }}
{{ cf.title }}{{ cf.sub }}
Select a part to see its flat pattern and times.
Detected hardware detected in CAD as “{{ qeHwCadName }}” · reset part no. in the file: {{ qeSelPartNo }}
{{ qeSelHwFamily }} thread {{ qeSelHwThread }} ×{{ qeSelHwQty }} in file

Recognized from the STEP product tree. On Create items this becomes a BOM line at its parent's hardware-insertion op.

{{ qeHwMatchInfo }}
Link confirmed — this BOM line uses the inventory item above.
Wrong match? Nearest in inventory {{ qeHwLeft }}
{{ qeHwDupMsg }}
Part in STEP file as “{{ qeFabCadName }}” · use CAD name part no. in the file: {{ qeSelPartNo }}
{{ qeThick }}
Bent on{{ qeBsSub }}
{{ qeBsAskTxt }}
{{ sr.n }}{{ sr.ang }}{{ sr.bd }}
Flat pattern{{ qeBlank }}
{{ qeDims }} {{ qeBendLabels }}
{{ qeBasisLine }}
{{ br.n }} {{ br.angle }} {{ br.bd }} {{ br.from }} {{ br.sub }}
{{ qeBasisFoot }}
Cut file is stale. {{ qeStaleTxt }}
{{ qeStaleHold }}
{{ qeDxfNote }}
{{ qeFlatBad }}
Hardware in this part {{ qeSelHwLeft }}
{{ h.name }} {{ h.meta }} {{ h.stTag }} {{ h.linkedTxt }}
{{ h.qNote }}
Time estimate
Laser cut{{ qeTLaserDet }}{{ qeTLaser }}
{{ qeContourDet }}
Press brake{{ qeTBrakeDet }}{{ qeTBrake }}
Hardware{{ qeTHwDet }}{{ qeTHw }}
Per piece{{ qeTTotal }}
{{ qeSetupNote }}
Drawing review {{ qeDwSub }}
{{ qeDwName }} {{ qeDwMatchTxt }}
{{ qeDwBusyTxt }}
{{ qeDwErr }}
{{ qeDwRevTxt }}
{{ qeDwImgEl }}
{{ qeDwPinNote }}
Nothing on this drawing to check against the build.
Missing from the build
{{ r.n }}{{ r.title }}
{{ r.quote }}
{{ r.model }}
{{ r.prop }}
Doesn’t match — which is right?
{{ r.n }}{{ r.title }}
{{ r.quote }}
{{ r.model }}
A warning only — change it in the build if the drawing is right.
Already in the build
{{ r.n }}{{ r.title }}{{ r.model }}
{{ qeDwApplySub }}Goes into the build below — nothing is saved until Create items + BOM
{{ qeDwPickNeedTxt }}
Generated build — review & edit
exactly what Create items + BOM will make · {{ qeDraftCount }} · nothing is saved until you create
Parts changed since this was generated
{{ qeExTitle }}{{ qeExSub }}

Items

{{ itemCount }} items · {{ attentionCount }} need attention
{{ searchCount }}
New item
{{ niFlatNote }}
ItemHomeCustomerSubAuditNameType On handAvailableCostPrice @1Status
{{ r.number }}ArchivedConsigned {{ r.custName }} {{ r.name }} {{ r.typeLabel }} {{ r.onHand }} {{ r.avail }} {{ r.cost }} {{ r.price }} {{ r.dotLabel }}
Used inside

Flag rules

The colored flag next to every item is decided by the first enabled rule (top to bottom) whose condition matches. Reorder, recolor, or disable rules — changes apply everywhere immediately.

Custom conditions build your own checks — they appear in every rule's condition dropdown
★ {{ cc.label }} {{ cc.summary }}
matches {{ cc.n }}
AND
matches {{ ccDraftN }} items now
matches {{ r.matchCount }} now

Operations & costing

CAD Engine — permanent op links

Every op the CAD Engine generates is hard-linked to the library tool named here, so its metrics drive the cost. Setting a link also adopts every existing unlinked op on that work centre — orphans stop existing.

{{ cl2.label }} {{ cl2.note }}

Work-center rates drive every operation cost in the system; the operation library is the set of reusable, pre-costed steps estimators pull into routings. Rate changes reprice items instantly and mark their pricing stale.

The active shift is the capacity the smart schedule dispatches into — its hours and workdays drive every projected finish, the Gantt, and the overtime advisor. Holidays stay on the shop calendar under Schedule.

{{ sh.summary }}
Work centers
Work centerStationsMachine $/hrLabor $/hrBurdened $/hrUsed by
{{ w.burdened }} {{ w.usedBy }}
Shop labor rate Used for cost and margin metrics wherever a work center carries no labor rate of its own. $/hr
Operation library
Icon Operation Work center Equipment Setup & run · consumables · basis Cost @10
Consumables this operation draws {{ o.consCount }}
{{ cch.label }} {{ cch.name }} {{ cch.uom }}
None chosen yet — pick from the list above.
No consumable items exist yet — add one from Items → New item → Consumable.
{{ o.lockTag }}
@10: {{ o.cost10 }} {{ o.cost10Formula }}
{{ o.metricNote }}

Cost @10 = (setup ÷ 10 + run) × burdened rate. These operations become the picker when adding steps to an item's build tree. Work you send out is priced from the services library below.

{{ ipTitle }}
{{ ipSub }}
{{ ig.g }}
Nothing matches — try laser, punch, weld, coat…

Default alloy per CAD material

A CAD model names a family — "Aluminum", "Mild Steel". The rack holds alloys. This is which one a drawing means when it does not say, so a quote can point at real stock instead of a placeholder.

Shape materials

{{ shpStamp }}

Angle, channel, tube, pipe, bar and beam are cut from stock lengths on a saw or a tube laser — never nested on the laser. This is which material words mean a shape, which work centers cut them, and how long a stick is. Nothing uses it yet — the CAD imports will, starting with the SolidWorks import.

Words that mean a shape — whole words only, so BAR finds FLAT BAR but not BARRIER
{{ w.t }}
No words — every part would read as sheet.
Try a material description
{{ shpTestRes }}
Work centers that cut shapes — a shape part's cut op offers these, and someone picks one for each part
{{ w.name }}
No work center cuts shapes yet — a shape part would have nowhere to go. {{ shpWcHint }}
{{ x.t }}

Outside services

Work sent out — coating, plating, heat treat. The library only names the service and ties its vendors, with how long each takes. What a vendor charges — price breaks, lot charge, freight, minimum — is set on the operation in the item's build tree, where the part and its quantities are known.

No outside services yet — add the first one to price work you send out.
{{ os.vendorCount }} {{ os.usedBy }} Site default
Went missing — these vendors were on this service and dropped off without anyone removing them
{{ mv.name }} {{ mv.lead }}

Raw Materials

purchased stock — expand a row to manage vendors & pricing

Sheet and plate are bought by weight, so every cost in the system flows from these three numbers: density, price per pound, and the thickness on the stock item. Change a price here and every thickness of that material re-costs.

Material Density lb/in³ Price $/lb48×96 sheet @ .125"
{{ fm.ref }}
New material {{ rmNewCatLabel }}
Unit sheet
Material and thickness
Stock sizes on the rack
Width inLength inSheets
{{ nz.info }}
{{ rmNewFlatNote }}
First vendor (optional)
They sell it in lengths ofand the price is per length. Bundles, cut to length and prices per foot or pound are set on the vendor row after.
{{ rmNewHint }}

{{ sec.label }}

{{ sec.desc }}
{{ sec.count }}
Material On handAvailableMin Unit costBest vendor
{{ tg.t }} Consigned
{{ rm.onHand }} {{ rm.avail }} {{ rm.min }} {{ rm.cost }} {{ rm.bestVendor }}
Priced by weight — set the material's $/lb below, or this thickness's override.
Stock sizes {{ rm.flatNote }}
Width inLength inOn handMinWeight lbPer sheet
Consigned{{ sz.weight }} {{ sz.cost }}
{{ sz.askTxt }}
Price $/lb override
Thickness in
Cut condition
Category Tags Consumed in operations consumption = CAD blank in² × this value
Vendors & current pricing lowest price becomes the item's unit cost
VendorVendor PNLead (d)MOQ{{ rm.venPriceHdr }}
{{ vr.priceU }}
How {{ rm.bxVendor }} sells it
Buys it as × ordered by the {{ rm.bxEq }}
Priced per Weightlb/ft {{ rm.bxPerUom }}
{{ rm.bxNote }}

Powder coat

{{ pcCount }}

Tick the parts that need coating and send one enquiry to as many coaters as you like. You answer in plain words — where it lives, how rough a life it has, what colour — and the enquiry is written for you in the coater's language.

Parts to send out parts with the Powder coat operation
Nothing matches that.
No part carries the Powder coat operation yet. Open a part, add Powder coat to its build tree, and it shows up here.
{{ pcPickLine }}
Enquiries
{{ pcListNoneTxt }}
Powder colours
Build a colour that isn’t listed. It joins the choices on every enquiry.
{{ pcColFormHead }}
{{ pcColHint }}
Your colours
{{ cc.name }} {{ cc.sub }}
Finishes and textures
Build a finish or texture that isn’t listed. It joins the choices on every enquiry.
{{ pcFinFormHead }}
{{ pcFinHint }}
Your finishes
{{ ff.name }} {{ ff.sub }}
{{ pcOptTitle }}
{{ pcOptSub }}
{{ pcOptFormHead }}
{{ pcOptHint }}
{{ pcOptListHead }}
{{ oo.name }} {{ oo.sub }}
{{ pcId }} {{ pcStLabel }}

{{ pcSub }}

{{ pcArchTxt }}
Internal note
{{ pcInNoteBy }}
Same as last time
Where will it live?
This decides the wash and the powder.
Every use has been deleted — build one with the gear.
How rough a life?
This decides how thick the coating goes on.
Every handling has been deleted — build one with the gear.
What colour?
{{ pcColNoMatchTxt }}
Every colour has been deleted — build one with the gear.
How shiny?
Every finish has been deleted — build one with the gear.
Anything that must stay bare?
Coating is paint: it fills threads and stops metal-to-metal contact.
Every bare area has been deleted — build one with the gear.
Parts in this enquiry click a row to see its model
PartQtySurface eachTotal
{{ l.number }} {{ l.name }} {{ l.kind }} {{ l.spec }} {{ l.tot }}
{{ pcTotLine }}
{{ pcCadName }} drag to orbit · explode slider bottom right
What the coater will read
Written from your answers. Tick the lines the coater sees — the rest stay with you.
Sent to coaters — these are the lines they were shown.
{{ w.text }}
Who we are asking
Send it
{{ k.name }} {{ k.state }}
{{ k.url }}
Prices type what each coater quoted, or let it arrive through their link · price per part · totals at this enquiry’s quantities
{{ h.name }}
{{ h.tot }}
{{ h.src }}
{{ row.number }} {{ row.qty }}
{{ cl.ext }}
Picking the winner puts its price and the coater on each part’s Powder coat operation — new quotes and new outside POs use them; outside POs already drafted keep their price. The enquiry then moves to Complete.
{{ pcAwardLine }}
What they would do differently
{{ ad.name }} {{ ad.text }}
This link is no longer active
Ask for a fresh one from whoever sent it.
{{ cqShop }} — powder coat enquiry

{{ cqId }}

for {{ cqVendor }}

{{ cqCount }} · please give a price per part

The parts tap a row to spin its model
{{ l.number }} {{ l.name }} {{ l.kind }} {{ l.spec }} {{ l.qty }} {{ l.area }} {{ l.done }}
{{ cqCadName }} drag to orbit · pull it apart with the slider · measure with the ruler
The specification
{{ cqColor }}
{{ cr.label }} {{ cr.val }} {{ cr.desc }}
{{ cqNote }}
Areas are geometric surface from our CAD: both faces plus every edge and hole wall.
Your quote
{{ cqSubtotal }}
Quote received
{{ cqDoneLine }}

Outside Process

{{ ospSummary }}

Work sent outside the shop — plating, coating, heat treat. A draft appears when a job with an outside operation is released and goes ready once the ops before it finish. Issuing raises a real PO in Purchasing; the parts then ride the Shipping board (pack → ship on a printed ticket, partials allowed) and come back through Receiving, where booking them completes the operation on the job.

{{ ospCombineMsg }}
{{ ospNoneMsg }}
{{ op.no }} {{ op.stLabel }} {{ op.vendor }} {{ op.svc }} {{ op.value }} due {{ op.due }}
{{ op.alertTxt }}
{{ ln.heartline }}
{{ ln.number }} {{ ln.name }} {{ ln.qty }} @ {{ ln.unit }} {{ ln.ext }}
{{ ln.sendInfo }}
{{ ln.prog }}
{{ rc.text }}
{{ op.vendorWarn }}
Enclosures for the vendor:
Parts are out — when they come back, book them in Receiving (good qty, rejects and disposition live there).
{{ op.note }} {{ op.poChip }} {{ op.issuedLine }} {{ op.shipInfo }}

Purchasing

{{ poSub }}
or raise one from Purchase Demand
{{ r.id }}{{ r.v }}
{{ r.chip }}
{{ r.buy }} {{ r.spec }}
{{ r.meta }}
Nothing here — try another filter or clear the search.
{{ poMore }}
{{ v.n }}
{{ v.pct }}
{{ v.sub }}
No vendor matches the search.
New purchase order
Vendor
No vendor matches that name.
ItemQtyUnit $Line
There are no items yet — a PO line is received against an item. Create the material under Items first.
{{ ln.pickedNumber }}
Nothing purchased matches that.
{{ ln.total }}
Sheet size {{ ln.flatNote }}
No stock sizes are listed on this material yet — add them under Raw Materials before ordering it.
{{ ln.buyNote }}
Raised into the Approval list — it goes to the vendor once a purchase approver releases it.
{{ poNewTotal }}
{{ poVName }}{{ poVContact }}{{ poVTerms }}
{{ x.k }}{{ x.v }}{{ x.sub }}
Last deliveries — the date they gave vs the day it landed
{{ d.t }}
Their POs
On time = every line landed on or before the date the vendor gave, counted per delivery as before.
{{ poId }}{{ poV }}{{ poChip }}{{ poOth }}
{{ poHead }}
{{ rl.t }}
{{ poFlagTxt }}
Next step {{ poNxT }} {{ poNxS }}
The date the vendor gives
What is on it{{ poLinesT }}
#What we are buyingReceivedEachLine totalFor
{{ l.n }}{{ l.what }}{{ l.sub }}{{ l.got }}{{ l.up }}{{ l.tot }}{{ l.for }}
{{ l.n }}{{ l.what }}{{ l.sub }}{{ l.unitT }}—{{ l.tot }}
No bought item matches.
Total{{ poTot }}
Each change saves when you leave the box. Only a draft can be edited.
Order tracking
{{ tk.label }}{{ tk.txt }}
Vendor {{ poV }} {{ poVc }} {{ poVot }}

Purchasing

{{ rqSub }}
{{ r.id }}update
{{ r.chip }}
{{ r.what }} {{ r.sum }} {{ r.dr }}
No quote requests yet. Tick items on the item list, then press Get quotes.
{{ rqId }}{{ rqChip }} {{ rqOth }}
{{ rqHead }}
{{ fl.head }}{{ fl.sub }}{{ fl.by }}
Add a line
Item{{ rqAlnPicked }}
{{ rqAlnTxt }} {{ rqAlnErr }}
Add a vendor
{{ rqAvTxt }}
Combine {{ rqId }} with… No other open request to combine with.
Keep the number
{{ cs.t }}
What combining writes• {{ w.t }}
{{ rqMvHead }}
{{ ml.t }}
Its vendors — each asked every line
No other open request.
{{ rqMvTxt }}
#What we are buyingForNeed by
{{ l.n }} {{ l.what }}{{ l.num }} · {{ l.spec }}{{ l.tag }}{{ l.aw }}{{ l.goneTxt }} {{ l.from }}{{ l.buyTxt }} {{ l.need }}
{{ rqChHead }}{{ rqChSub }}
{{ rqChBatch }} {{ rqChSent }}
{{ rqChErr }}
Who is asked — each vendor’s copy carries the lines ticked
{{ v.n }}{{ v.em }} {{ v.sent }}
{{ v.since }}{{ dd.t }}
Type each vendor’s answer as it comes inby email, phone or their quote · a price per sheet / piece · saved when you leave the box · {{ rqAnsT }}
Line {{ h.n }}{{ h.l }}{{ h.a }}
{{ row.n }} · {{ row.what }}{{ row.num }} · {{ row.need }} {{ c.altTxt }}{{ c.tot }}{{ c.wasTxt }} {{ c.off }}
{{ rqAltHead }}{{ rqAltSub }}
Item they offer{{ rqAltPicked }}
{{ rqAltErr }}
{{ tr.label }}
A grey cell is a line that vendor was not asked. Freight, free freight and minimums count in the Award plans. The won price becomes that vendor’s last price on the item.
Picked by hand
{{ rqGridH }} {{ h.n }}{{ h.l }}
{{ row.n }} · {{ row.what }}{{ row.num }} · {{ row.need }}{{ row.from }}{{ row.aw }} no answer yet {{ c.naT }}
Total · {{ rqTotT }} {{ t.t }}{{ t.sub }}
{{ rqWritesH }}
{{ sg.head }}{{ sg.sub }}{{ sg.noneTxt }}
{{ w.head }}{{ w.sub }}
{{ rqDone }}

Purchasing

{{ plSub }}
{{ plCnt }}
{{ r.vendor }}{{ r.sub }}
{{ r.picEl }}
{{ r.num }}
{{ r.chip }}
{{ r.buyT }} {{ r.spec }}
{{ r.line }}
{{ r.meta }} {{ r.camT }}{{ r.camAmb }} {{ r.camT }}{{ r.camAmb }}
{{ plNoneT }}
{{ plBulkH }}{{ plBulkT }}
Nothing to buy or chase right now.
{{ pd.picEl }}
{{ pd.num }}{{ pd.chip }}
{{ pd.name }}
{{ tg.t }}
From CAM · Laser{{ pd.camT }}{{ pd.camAmb }}
CAM · Laser{{ pd.camT }}{{ pd.camAmb }}
{{ pd.bLongL }} {{ pd.bShortL }} {{ pd.bCount }}
{{ pd.bKick }} {{ pd.bBig }} {{ pd.bSpec }} {{ pd.bSub }}
Scheduler alert — {{ pd.maTxt }}
Stores asked — {{ sq.txt }}
{{ pd.read }}
{{ pd.nextT }}
Sheet size
{{ pd.szWarn }}
{{ pd.qty }}
{{ pd.sugg }}
VendorPriceLands
No vendor on file — the plan assumes 14 days. Get quotes, or add a vendor on the item.
The line on the PO — what the vendor reads{{ pd.poLn }}
{{ pd.dateL }}
{{ sx.k }}{{ sx.v }}{{ sx.sub }}
Stock over the next 3 weeks
{{ pd.run }}
{{ pj.wd }}{{ pj.dn }}
a job takes itan open PO landsthis buy landshover a day for the balance
Laser batches that need this sheet
{{ nb.no }}{{ nb.sh }}{{ nb.cuts }}{{ nb.cov }}
{{ pd.nsTxt }}
{{ pd.hdTxt }}
Who needs it
{{ nd.op }}{{ nd.tag }}{{ nd.when }}{{ nd.qty }}
No job is waiting on it — it is on order for stock.
Order tracking{{ pd.poT }}
{{ pd.poSub }}
{{ tk.label }}{{ tk.txt }}
{{ pd.morePo }}
Quote request{{ pd.rfqT }}
{{ rv.name }}{{ rv.t }}
Buying history
{{ hs.when }}{{ hs.t }}
Never bought — this would be the first order.
How we buy it
{{ se.k }}{{ se.v }}
Request for quote

The same lines go to every vendor named here. Print each vendor's copy from the register, key their answers as they land, and award the winner — that raises the PO.

LineQty
{{ rl.number }} {{ rl.uom }}
{{ rl.name }} · {{ rl.note }}
Vendors to ask
{{ rv.cov }}
No vendor on the list matches — keep typing to add a new one
Or add these lines to a request that is already open — vendors who have it are owed the updated copy
Cancel {{ poCancelId }}
The order stays on the record as cancelled, with your reason and name, and drops out of the default view. Anything already received is unaffected.

Quotes

{{ qHeadline }}
{{ qFilterCount }}
{{ qt.label }} {{ qt.value }}
{{ qNoneMsg }}
{{ g.title }} {{ g.sub }}
{{ mq.title }} {{ mq.label }} {{ mq.exp }}
{{ mq.customer }} {{ mq.sub }} Replaces {{ sv.label }} · {{ sv.detail }}
{{ mq.total }} {{ mq.gmTxt }}
{{ t.label }} {{ t.date }}
PartQtyUnit priceLine totalCost · margin — shop only
{{ ml.name }}
{{ ml.qbNote }}
{{ ml.brkWarn }}
{{ ml.qty }}
{{ ml.unit }}
{{ ml.ext }}
Costs {{ ml.cost }} ea Margin {{ ml.gmTxt }}
Remove line {{ ml.ordTxt }}
{{ ml.askTitle }} {{ ml.askSub }}
{{ ml.sentTxt }} {{ ml.sentNote }}
{{ ml.lastTxt }}
{{ ml.touchedNote }}
{{ mq.lineCount }} Total {{ mq.total }}
Blended{{ mq.gmTxt }}
{{ mq.addCount }}
{{ mq.addPicked }}
Lead time{{ mq.ltSub }}{{ mq.ltMissN }}
Line Vendor Production Outside Ships
{{ lr.number }}
× {{ lr.qty }}
{{ lr.venD }}
{{ lr.venTxt }}
{{ lr.prodD }}
{{ lr.prodTxt }}
{{ lr.outD }}
{{ lr.outTxt }}
{{ lr.total }}
{{ lm.label }}
{{ mq.ltHead }}{{ mq.ltDays }}{{ mq.ltShip }}
Quote it as with working days of buffer
Draw it
What the customer sees on the quote
{{ mq.ltPrevEl }}
{{ mq.ltPrevMsg }}
{{ mq.backCount }}
{{ mbk.text }} {{ mbk.kind }}
Off by default — nothing here has happened yet.
{{ mq.note }}
New quote for {{ nqCustNoneTxt }}
Quote lines
{{ nl.number }} {{ nl.uom }} · {{ nl.unit }} /ea {{ nl.ext }}
Click items on the left to add lines at the chosen qty.
{{ nqEtaNote }}
Quote total
{{ nqCartTotal }}

Customers

Who buys from you, and what they can do in their portal. Portal access lets a customer log in to see their parts, order status live from job tracking, place POs, and upload CAD for new parts — uploads land here flagged for engineering review before any price is shown.

Portal address — its own door, no way into this system from it {{ portalLink }}
{{ c.initial }} {{ c.inviteChip }} pts
{{ c.items }} items {{ c.openOrders }} open orders {{ c.lifetime }} lifetime {{ c.pendingNote }}
Each person gets their own link. Opening it lets them confirm their details and addresses, accept the terms and choose a 4-digit PIN — that PIN is how they sign in afterwards.
{{ ct.stateLabel }}
{{ ct.name }}
{{ ct.sub }}
{{ ct.when }}
{{ portalGateKicker }}

{{ portalGateTitle }}

{{ portalGateLead }}

Ask us for an invitation link and you can choose a PIN of your own.

{{ portalPinErr }}
{{ portalGateSetupMsg }}

{{ portalGateNote }}

Need this on a different date? {{ dtTitle }} {{ dtSub }}
Your date now {{ dtWas }} {{ dtWasOrig }}
Date you would like
{{ dtDirHint }}
{{ dtCalHead }} Reading the schedule… on plan tight only as HOT · expedite not available
MonTueWedThuFriSatSun
{{ dtCalPickTxt }}
{{ dtHotMsg }}
{{ dtPendMsg }}
{{ dtAnswerText }}
Portal preview — this is what the customer sees after logging in.
jobs
logged in as
No customers have portal access — enable it on the Customers page.
{{ portalInitial }}

{{ portalName }}

{{ portalWho }}
{{ portalWhoSub }}
New part

Something we've never made — we'll review and price it.

Something new

Something we've never made — we'll review it and come back with a price.

Drop the STEP here. Engineering reviews the model, builds the process, and pricing appears once approved — the part shows as Awaiting review & pricing in your parts list until then.

Your quotes {{ pqCount }}
{{ pql.number }} {{ pql.name }} {{ pql.qty }} {{ pql.unit }} {{ pql.ext }}
You accepted this — we will confirm before anything is made
No quotes from us at the moment.
Ask for one on the Place an order tab and it will appear here once we send it.
Blanket agreements
Your standing commitments — each release becomes an order you can track above.
{{ pb.id }} {{ pb.poTxt }} fully released awaiting confirmation {{ pb.relTxt }} {{ pb.pct }} {{ pb.targetTxt }}
{{ pbl.number }} ×{{ pbl.qty }} — due {{ pbl.due }} · {{ pbl.state }}
Will your orders be on time?
{{ pfHeadline }}
{{ pfQCount }}
{{ lg.label }}
{{ pfNoHitsMsg }}
Nothing here — try another group above, or show delivered orders.
{{ pom.so }} {{ pom.po }} {{ pom.nTxt }}
{{ lrm.ring }}
{{ lrm.number }} {{ lrm.name }} ×{{ lrm.qty }} {{ lrm.date }}
{{ rm.refSo }} {{ rm.refPo }} {{ rm.label }}
Hot {{ rm.expTxt }} Prototype {{ rm.number }} {{ rm.name }}
{{ rm.heart }}
Promised {{ rm.date }} {{ rm.dateNote }}
{{ rm.next }}
{{ spm.label }} {{ spm.detail }}
Your orders {{ pfSoCount }}
{{ pfDet.so }} {{ pfDet.sub }}
{{ pfDet.label }}
{{ r.bigRing }}
{{ r.ctx }}
{{ r.number }} {{ r.qtyTxt }} Prototype Hot {{ r.expTxt }}
{{ r.name }}
{{ r.date }} {{ r.label }} {{ r.dateNote }}

{{ r.story }}

{{ r.dateTip }}
{{ ft.k }} {{ ft.v }}
Its route
{{ sp.label }} {{ sp.detail }}
{{ r.kidsTitle }}
{{ kd.number }} {{ kd.name }} {{ kd.qty }} {{ kd.state }}
What it is made from, and how it is being made
{{ r.ptNote }}
{{ nd.number }} Part {{ nd.name }} {{ nd.qty }} {{ nd.state }}
{{ op.seq }} {{ op.name }}
{{ op.wc }}
{{ op.time }}
{{ op.state }}
{{ r.ptBomNote }}
Agreed with you{{ r.ptCap }} Confirmed so far{{ r.ptConf }} {{ r.ptRoom }}
{{ r.ptMoneyNote }}
Lines on this order — click one to bring it forward
{{ lr.ring }}
{{ lr.number }} {{ lr.name }} ×{{ lr.qty }} {{ lr.date }}
{{ pfShowing }}
Open orders
{{ ooCount }}
Our SOYour POPartStill owedDueStatus
{{ oo.so }} {{ oo.po }} {{ oo.number }} {{ oo.provLabel }} {{ oo.name }} {{ oo.qty }} {{ oo.dueLabel }} {{ oo.status }}
Nothing matches that. Try part of a PO number, an SO number, or a part number.
Completed orders
{{ coCount }}
Our SOYour POPartDeliveredOn
{{ co.month }}
{{ co.so }} {{ co.po }} {{ co.number }} {{ co.name }} {{ co.qty }} {{ co.whenLabel }} {{ co.onTimeLabel }}
{{ co.shipsLabel }}
{{ ps.id }}{{ ps.when }}{{ ps.linesTxt }} {{ ps.carrierTxt }}{{ ps.tracking }} {{ ps.podTxt }} {{ ps.podNote }}
No shipment record for this delivery yet.
Paperwork
Packing slips and signed copies sit on each shipment above.
Certificates & inspection
No certificates were required on this order. Ask us if you need one issued retrospectively.
Value
{{ co.value }}
Nothing delivered yet — completed orders land here with their packing slip and certificates.
Request a return

Tell us what is wrong and we will send back an authorisation number. Please do not ship anything until you have that number — parts arriving without one cannot be identified.

{{ prProblem }}
Your returns
{{ pr2.id }} {{ pr2.state }}
{{ pr2.date }}
{{ pr2.part }}
{{ pr2.line }}
{{ pr2.note }}
Nothing returned so far.
New purchase order
{{ ppoBusy }}
Upload your PO Drop the PDF here — we read your part numbers, quantities and dates
{{ ppoFile }}
{{ ppoBlNote }}
{{ pr.title }} {{ pr.how }} {{ pr.sub }} {{ pr.ext }} {{ pr.price }} · {{ pr.priceNote }} {{ pr.mismatchNote }}
Estimated total
{{ ppoTotal }}
{{ ppoCalDatesTxt }}
{{ ppoCalWarnTxt }}
{{ ppoCalHead }} Reading the schedule… on plan tight only as HOT · expedite not available
MonTueWedThuFriSatSun
{{ ppoCalPickTxt }}
Highlighted lines aren't parts we've made for you before — we'll quote them and come back to you. They won't be priced on this order.
Checking the date against our schedule…

Prices shown are suggestions from what you've paid before or your quantity-break pricing. We review every uploaded PO and confirm pricing before production starts.

No items match — clear the search or ask us to add the part.
{{ cl.number }} {{ cl.qty }}
{{ cl.wasLabel }} · {{ cl.deltaLabel }} {{ cl.unitPrice }} /ea {{ cl.ext }} price to be quoted
Need by
{{ poTbcMsg }}
PO total
{{ poCartTotal }}
Your PO number is required

Prices are live from your quantity-break pricing and stay provisional until we confirm the order.

Standing order — blanket
Commit to a total quantity at today's price and take delivery in dated releases. The unit price locks at your total-commitment tier; we review and approve the schedule before anything is made.
{{ pb2.number }} {{ pb2.name }} {{ pb2.ext }} {{ pb2.unit }} /ea
{{ pt2.txt }}
Commitment total {{ pblGrand }}
Your PO number is required

Prices lock at the total-commitment tier and stay provisional until we confirm. Once approved, each dated delivery is released to production automatically ahead of its date.

Order received
Thank you — nothing else to do right now.
Our SO{{ poDoneSo }}
Your PO{{ poDoneRef }}

{{ poDoneMsg }}. We'll confirm pricing and dates, then it appears in Order tracking.

Your parts
{{ pPartsCount }}
{{ pi.number }} {{ pi.name }} {{ pi.whoInit }}
{{ pi.extPrice }}
{{ pi.unitPrice }} /ea · {{ pi.qtyLabel }}
Quote required
{{ pi.quoteMsg }}
{{ pi.note }}
{{ pp.number }} {{ pp.name }} Awaiting review & pricing
Nothing matches that. Try part of the number, or the part name.
{{ pPartsMore }}

Vendors

The master vendor list. Attach vendors and pricing to materials on the Raw materials page — this page owns who they are, terms and default lead times.

VendorContactEmailPhoneTermsLead (d)Supplies
{{ v.supplies }}
{{ vMissHead }}
Named on parts, purchase orders, outside orders, requests or consignment, but not on the list above — deleted, or never saved. Putting one back makes the record with the name and the lead time found; contact, email, phone and terms need filling in.
{{ mv.name }} {{ mv.where }} {{ mv.leadTxt }}
{{ nrTitle }} {{ nrSub }}
{{ nrDup }}
{{ nrEmptyMsg }}
{{ ns.label }} {{ ns.prog }} {{ ns.size }} · {{ ns.nParts }} {{ ns.time }} cut
PartQty on sheetJob · order
{{ nr2.n }} {{ nr2.q }} {{ nr2.jobs }}
Batch totals — every sheet
{{ nt.n }} {{ nt.q }} {{ nt.jobs }}
{{ egTitle }}

Laser ops can’t reach the floor without a DXF. Raise the engineering flag: the job stays scheduled, engineering gets a resolve-by date, Arthur chases it, and the job releases itself the moment the cut file lands.

{{ er.id }} {{ er.miss }}
Hold {{ holdAskJob }}
{{ holdAskSub }}. The floor sees this reason on every operation until it is resumed.
{{ holdViewJob }} is on hold
{{ holdViewNote }}
{{ holdViewWho }}
{{ npNo }} {{ npSub }}
{{ npMeta }} {{ npSentLabel }}
{{ lb.label }}
On this sheet
{{ nl.n }} {{ nl.q }}
{{ dvName }} {{ dvKind }}
Opening… This file isn't on the shop server, so no terminal can open it. Attach it again on the item it belongs to — it uploads for everyone from there. {{ dvBody }} This file type can't be shown here. Download it to open it in the right application.
{{ pdocTitle }}
{{ pdocSo }}
Your PO {{ pdocPo }}
{{ pdocDateLabel }}
{{ pdocDate }}
{{ pdocNumber }} {{ pdocRev }}
{{ pdocName }}
Ordered
{{ pdocQty }}
In this box
{{ pdocSent }}
{{ pdocLeft }}
Promised ship date {{ pdocDue }}
Line total {{ pdocLineTotal }}
This price came from your purchase order and is still to be confirmed by our team.

{{ pdocFoot }}

Ask about {{ portalAskSo }}
{{ portalAskLead }}his goes straight to the team working on your order, with the order attached so nobody has to ask which one you mean.

Equipment

Every machine in the shop lives here — lasers, brakes, welders, ovens. Machines with a cut-speed chart drive CAD-based run times; link any machine to an operation on the Operations & costing page.

sort
{{ eqCount }}

No machine matches that. Clear the search to see all {{ eqTotal }}.

work center {{ q.speedSummary }} chart-driven · time costs by
footprint × {{ q.fpUnit }}
{{ q.planTag }} {{ q.linkedOps }}
Costing metrics

What this machine charges work by. Operations linked to it get one quantity field per metric — cost work by hours, distance, bends, hits… your choice.

unit {{ mx.valueLabel }} {{ mx.atOpWhy }}
reads × + {{ mx.cadMinLabel }} {{ mx.cadUnitNote }}
No metrics — operations on this machine cost by setup + run time only.
Consumes Optional — the CAD engine pre-fills each op's metric quantity from the BOM qty of this material family consumed at the op.
{{ q.cadNote }}
{{ q.cadDrawNote }}
Cut-speed chart {{ q.chartSrc }}
Feature-size bands Applies to every material — per-row overrides live in each table
{{ g.material }} {{ g.count }} thicknesses {{ g.condSummary }}
Condition group
Pierce ×
Small ≤ ({{ eqUnitLen }})
Med ≤ ({{ eqUnitLen }})
{{ g.viaNote }}
Timing — measure these on the machine and type them here
Head down (s)
Gas (s)
Head up (s)
Rapid (ipm)
Accel (in/s²)
Worked example {{ g.ltExPart }}
{{ g.ltExTotal }}
{{ g.ltExLine }}
Measured (s)
{{ g.ltGap }}
ThicknessCodeFast ({{ eqUnitSpeed }})Med ({{ eqUnitSpeed }})Slow ({{ eqUnitSpeed }})Etch ({{ eqUnitSpeed }})fp (sec)
{{ sp.thickness }}{{ sp.gauge }} {{ sp.code }}via {{ sp.via }} {{ sp.fastF }} {{ sp.medF }} {{ sp.slowF }} {{ sp.etchF }} {{ sp.pierceSec }}
No chart — this machine costs by time only.
{{ itemPos }}
Archived — hidden from lists, pickers and new orders. Its history, jobs and documents are kept.
What it can do
CAD
{{ fp.tag }}
Sheet yield %
{{ fp.yieldNote }}
{{ pr2.init }} {{ presRecMsg }} Prototype Consigned
{{ dotLabel }}·{{ dotReason }}
Location {{ fh.label }} · no bin not assigned to a bin — receiver chooses
{{ ajCount }} — the outer ring is the job, the inner rings its sub-jobs; each fills as pieces get through
No active jobs — one appears here the moment an order line or stock build creates a job for this part.
{{ aj.heart }}
{{ aj.so }} {{ aj.customer }} HOT {{ aj.status }} {{ aj.qty }} due {{ aj.due }}
{{ aj.prog }}
{{ protoBanLine }} {{ protoBanSub }}
Make it a standard item{{ protoBanLine }}
No step has been completed yet, so there are no measured times to write. Graduating now just takes the prototype badge off — the routing keeps its estimates.
StepEstimatedActual
{{ g.seq }} {{ g.name }} {{ g.est }} {{ g.act }} {{ g.delta }}
{{ protoGradLeft }}
The prototype job stays on record. The next order for this part is an ordinary job.
{{ f.text }} — {{ f.by }}, {{ f.date }}
Attributes
{{ a.k }}
{{ a.v }}
Visible in the portal to
{{ pv.name }} {{ pv.why }} Nobody — this part does not appear in any portal.
Hidden from
Notes

{{ itNotes }}

Status flag
{{ dotLabel }}

{{ dotReason }}

Departments that draw it same assignment as Admin → Departments — tap to add or remove
No departments exist yet — create them under Admin → Departments.
Used in
{{ usageSummary }}
{{ usageEmptyMsg }}
{{ ur.rev }}
{{ ur.name }}
{{ ur.rollsTo }}
{{ ur.per }}
{{ ur.multi }}
{{ ur.feeds }}
{{ ur.kind }}
{{ ur.jobsLabel }}
Quantity break pricing
Margin % reviewing — nothing written yet
{{ prUndoTxt }}
{{ prHead }}
Qty fromCurrentNewChangeMargin
{{ pr.qty }} + {{ pr.cur }} {{ pr.next }} {{ pr.delta }} {{ pr.mCur }} {{ pr.mNext }}
{{ prOverrideNote }}
What the new price touches
Nothing else carries this item’s price right now — only the breaks change.
{{ prSummary }}
QtyRolled cost /eaMargin %PriceOverrideEffectiveActual margin
{{ b.cost }} {{ b.computed }} $ {{ b.effective }} {{ b.margin }}
{{ staleNote }}

Prices stay frozen until refreshed — cost changes raise the amber warning but never silently move the sell price. ↻ re-freezes a row at today's cost and gross margin; an override pins the row outright.

Cost last changed {{ costUpdatedAt }} · price last set {{ priceUpdatedAt }}. Editing margin or overrides marks pricing current.

Where the cost comes from
per piece · same functions as the table above, opened up
{{ bc.h }}
{{ br2.label }}
{{ br2.label }} {{ br2.sub }} {{ c2.v }}
Rolled cost /ea {{ t2.v }}
Outside work added after margin {{ x2.v }}
{{ bn.t }}
Open quotes on this item
{{ q.id }} {{ q.customer }}
{{ q.statusLabel }}
Qty {{ q.qty }}· {{ q.price }} /ea {{ q.delta }}
No open quotes reference this item.

Live quotes reprice automatically as the item's cost or routing changes, until marked sent — sent quotes freeze at their snapshot.

Order by

The last working day a PO can be placed and still reach the operation that needs it — that operation's scheduled start, less the vendor's quoted lead time, on the shop calendar.

JobOperationQtyNeededOrder byLead
{{ ob.job }} {{ ob.op }} {{ ob.qty }} {{ ob.needBy }} {{ ob.obTxt }} {{ ob.lead }}
Approved vendors
VendorVendor PNLeadMOQLast price
{{ v.vendor }}{{ v.vendorPN }}{{ v.leadDays }} d{{ v.moq }}{{ v.lastPrice }}
No approved vendors yet — unlock to add one.
VendorVendor PNLead dMOQPrice $
{{ v.vendor }}
Pricing edits commit on blur. A new vendor is also created in Admin → Vendors so outside orders can be issued to it.
Purchase orders
POVendorQtyPriceDueStatus
{{ p.po }}{{ p.vendor }}{{ p.qty }}{{ p.price }}{{ p.due }}{{ p.status }}
Sheets on the rack

Counted in sheets, per size, at the bin it lives in — that is what someone walking the aisle can verify. Price flows from weight, so $/sheet and the costing rate can never disagree.

W inL inSheetsMinBin & last countPer sheet
{{ fz.countedLabel }} {{ fz.perSheet }} {{ fz.lb }}
{{ pl.label }}
{{ fz.free }} free of {{ fz.onHand }} — {{ hf.label }}
{{ ifzUnNote }}
Price $/lb override
{{ ifzCostNote }}
{{ ifzTotals }}
Unit cost
$ per {{ itUom }}
Purchase unit
1 {{ puVendorUnit }} =
1 {{ puVendorUnit }} = {{ itUom }}

{{ puSummary }}

Changing cost marks dependent manufactured items' pricing stale and reprices live quotes — watch the status flags.

Reorder
Min stock {{ itUom }} {{ itOnOrder }}
Cost preview at lot qty
Rolled cost /ea {{ rolledCost }}
No sales orders yet — customers appear here once this part ships on an order.
{{ cu.initial }}
{{ cu.customer }}
{{ cu.orderCount }} · last {{ cu.last }}
Total qty
{{ cu.qty }}
Last price
{{ cu.lastPrice }}
Lifetime
{{ cu.rev }}
OrderDateQtyUnit priceExtendedStatus
{{ so.so }} {{ so.date }} {{ so.qty }} {{ so.unitPrice }} {{ so.ext }} {{ so.status }}
Adjust stock {{ adjTitle }} — {{ adjOnHand }}
Sheet size On hand Counted Change
{{ ag.size }} {{ ag.sub }} {{ ag.cur }} {{ ag.rollup }} {{ ag.delta }}
{{ ab.code }} {{ ab.name }} {{ ab.cur }} {{ ab.delta }}
New on-hand {{ adjFlatTotal }}
{{ adjFlatDelta }}
A bin cannot hold less than nothing — correct the negative line before posting.
Location On record Counted Change
{{ al.code }} {{ al.name }} {{ al.cur }} {{ al.delta }}
New on-hand {{ adjTotalTxt }}
{{ adjDeltaTxt }}
A location cannot hold less than nothing — correct the negative line before posting.
{{ adjShortMsg }}
None of this part sits in a location yet, so there is nothing to move. Use Count / correct to file some stock first.
Stocking policy

This is the one setting the whole system reads — it decides where finished parts go, whether stock levels apply, and how a shortage is answered.

{{ itUom }}
Home bins {{ hb.path }}{{ hb.code }}{{ hb.size }} {{ fg.label }} · no bin none — receiver chooses
{{ s.v }}
{{ s.k }}
Where it is stocked
on hand {{ wskOnHand }} {{ itUom }} · one figure, every place

A bin orders only when nothing upstream can fill it. A low float fetches from stores and never buys; stores, and a point-of-use bin with no stores behind it, buy.

{{ wskNeedsBinTxt }}
{{ wskUnplacedTxt }}
Stores {{ wskStoresQty }} {{ itUom }}
{{ wskMinNote }}
{{ wskBinsHead }}
{{ wskPendTxt }}
{{ lb.code }} {{ lb.sub }} {{ lb.qty }} {{ lb.state }}
{{ wskBinAddNote }}
Competing demand
{{ cdSummary }}

{{ cdNote }}

{{ cd.ref }} {{ cd.what }} {{ cd.qty }} {{ cd.due }}
Where it sits
{{ invPlaced }}
Home location {{ invHome }} — deliveries file themselves here
No home location set — receipts land wherever the receiver picks. Set one under Home bins in the Stocking policy card above, or give the item a point-of-use bin under Where it is stocked.
{{ eqs.name }} {{ z.tip }} {{ z.code }} {{ z.qty }} Home location for this part
{{ invPlanNote }}
Nothing of this part is filed in a location yet.
{{ invUnplaced }}
Recent adjustments
{{ ar.date }} {{ ar.text }}
Reserved against jobs
{{ invHoldTotal }}
Nothing is holding this part. Reservations appear here the moment a job is released to the floor.
{{ ih.id }} {{ ih.customer }} {{ ih.status }} {{ ih.due }} {{ ih.qty }}
On its way in
{{ invIncomingTotal }}
Nothing on order.
{{ ii.id }} {{ ii.status }} {{ ii.vendor }} {{ ii.got }} {{ ii.due }} {{ ii.qty }}
Movement history
No location movements recorded for this part yet.
{{ im.date }} {{ im.loc }} {{ im.text }} {{ im.who }}
Build documents
{{ docCount }}

Everything attached here reaches the operator on the floor terminal, where it opens full screen without leaving the job. Scope a document to one operation and only that station sees it.

No routing yet — documents will show at every operation once one exists.
Drop documents here, or click to browse PDF drawings, images, specs — several at once. 12 MB each.
Document Kind Shown at
{{ dr.name }} {{ dr.meta }}
Requirements
{{ c }}
Certificates on file
DocumentKindReferenceDate
{{ c.doc }}{{ c.kind }}{{ c.ref }}{{ c.date }}
{{ qtRuleTxt }}
{{ qtHint }}
{{ qtFsStep }}{{ qtFsOp }} · {{ qtFsHave }}
{{ qtFsHint }}
{{ fr.label }}{{ fr.dupe }}
{{ qtFsHint }}
Drawings and specs live on the Documents tab — a PDF filed as a drawing is what "Read the print" reads.
Arthur read {{ qtDraftFile }}{{ qtDraftN }} to decide
{{ dr.text }} {{ dr.meta }}
Op {{ g.seq }} {{ g.name }} QC op {{ g.pill }}
{{ st.n }} {{ st.text }}CRITICALFAI {{ st.line }} {{ st.src }}
Reads in the operator measures and types in this unit
{{ st.measN }} off the model
{{ mm.label }}{{ mm.kindTxt }} · nominal from the model {{ mm.range }} {{ mm.otherTxt }}
Pointers on the model
No steps — place one on the model, or + for one without an anchor.
Build the routing first — steps hang on operations.
Steps copy onto every job at approval and show on the floor at their op with the model framed on the feature. The FAI sheet is every step marked FAI.
{{ t.k }}{{ t.v }}{{ t.sub }}
{{ icNote }}
WhenBinSize · whyBookCountedResultBy
No count on record for this item. Count it now puts it on the runner's board.
{{ c.when }}{{ c.bin }}{{ c.what }} {{ c.exp }}{{ c.got }}{{ c.result }}{{ c.by }}
{{ h.date }}
{{ h.ref }}
{{ h.text }}
{{ h.meta }}
Nothing in this category yet.
{{ viewerTitle }} {{ viewerHint }}
Bill of materials
{{ vbCount }}
{{ vbHint }}
{{ vbPickedTxt }}
{{ viewerFlatMeta }}
DFM findings
{{ iss.level }}
{{ iss.text }}
{{ lblTitle }} {{ lblSizeNote }}
{{ lblTitle }}
{{ lblPart }}
{{ lblDesc }}
{{ kv.k }}{{ kv.v }}
ROUTING
{{ lo.n }}{{ lo.name }}
{{ lblNote }}
{{ lblBarText }}
{{ lblBarText }}
{{ lblBcLabel }}
Sizes & content are set under Admin → Documents & labels
{{ soConvertedId }} created

The quote is now a sales order. Confirm it on the sales-order board to create its jobs.

{{ fpLabel }}
{{ fpNumber }} · {{ fpName }}

{{ fpCond }}

Open flags
{{ ff.text }}
{{ ff.by }} · {{ ff.date }}
{{ rvNum }} · revisionseach keeps its own cut file, flat, 3D, BOM and routing
{{ rvLostT }}
{{ rvOldT }}
{{ oj.t }}
{{ v.rev }}
Rev {{ v.rev }}Current{{ v.when }}
{{ v.what }}
{{ fc.t }}
Putting a part back changes only this part — the assemblies it is in stay as they are. Letters only go forward: going back to an old rev makes the next letter, a copy of it. The rev you leave stays here with its own files.
Put {{ rvNum }} back to rev {{ rvTo }} {{ rvBody }}
New revthe next letter — type another to match the customer’s drawing
{{ rvLErr }} {{ rvJobsLbl }}
{{ jb.id }}{{ jb.what }}
{{ jb.lock }}
{{ jb.note }}
No open jobs on this part.
{{ pbTitle }}{{ pbSub }}
{{ pbMovedTxt }}
The approval is kept in the PO’s history.A draft again — lines can be edited and it can go out for quotes.It needs approving again before it can be marked on order.
{{ attOfferTitle }} {{ attOfferTxt }}
Front door {{ doorClock }} {{ doorDate }} · {{ doorShift }}
In now {{ doorIn }} {{ doorOf }} Type your PIN to clock in. Type it again when you leave — for lunch too. Offline — punches are kept on this iPad and sent when the connection is back
{{ doorPadTitle }}
{{ doorErr }}
{{ doorInit }} {{ doorTitle }} {{ doorSub }} {{ doorNote }}
{{ pp.init }}
{{ pcTitle }}
{{ pcSub }}
{{ pq.name }} · {{ pq.state }}
Tell Arthur
Bug Improvement
{{ bugDoneMsg }}
{{ bg.text }}
Arthur is thinking…
{{ bugTgt }}
{{ sh.thumb }}
Arthur asks follow-ups until it’s airtight, then writes the fix prompt for review.
{{ ppTitle }} {{ ppSub }}
{{ ppNote }}
{{ lpTitle }} {{ lpTrail }}
{{ lz.code }}
{{ lc.head }}
Code Name Holds
{{ lpNewErr }}
{{ lpWhyNot }} {{ lpFlatNote }}
{{ shortAskJob }} finished short
{{ shortAskItem }} — {{ shortAskLine }}
{{ shortAskSo }} is still owed the difference. Raise a make-up job now and it lands approved, ready to release when material is there. Dismiss and the order simply ships short.
{{ jdlTitle }}
{{ jdlSub }}
{{ dr.id }} {{ dr.number }} {{ dr.name }} sub-job {{ dr.work }}
{{ jdlBlockTxt }}
{{ jdlWorkHead }}
{{ jdlWorkTxt }}
{{ fx.txt }}
{{ sdlTitle }}
{{ sdlSub }}
{{ dr.id }} {{ dr.number }} {{ dr.name }} sub-job {{ dr.work }}
Finished pieces in stock — keep or scrap each part
{{ mr.number }} {{ mr.name }}{{ mr.txt }}
{{ sdlWorkHead }}
{{ sdlWorkTxt }}
{{ fx.txt }}
{{ sdlNeed }}
{{ idelTitle }}
{{ idelSub }}
{{ ir.number }} {{ ir.name }} {{ ir.per }} {{ ir.chip }}
{{ ir.why }}
{{ ir.work }}
{{ ir.quote }}
{{ ir.woTxt }}
{{ ir.stockTxt }}
{{ idelBlockTxt }}
{{ isu.txt }}
{{ idelPermTxt }}
{{ idelNeed }}
{{ bkTitle }}
{{ bkSub }}
{{ bk.no }} {{ bk.name }}{{ bk.why }}
{{ bkLeft }}
Force to the floor?
{{ faSub }}
It goes on the floor now, with its sub-jobs, ahead of when the schedule would put it there. Its material is reserved now.
{{ saTitle }}
Locks the price and makes the jobs. Nothing goes to the floor from here — pick where the jobs go first.
Release short of material?
Everything is on hand now
{{ relAskSub }}
The floor gets the work now. Every op ahead of the one that needs the missing material can run; that op waits until it lands. Nothing is booked that isn’t on the shelf.
The stock just added covers every material on this card. Releasing books it to the jobs — nothing waits.
{{ relAskQc }} That job stays behind.
{{ rj.id }} {{ rj.number }} {{ rj.name }}
sub-job {{ rj.qtyTxt }}
{{ rl.number }} {{ rl.name }} {{ rl.gapTxt }} covered
{{ rl.needTxt }}
{{ rl.whyTxt }}
{{ rl.addedTxt }}
{{ rl.coverTxt }}
{{ rl.afHead }}{{ rl.afHint }}
Sheet size
Add{{ rl.afUnit }}{{ rl.afArea }}
To
Why
{{ rl.afPoTxt }}
{{ rl.afResTxt }}
{{ rl.afFoot }}
{{ rl.waitTxt }}
{{ relAskWho }}
PO {{ nsoPoWarnPo }} is already on file
{{ nsoPoWarnCust }} sent this PO number before — it came in as {{ nsoPoWarnSo }}. If this is the same order, open it instead of entering it twice.
Adjust completed count
{{ adjTitle }}

{{ adjNote }}

{{ saveBarTxt }}
{{ toastMsg }}
Raise flag on {{ itNumber }}
Add sub-item to {{ asOwnerNumber }}'s BOM
Nothing matches “{{ asQ }}”. Create it below — the name is already filled in.
{{ asCount }}
New sub-item {{ asFormCtx }}
{{ nsDupMsg }}
Kind
{{ nsPreview }}
Change operation op {{ opSeq }} · {{ opWc }}
Nothing in the library matches — operations are defined in Admin → Operations & costing
{{ opLibCount }}
Add operation to {{ addOpOwnerNumber }}
{{ addOpSvcNoneMsg }}
{{ addOpCount }}
{{ addOpLibNote }}
{{ blNumber }} {{ blBtTag }} in {{ blOwnerNumber }}
{{ blStatusTxt }}
Blank in ×
Vendors & prices
VendorVendor PNLeadMOQPrice $
{{ bv.vendor }} best {{ bv.vendorPN }} {{ bv.lead }} {{ bv.moq }}
No vendors on this material yet — attach one above and set their price.

Inventory

Live stock across the shop — fed by receiving (POs in), job completions (finished parts in, materials consumed) and shipping (goods out). Type a counted quantity to record a cycle-count adjustment.

{{ tl.label }}
{{ tl.val }}
{{ tl.sub }}
{{ invCountOffText }}
{{ invCountCfgLine }}
{{ kp.label }}
{{ kp.val }}
{{ kp.sub }}
On the runner’s board · {{ invOpenN }}{{ invRunnerLine }}
{{ ot.bin }} {{ ot.name }} {{ ot.audit }}{{ ot.lines }} {{ ot.why }} {{ ot.age }}
{{ invOpenEmptyText }}
Audits asked for
{{ ab.id }}{{ ab.line }}{{ ab.st }}
{{ ab.prog }}
{{ bb.code }}
Ask for a count
{{ invAskNote }}
Consigned counts due
{{ cd.vendor }} {{ cd.line }} {{ cd.due }} on the board
Every consignor’s count is inside its cadence
Awaiting a manager’s OK
{{ cp.bin }} {{ cp.line }} · {{ cp.val }}{{ cp.by }}
Nothing waiting
Counted · last 30 days · {{ invCountLogN }}
{{ cl.bin }}{{ cl.line }}{{ cl.tail }}
No counts yet — they appear here as the runner closes them
Item On hand Alloc Avail On PO Min Bin tag Location Unit cost Value Status
No items match this filter.
Sub {{ iv.name }}
{{ iv.typeTag }} {{ iv.uom }} {{ iv.allocated }} {{ iv.avail }} {{ iv.onOrder }} {{ iv.min }} {{ iv.loc }} {{ iv.unit }} {{ iv.val }} {{ iv.state }}
{{ btTitle }}
{{ btSub }}
–
Customer price {{ pxTitle }} {{ pxSub }}
On this order
{{ pxNow }}
{{ pxLockNote }}
Item price today
{{ pxCur }}
{{ pxCurNote }}
{{ pxDriftMsg }}

Sales orders

Every order in one list. Approve creates the jobs — Ready for production, or Needs review — and the schedule engine puts them on the floor when the plan starts them. Ship deducts stock and closes the order; orders whose job finishes on the floor turn Ready automatically. Click a row for lines, PO documents and partial shipments.

Blanket orders total commitments released in chunks — every release ships at the price locked when the blanket was created
{{ bl.createdTxt }} {{ bl.valueTxt }} past its target date — the balance stays open ship days {{ bl.bufVal }} nothing fires and no work starts until it's approved master job {{ bl.masterTxt }} runs this blanket's release engine on the Jobs page
LineItemQtyDueEst. pushRunwayLocked priceStatusSub-job
{{ bll.n }}
{{ bll.name }}
{{ bll.qty }} {{ bll.relDueTxt }} {{ bll.pushTxt }} {{ bll.runwayTxt }} {{ bll.price }} {{ bll.stTxt }} {{ bll.subNoTxt }} — locked released
a line = one delivery: it fires ahead of its due date as one child order → one sub-job
Releases
{{ br.date }} · {{ br.how }} {{ br.sum }}
Order analytics
{{ at.label }}
{{ at.val }}
{{ at.sub }}
Monthly sales booked shipped
{{ mo.label }}
Jobs per month completed open
{{ mo.label }}
Sales by customer (booked)
{{ ac.name }}
{{ ac.val }}
No orders booked in this window.
{{ qrCount }} — parts a customer ordered through the portal that aren't in the catalogue yet
{{ qr.id }} {{ qr.part }} {{ qr.desc }} {{ qr.qty }} {{ qr.customer }} {{ qr.so }}
{{ soCountLabel }}
{{ drTitle }}
{{ dr.customer }} — {{ dr.so }} · {{ dr.part }} {{ dr.was }} → {{ dr.want }} {{ dr.movedNote }} “{{ dr.note }}” {{ dr.headline }} {{ dr.cost }}
{{ soUnknownMsg }}
{{ soPg.so }} {{ soPg.stage }} {{ soPg.sub }}
{{ mt.k }}{{ mt.v }}{{ mt.sub }}
{{ soPg.drive }}
{{ ln.no }} {{ ln.picEl }} {{ ln.num }}×{{ ln.qty }} {{ ln.short }} {{ ln.subsShort }} {{ ln.est }}
No lines match this filter.
{{ soPg.sel.ring }}
{{ soPg.sel.lineTxt }} ×{{ soPg.sel.qty }} {{ soPg.sel.name }} Sets the order's date
{{ ft.k }}{{ ft.v }}
{{ soPg.sel.subsHead }}
{{ sb.ring }}
{{ sb.job }} · {{ sb.num }}{{ sb.name }} {{ sb.feedsTxt }} ×{{ sb.qty }} {{ sb.where }} {{ sb.mat }} {{ sb.est }}
{{ soPg.sel.routeHead }}
{{ op.seq }} {{ op.nm }} {{ op.wc }} {{ op.pill }} {{ op.qty }}
{{ soPg.sel.routeNone }}
{{ soPg.sel.matHead }}
{{ mr.job }} {{ mr.item }}
{{ mr.need }} {{ mr.basis }}
{{ mr.pill }} {{ mr.po }}
{{ mr.warn }}
{{ soPg.sel.matTotHead }}
{{ mt.item }}{{ mt.total }}{{ mt.from }}
{{ soPg.sel.matMore }} {{ soPg.sel.matNoneTxt }}
Shipping
{{ soPg.sel.shipNums }}
{{ soPg.sel.shipTxt }} {{ soPg.sel.shipRecs }}
Documents for the customer {{ soPg.sel.docsSub }}
{{ dr.name }} {{ dr.sub }}
{{ dr.warn }}
{{ dg.text }}
Order Customer PO # Progress Promised Est. ready Value Stage
No orders here — create one or scan a customer PO.
{{ sc.so }} {{ sc.date }} · {{ sc.nItems }} {{ sc.customer }} {{ sc.po }} {{ sc.progText }} {{ sc.dueTxt }} {{ sc.estReady }} {{ sc.value }} {{ sc.stage }} {{ sc.jgTag }} {{ sc.provLabel }} no date {{ sc.backLabel }} {{ sc.openJobsWarn }} short {{ sc.engFlagN }} {{ sc.famNote }} {{ sc.gateNote }}
{{ lr.ring }}
{{ lr.number }} {{ lr.name }} ×{{ lr.qty }}
{{ sc.heartBig }}
Build progress {{ sc.heartBigNote }}
{{ sc.srcNote }}
{{ sc.quoteNote }}
{{ sc.promiseNote }}
Drop the PO document here, or click to browse
Part Qty Ship by Unit Value Stage
{{ ln.name }} {{ ln.lnExp }} {{ ln.qty }} {{ ln.lnDue }} {{ ln.unit }} {{ ln.ext }} {{ ln.stage }}
{{ ln.jgTxt }}
{{ ln.availNote }}
added after confirmation — no job yet
{{ sc.expTxt }} {{ sc.expWaivedTxt }}
{{ sc.addNote }}
{{ soRestLabel }}
New sales order

Orders land in New — needs confirmation. Jobs are only created when you drag the order to In production.

{{ nsoScanBusy }}
line quantities are the total commitment · prices lock today · release chunks later from the blanket card
Drop the customer's PO PDF — I'll fill this in Reads PO number, due date, customer and line items · attaches the PDF to the order {{ nsoScanDone }}
New customer
Lines on this order
{{ nl.number }} {{ nl.qty }} due {{ nl.due }} {{ nl.how }} {{ nl.desc }} {{ nl.priceWarn }} {{ nl.price }}
Order total
{{ nsoTotal }}
Schedule splitter — pick the part above, then split its total into dated lines (e.g. 1000 pcs, 200 every 2 weeks)
Release buffer {{ nsoBufTxt }}
Each dated line fires exactly at due date − runway, never earlier. Runway = live build time from the schedule engine (floor load included) + this buffer — a busier floor fires earlier, a quiet one waits longer. Already past that day → fires immediately, HOT.
{{ nsoCalWorkTxt }} {{ wd.txt }}
{{ nsoCalDatesTxt }}
{{ nsoCalWarnTxt }}
{{ nsoCalHead }} Reading the schedule… on plan tight only as HOT not even as HOT
MonTueWedThuFriSatSun
{{ nsoCalPickTxt }} {{ nsoCalHurtTxt }}
Checking the date against the schedule…

Documents & labels

Everything the shop puts on paper. Documents are the PDFs customers and vendors receive; labels are what goes on the parts and the racks. The preview beside each is the real renderer — what you see is what prints.

On this document
Return handling
Company identity shared by every document
A PNG with transparency prints best. The same logo is used on documents and labels.
Size on paper {{ daLogoScale }}%
Placement
Page setup shared
Paper
Header
Accent
{{ daKindLabel }} live preview, sample data

Set the size in inches, pick what appears, and choose where it prints from — shipping labels print from Shipping and sales orders, travelers from job tracking, item and QC labels from the item page, receiving labels at check-in.

{{ lb.sizeNote }}
Content on the label
Orientation
Type size
Barcode

Receiving

Incoming material checked in against its purchase order. Receiving a line adds the quantity to stock, records the put-away location, and moves the PO to Received on the purchasing board automatically.

{{ rcvCount }}
Customer returns expected {{ rcvRmaCount }}
{{ rr2.id }} {{ rr2.part }} {{ rr2.sub }} {{ rr2.customer }} {{ rr2.due }}
Repair-and-return parts only. Booking them in puts them into the location shown and moves the RMA to Parts received — it does not touch the sales order or the customer's stock.
{{ noRcvMsg }}
{{ rp.id }} {{ rp.vendor }} {{ rp.status }} part received due {{ rp.due }} {{ rp.outstanding }}
Delivery documents Packing slip required to complete
{{ rl.btTag }} {{ rl.name }} {{ rl.ordered }} ordered {{ rl.already }} {{ rl.left }}
{{ rl.outsideNote }}
{{ rl.polTxt }}
{{ rwz.code }}
Recently received
{{ rd.id }} {{ rd.number }} {{ rd.vendor }} short-closed late {{ rd.qty }} {{ rd.loc }} {{ rd.date }}

Shipping

Showing {{ shipFocusSo }} only — sent here from Orders

Open sales-order lines, staged in two steps: Pack pulls finished parts from stock onto the dock (inventory drops immediately), Ship sends whatever is packed. Pack less than the full order for a partial shipment — the line stays open for the remainder, and unpacking returns parts to stock.

{{ noShipMsg }}
Outside process — parts going out
{{ so2.id }} {{ so2.vendor }} {{ so2.svc }} due back {{ so2.due }}
Ship to: {{ so2.shipTo }}
{{ so2.waitWhy }}
{{ sl.number }} {{ sl.name }} {{ sl.job }} {{ sl.qty }} {{ sl.staged }}
{{ shipCountLabel }}
{{ sg.so }} {{ sg.customer }} {{ sg.po }} {{ sg.promise }} {{ sg.progress }} {{ sg.openLabel }} partially shipped
{{ sr.name }}
{{ sr.qty }}
{{ sr.onHand }} {{ sr.shadow }} {{ sr.jobLabel }} {{ sr.loc }}
{{ sr.freshLabel }} {{ sr.partialLabel }} {{ sr.packedLabel }}
{{ sr.afterShip }}
{{ shipRestLabel }}
Staged on the dock
{{ packedPopMsg }}
Packing slip
{{ slipSo }} · {{ slipCust }}
{{ slipPo }}
{{ slipDate }}
{{ slipCount }}
Part Ordered In this box
{{ ps.number }} {{ ps.rev }} {{ ps.name }} {{ ps.prior }} {{ ps.ordered }} {{ ps.sending }} {{ ps.backLabel }}
This shipment is partial. The balance stays on the order and follows in a later shipment.
Outside process despatches
{{ sd.id }} {{ sd.vendor }} {{ sd.qty }} {{ sd.when }} {{ sd.carrier }} {{ sd.st }}
Nothing has shipped yet — every Ship makes one shipment record here, the number on the packing slip.
ShipmentShippedOrder · customerLines · pcsCarrier · trackingSigned packing listInvoice
{{ r.id }} {{ r.atTxt }} {{ r.so }} {{ r.cust }} PO {{ r.po }} · {{ r.parts }} {{ r.linesTxt }} {{ r.carrierTxt }} {{ r.tracking }} {{ r.stTxt }} {{ r.invTxt }}{{ r.invSub }}
No shipments match.
{{ shpCountLabel }}
Packing list{{ sgnSo }} · {{ sgnCust }} {{ sgnId }}
{{ sgnShop }}Packing slip {{ sgnId }}{{ sgnSo }} · Your PO {{ sgnPo }}{{ sgnDate }}
Deliver to{{ sgnCust }}
PartOrderedIn this box
{{ l.number }} {{ l.rev }}{{ l.name }}{{ l.before }}{{ l.ordered }}{{ l.qty }}{{ l.toFollow }}
{{ sgnPcs }}
Signed by
×
Date
Check the counts against the pallet, then hand the device to whoever is taking the parts. Nothing has shipped yet — the shipment is created when they sign, or when you tap Ship.
{{ sgnShop }} · dockapp locked
{{ sgnHeadline }} {{ sgnSo }} · {{ sgnCust }} · {{ sgnPcs }}
{{ l.qtyN }} ×{{ l.number }}{{ l.name }}
Who is signing
Condition
Sign here
Sign with your finger ×
By signing you confirm you have {{ sgnVerb }} the pieces listed above in the condition stated. A copy goes to {{ sgnCust }}.
{{ sgnDoneTitle }}{{ sgnSo }} · {{ sgnCust }}
{{ sgnDoneHead }}{{ sgnSummary }}
{{ sgnSlipLine }}
{{ sgnInvLine }}
{{ sgnPortalLine }}
Proof of collection is on file. The delivery copy — signed at {{ sgnCustShort }}'s dock — is still expected; the chase timer starts today.

Invoicing

Every despatch raises an invoice against its sales order the moment it ships — one invoice per order per ship day, numbered from the shipment records. QBO sync hooks in here once the ERP is live.

{{ invBackLabel }}
{{ noInvMsg }}
{{ iv.so }} {{ iv.customer }} {{ iv.po }} {{ iv.dateTxt }} due {{ iv.dueTxt }} {{ iv.nLines }} {{ iv.totalTxt }} {{ iv.statusTag }}
PartShippedUnitAmount
{{ il.number }} {{ il.name }} {{ il.qtyTxt }} {{ il.unitTxt }} {{ il.extTxt }}

Jobs

New stock job

Builds parts for inventory with no sales order behind it. The job goes through the same approve → release flow, and finished parts land in stock.

Every open sales-order line becomes a job. Approve it, schedule the due date, then release it to the floor — held jobs vanish from the operators' Ready list instantly.

Department performance — points this week
running total from 10 days ago · dashed = 2-day pace · points reset monthly
{{ dgChart }}
{{ dbd.boardLabel }}
No jobs yet — convert a quote to a sales order and the job appears here for approval.
{{ orphHead }} {{ orphSub }}
{{ ob.job }} {{ ob.number }} {{ ob.why }} {{ ob.work }}
{{ engHead }} {{ engSub }}
{{ en.job }} {{ en.number }} {{ en.meta }} {{ en.frozen }} {{ en.who }}
{{ jobCountLabel }}
{{ cb.number }} {{ cb.name }} — {{ cb.msg }}
Master jobs — blanket orders one per part · sub-jobs appear as releases confirm; planned chunks wait as ghosts with their computed fire day
{{ mj.autoBadge }}
{{ pp.number }} {{ pp.txt }} {{ pp.due }} {{ pp.ovTxt }}
{{ sj.id }} {{ sj.so }} {{ sj.item }} {{ sj.ops }} due {{ sj.due }} {{ sj.label }}
{{ pr.qty }} released {{ pr.date }} — waiting in New, confirm to create its sub-jobs
due {{ ms.due }} {{ ms.qty }} {{ ms.fireTxt }}
{{ j.picEl }}
{{ j.heart }}
{{ j.number }}{{ j.btTag }}
{{ j.name }}
{{ j.customer }} · {{ j.so }} · {{ j.qty }} {{ lk.so }} · {{ lk.qty }} {{ j.loc }} {{ j.statusLabel }} Late Custom build Engineering {{ j.flagTxt }} Material late Sub-assembly {{ j.famKidDue }} {{ j.famBottleneck }}
{{ j.revSummary }}
{{ j.revRunMsg }}
Materials
{{ r.tag }} {{ r.number }} {{ r.name }} {{ r.opTxt }} {{ r.qtyTxt }}
Routing
{{ r.tag }} {{ r.label }} {{ r.qtyTxt }}
Drawings
{{ r.tag }} {{ r.label }} {{ r.qtyTxt }}
{{ j.revOthersLabel }}
{{ j.revNote }}
Auto release
{{ j.arTxt }}
{{ j.runningNow }}
QC Strict {{ j.shortAtTxt }} {{ j.shortAtMkLabel }} {{ j.splitTxt }} Admin / Prod Mgr approves
{{ jobRestLabel }}
Quote build — {{ qbTitle }}
{{ qbSub }}
On this quote{{ qbQty }}the line's quantity
Cost each{{ qbCostWas }}{{ qbCost }}{{ qbCostSub }}
Price each{{ qbPrice }}{{ qbPriceSub }}
Margin{{ qbGmWas }}{{ qbGm }}{{ qbGmSub }}
{{ qbChHead }}
Where does this build go?
{{ qbAskTxt }}
{{ qbUpHead }} {{ qbUpSub }}
{{ ur.title }} {{ ur.sub }}
{{ qbUpKept }}
Job build — {{ jeJob }}
{{ jeNumber }} · {{ jeName }} — changes are stored on this job only; the original item stays untouched
Update the original item too?
The build changes are saved on {{ jeAskJob }} only. Apply the same routing and BOM to {{ jeAskItem }} so future jobs and quotes use them?
{{ jdId }} is no longer here
It may have shipped and been archived, or the demo data was reset.

{{ jdId }}

{{ jdName }} · {{ jdQty }} · {{ jdCustomer }}
{{ jdStatusLabel }} {{ jdRiskLabel }}
{{ jdParentLabel }}
{{ jpHead }}{{ jpSub }}
{{ mi.k }}{{ mi.v }}
Needs you · {{ jpNeedN }}
Not released to the floor yetRelease puts it on the floor and in the schedule.
{{ jdRevOldT }}{{ jdRevOldSub }}
The part changed after this job was released{{ jdStaleMsg }}
{{ jdBlockerMsg }}The floor is waiting on an answer.
Waiting on the office
{{ jp.text }}
On holdOff the floor Ready list until someone resumes it.
{{ jpMatOwnT }}{{ jpMatOwnWhy }}
{{ x.title }}{{ x.why }}
{{ c.t }}
{{ x.impact }}
{{ jpNoneT }}
The build · {{ jpBuildN }} sub-jobs{{ jpBuildLv }}
{{ g.n }} {{ g.t }}
{{ gr.t }}
{{ jdId }}’s own work{{ jpOwnSub }}
Operations {{ jdOpsCount }} · {{ jdActTot }} clocked of {{ jdEstTot }} estimated
OperationWork centerActual / estOperatorQueueStatus
{{ o.seq }} · {{ o.name }}
{{ o.note }}
{{ o.wc }}
{{ o.act }} / {{ o.est }} {{ o.varLabel }}
{{ o.by }} {{ o.waitLabel }} {{ o.statusLabel }}
{{ o.moveLabel }}
{{ jdMatHead }}
{{ jm.number }} {{ jm.name }} {{ jm.need }} {{ jm.at }} {{ jm.ref }} {{ jm.orderBy }}
Material still to consume
{{ jdMatShortMsg }}
{{ jdRelShortTxt }}
{{ mt.number }} {{ mt.name }} need {{ mt.need }} {{ mt.allocLabel }} {{ mt.gap }} {{ mt.cover }} {{ mt.subTxt }}{{ mt.laterTxt }}
{{ jdKidsTitle }} must land before the op that consumes them
{{ k.number }} · {{ k.name }} feeds {{ k.forOp }} {{ k.qty }} {{ k.prog }} due {{ k.due }} {{ k.status }}
{{ jdOrdersTitle }}
{{ so.so }} {{ so.customer }} PO {{ so.po }} {{ so.qty }} need {{ so.due }} {{ so.status }} {{ so.shippedLabel }}
What the customer sees on the portal
{{ st.name }}
{{ jdPortalPendTxt }}
Job thread
{{ mg.byI }}
{{ mg.by }} {{ mg.wc }} {{ mg.when }} {{ mg.toName }} Blocker
{{ mg.text }}
{{ jp.text }}
{{ r.head }}
Documents
No drawings or work instructions attached to this part yet — the floor is running on the routing alone.
History who changed what on this job
{{ au.when }} {{ au.by }}
{{ au.action }}
{{ au.detail }}
Run time {{ jdCmpNow }} {{ jdCmpChip }}
Clocked {{ jdCmpNow }} Est {{ jdCmpEst }} Typical {{ jdCmpAvg }}
QC Strict

Operator metrics

This page is owner and admin only.

Operator metrics

{{ omNote }}

No operations were completed in {{ omDaysLabel }}, so there is nothing to measure yet.
Most operations completed {{ omMost }}
Consumables — use against pace
same part, same operation
{{ omCsNone }}
{{ cd.tip }}
quicker than peersslower than peers →
up = more consumable per piece than peers on the same part and operation
{{ cf.name }} {{ cf.msg }}
{{ omCsHeld }}
{{ od.name }}
Best pace · {{ od.bestPace }} Best QC · {{ od.bestQc }}
{{ omInit }}
{{ omName }}
{{ omSummary }}
{{ omScore }}
{{ omThin }}
{{ ob3.label }} {{ ob3.val }}
Kiosk record
{{ omFixes }}
Stations run
{{ os.name }} {{ os.qc }} {{ os.ops }} {{ os.hours }} {{ os.rel }}
Consumables against peers
{{ omConsHead }}
{{ cr2.part }} {{ cr2.name }} {{ cr2.rel }}
Qualified for
{{ oq.name }}
{{ omLegacy }}

Departments

yellow at % · red wd early

Group work centers into departments. Each earns points against the smart schedule — on-time and early ops score, behind-schedule ops cost, zero scrap pays a bonus. Points reset monthly; hit an achievement threshold and the reward is on the house.

Points this week, cumulative
running total from 10 days ago · dashed = recent pace, 2 working days out
{{ dgChart }}
Load turns amber at % and red over % · suggest overtime up to h a person after shift, then
no location added {{ dp.rank }} {{ dp.mtdLabel }} {{ dp.life }}
{{ dp.next }} {{ dp.won }}
Work centers:
Consumables: {{ dcc.label }}
{{ dp.pressTxt }} {{ dx.txt }}
{{ dp.otTxt }}
{{ bw.txt }}

Point metrics — how ops score against the schedule

{{ pr.unit }} {{ pr.label }} {{ pr.hint }}
Applied when an op is completed, measured against that op's due time in the smart schedule. Changes affect future completions only.

Achievements — points thresholds & rewards

pts → {{ ac.winners }}

Points log

{{ lg.date }} {{ lg.dept }} {{ lg.pts }} {{ lg.text }}

Arthur

His daily briefing, what the shop looks like right now, and a place to ask about it. Arthur reads the live numbers on this page — he never changes anything.

ARTHUR Daily briefing {{ adBriefMeta }} Arthur is writing…
{{ adBriefText }}
{{ bt.t }}
{{ adBriefReadTxt }}·{{ adBriefUnreadTxt }}
No briefing yet — Regenerate now writes one from the live numbers.
Ask Arthur about the shop
{{ cm.text }}
{{ cm.chartTitle }}
{{ cb.lb }}
{{ cb.v }}
Arthur is reading the shop…
{{ advErr }}

This week's numbers

the same figures Arthur answers from
{{ pc.label }}
{{ pc.val }} {{ pc.trend }}
history builds daily
{{ pc.sub }}
Bottleneck — queued hours at the next op
nothing queued — no released work waiting
{{ ht.op }}
{{ ht.val }}
Backlog vs 2-week capacity
no open work on any work center
{{ cp.op }}
{{ cp.pct }}
line = machine hours available over 10 workdays
At-risk jobs
nothing at risk — every open job has slack
{{ fl.heart }}
{{ fl.no }}{{ fl.cust }}
{{ fl.label }}
Arthur noticed
nothing unusual this week
{{ an.text }}
Arthur’s watch {{ awMode }} {{ awN }}
{{ awSub }}
nothing is holding — every live job is owned, on time and moving
{{ aw.title }} {{ aw.detail }} {{ aw.fixLabel }}
{{ aw.toTxt }} {{ tp.txt }}
Scoreboardagreed fixes · 90% of 10 = ready to act
{{ sc.label }} {{ sc.seen }} seen · {{ sc.open }} open {{ sc.pct }} ready
“{{ sc.reasons }}”
The % is how often the fix he proposed matched what was done — from your marks, or read off the audit trail when it is unambiguous.

Admin — bug reports & ideas

{{ brOpenN }}
Nothing reported yet — the bug button in the sidebar, Messages, and the floor all file here.
{{ br2.tgt }}
{{ br2.kindLabel }} {{ br2.title }} {{ br2.meta }}
{{ bc.who }}: {{ bc.text }}
Prompt for Claude — review before sending
{{ br2.prompt }}
Arthur is reading the build files…
Diagnosis — read from the running build’s own source
{{ br2.diag }}
{{ advDigestText }}
{{ dcapPct }} shop capacity
{{ dcapSub }}
{{ dcapWorst }}
{{ dcapOt }}

Dashboard

{{ ft.label }} {{ ft.val }} {{ ft.sub }} {{ ft.trend }}
Revenue by month booked shipped
{{ fm.label }}
Gross margin by month
{{ fr.label }}
{{ fr.val }} {{ fr.money }}

Jobs running over estimated cost

Every active job is tracking at or under its estimated cost.
{{ fo.id }}
{{ fo.number }}
{{ fo.customer }}
est {{ fo.est }} actual {{ fo.act }} {{ fo.over }}

Losses — work nobody will take

No losses in this period — nothing with work on it was deleted or cut back.
{{ finLossTotal }}{{ finLossCount }} in this period
{{ fl.job }}
{{ fl.number }}
{{ fl.what }}
{{ fl.when }} {{ fl.cost }}

Quoted vs actual — finished jobs

No finished jobs with logged run time yet — estimate accuracy appears once the floor completes ops.
{{ fj.id }} {{ fj.number }}{{ fj.customer }} est {{ fj.est }} actual {{ fj.act }} {{ fj.variance }}
{{ pt.label }} {{ pt.val }} {{ pt.sub }}
Utilization by work center — {{ dashMoLabel }}
{{ pw.name }}
{{ pw.pct }} {{ pw.hrs }}
Operations completed per day — last two weeks
No completions logged yet — this fills in as the floor closes ops.
{{ pd.n }}
{{ pd.label }}
Where parts wait — average dwell between ops, by receiving station
{{ perfBufSet }}
Nothing measured yet — dwell is timed from the moment an op is closed to the moment the next one is started, so this fills in as the floor works through jobs.
{{ pb.name }}
{{ pb.avg }} {{ pb.sub }}
{{ perfBufOver }}
Average wait between ops, by week
{{ bw.val }}
{{ bw.label }}
The plan moves parts on the moment an op closes, so this wait is time the schedule does not see — fix the handoff at the slowest stations first.
{{ dt.label }} {{ dt.val }} {{ dt.sub }}
Stock audit {{ dauHead }}
{{ t.k }}{{ t.v }}{{ t.sub }}
Most value on the least trusted counts
{{ w.sub }}{{ w.value }}
Consumables cover {{ dcvHead }}
{{ cv.num }} {{ cv.days }}
On-hand ÷ the last 30 days' draw.
Department performance — points this week
running total this week · dashed = 2-day pace
{{ dgChart }}
{{ dbd.boardLabel }}

Late-risk alerts

Every active job is projected to finish on time.
{{ dr.heart }}
{{ dr.id }}
{{ dr.number }}
{{ dr.name }} · {{ dr.customer }}
{{ dr.due }} {{ dr.finish }} {{ dr.miss }} {{ dr.matMsg }}

Schedule

{{ schedSummary }}

A plan rebuilt from the floor as things change: remaining op time is dispatched to each work center — hot jobs first, then your drag order, then earliest due — on the shop calendar. Drag cards to re-prioritize; edit due dates and hot flags right here.

{{ drTitle }}
{{ dr.customer }} — {{ dr.so }} · {{ dr.part }} {{ dr.was }} → {{ dr.want }} {{ dr.movedNote }} “{{ dr.note }}” {{ dr.headline }} {{ dr.cost }}
What-if mode — due dates, hot flags and drag order below are staged ({{ wifCount }} changed). Nothing is saved until you apply.
{{ wifBufMsg }}
Change anything on this page — drag jobs to re-prioritize, edit a due date, toggle Hot. Every edit is held here instead of hitting the live plan.
The schedule, projected finishes, Gantt and overtime advisor all recalculate against your staged version, so you see the knock-on effects immediately.
The floor keeps running the real plan. Staged jobs are marked staged; nobody else sees these numbers.
Apply changes commits every staged edit at once; Discard throws them away and snaps back to the live schedule.
WIP buffer between operations

Parts do not arrive at the next station the moment an op ends — they are moved, counted and queued. The scheduler leaves this gap after every operation, and every promised date, quote lead time and pull-in answer is built on it.

{{ bufHotNote }}
{{ bufPrevHead }} {{ bufPrevLate }}
{{ bufPrevAvg }} {{ bufPrevWait }}
{{ bufNewLateMsg }}
{{ bl.id }} {{ bl.who }} {{ bl.miss }}
Changing this is written to the audit log.
Read-only — admin or a role with scheduling permission sets the buffer.
Shop calendar
Smart-schedule re-plan times

The run order re-plans and re-freezes at each time below. No times = shift end. It always also re-plans at first open of the day, on HOT arrivals and material receipts, or by hand with Recompute.

{{ rp.label }} none set — re-plans at shift end
Holidays {{ ch.h }}
Lunch & breaks {{ calBrkNote }}
{{ cb.range }}
No breaks — the shift is treated as producing straight through.
{{ otHeadline }}
{{ ot.label }}
Moving someone would help last resort — their own department is clear and the station is short
{{ cm.who }} {{ cm.what }} {{ cm.gain }} {{ cm.cost }}
{{ ganttTitle }} {{ ganttPlanNote }}
Running Ready Pending Paused / behind plan Past due date In flow state Flagged item
{{ gd.label }}
{{ gh.label }}
{{ gp.name }}{{ gp.ppl }}
{{ gc.txt }}
{{ gl.idleNote }}
{{ gb.job }}
{{ gb.op }}
{{ gb.crewN }}
{{ gr.job }} op {{ gr.seq }} · {{ gr.op }} {{ gr.number }} {{ gr.itemName }} {{ gr.whenTxt }} {{ gr.dur }} {{ gr.stTxt }}
Click a bar for full op detail, or a work-center name to list its ops with times. A hatched band before a bar is time the machine is free but the material is not in yet.
Nothing to schedule — approve or release a job and it appears here with planned times.
{{ sj.id }} {{ sj.number }} {{ sj.name }} staged Not released
{{ sj.customer }} · {{ sj.qty }}
{{ sj.finish }} {{ sj.slackLabel }} material, not capacity {{ sj.remain }}
{{ sj.matMsg }} {{ sj.matOrderBy }}
{{ so.seq }} {{ so.name }} {{ so.wc }} {{ so.dur }} {{ so.when }} {{ so.state }}
{{ schedRestLabel }}
{{ goJob }} · op {{ goSeq }} {{ goWc }} {{ goState }}
{{ goNumber }}
{{ goItemName }}
{{ goName }}
{{ goQty }} {{ goCustomer }}{{ goDue }}
{{ goWhen }}
{{ goRemain }}
{{ goSetup }}
{{ goThru }}
In flow state! — parts moving to the next op
{{ goLateNote }}
{{ goMatMsg }} {{ goMatOrder }}
Cut file — {{ goDxf }}
{{ goNote }}
Open flags on this item
{{ gf.text }}
{{ gf.by }} · {{ gf.date }}

Work-center queues

{{ sw.name }}
{{ sw.load }}
{{ sq.label }} {{ sq.when }}
Several people are signed in here — tap your name above so your work and your messages go out under the right name.
{{ fSdItem }} {{ fSdQty }} {{ fSdNo }}
{{ sg.label }} {{ sg.at }}
{{ fSdNote }}
Floor Ops
{{ fThreadTitle }} Signed in on this terminal as {{ fMsgWho }}
{{ fMsgNoWhoMsg }}
{{ tm.text }}
{{ tm.by }} blocker
{{ tm.actLine }}
{{ tm.actLine }} — sent
Arthur is looking it up…
{{ r.head }}
To
Nobody by that name.
{{ r.head }}
Message
{{ fNewHint }}
{{ fMsgNoneMsg }}
{{ fDeptName }} {{ fDeptPts }}
{{ fDeptNext }}
cumulative · this week
{{ dgChart }}
{{ fb.label }}
cumulative · this week
{{ dgChart }}
{{ fEnvLabel }}
Did you work later than the shift?
{{ acCount }}
{{ acJob }} · op {{ acSeq }} — {{ acOpName }}
{{ acWc }} · {{ acWho }}
Left running past {{ acShiftEnd }}. We have banked {{ acBanked }} up to shift end and are holding {{ acHeld }} until you say.
If you stayed on, what time did you finish?
{{ acErr }}
Latest it could have run to is {{ acLatest }}. This does not count against you — the shop stopped, not you.
{{ dpInit }}
{{ dpName }}
{{ dpWhat }}
Your PIN signs off the quantity, the material it draws and the time on this op
{{ dpErr }}
{{ mxGateInit }}
{{ mxGateName }}
Your PIN, so nobody else on this kiosk can open your numbers
{{ mxErr }}
{{ mxInit }}
{{ mxName }}
{{ mxToday }}
No finished operations on record in the last 30 days, so there is nothing to show yet.
{{ mxScore }} 100 is the usual pace
with nothing gone wrong
{{ mxPace }}
{{ mxQc }}
{{ mxOps }}
{{ mxOnTime }}
{{ mxKiosk }}
{{ mxTColor }}
{{ mxTIcon }}
{{ mxTPhoto }}
{{ mxTPin }}
{{ mxTPinNote }}
{{ mxTPrefNote }}
{{ engHead }} Don't run these — engineering is working on them. The ops come back on their own when it's cleared.
{{ en.number }} {{ en.job }} {{ en.frozen }}
{{ en.noteShown }}
{{ en.who }}

{{ fEmptyMsg }}
Consumables {{ rbWho }} {{ rbAvg }} {{ rbQueueN }}waiting
Queue · stopped first, then oldest
STOPPED didn’t arrive — again {{ rq.item }} × {{ rq.qty }} {{ rq.age }}
{{ rq.name }} · {{ rq.onHand }}
{{ rq.eats }}
{{ rq.init }}{{ rq.who }} · {{ rq.where }} · {{ rq.job }}
pick · {{ rq.shelf }} bring to · {{ rq.where }}
Queue clear — nobody is waiting
In hand · walking
{{ rc.item }}× {{ rc.qty }}{{ rc.age }}
{{ rc.who }} · {{ rc.where }}
pick · {{ rc.shelf }} bring to · {{ rc.where }}
Nothing in hand
Restock · shelves below min
{{ rs.line }} {{ rs.sub }}{{ rs.note }}
Every shelf is above its min
Counts · {{ cycN }} open{{ cycQuietNote }}
{{ tk.bin }} {{ tk.binName }} Audit {{ tk.why }}
{{ tk.lines }}
count at · {{ tk.bin }} · {{ tk.zone }}
Second count — two matching counts post the difference.
Blind count — type what you see; the record shows after.
{{ cr.number }}{{ cr.name }} {{ cr.uom }} {{ cr.delta }}
No bins to count right now
Counted today · {{ cycDoneN }}
{{ cd.bin }}{{ cd.result }}{{ cd.at }}
Delivered today · {{ rbDoneN }}
{{ rd.line }}{{ rd.at }} · {{ rd.took }}
Nothing delivered yet today

Every timer on the clock right now, grouped by job. {{ fLiveEditNote }}.

Who can see the Live floor

Tick the roles allowed to open this board. Everyone else loses the Live floor button. Changes are logged.

{{ lr.name }} {{ lr.note }} {{ lr.who }}

Nothing on the clock — start an op from the Ready tab and it appears here.
hot {{ lg.number }} {{ lg.name }} · {{ lg.customer }} due {{ lg.due }}
{{ lo.stateChip }}
{{ lo.name }}
{{ lo.wc }} · op {{ lo.seq }}
{{ lo.byAv }} {{ lo.by }}
{{ lo.timer }}
{{ lo.overNote }}
Op audit
{{ audSubtitle }}
days
{{ as2.k }}
{{ as2.v }}

{{ audEmptyMsg }}
{{ ar.number }} suspect
op {{ ar.seq }} {{ ar.opName }} · {{ ar.wc }}
{{ ar.by }}
{{ ar.doneAt }}
{{ ar.est }} → {{ ar.act }}
total on the clock
{{ ar.perPc }}
{{ ar.qtyNote }}
{{ ar.miss }}
{{ ar.dollar }}
{{ ar.rateNote }}
Clocked time was {{ ar.act }} — correct it to
{{ nb.no }} {{ nb.mat }} {{ nb.thick }} {{ nb.nOps }} · batch locked, new jobs stay out {{ nb.bubbleLabel }} {{ nb.bubbleLabel }} {{ nb.bubbleLabel }} {{ nb.bubbleLabel }}
{{ nb.waitLabel }} {{ nb.masterElapsed }} {{ nb.holdLabel }}
Nested as {{ nb.no }} {{ nb.nestLine }} {{ nb.sentLabel }}
{{ nb.reopenWarn }}
Editing — remove parts below, add any listed underneath, then re-lock. It stays {{ nb.no }}.
{{ nb.fitsLabel }}
Material consumed — full sheets only
Estimated: {{ er.label }}
{{ sh.name }} {{ sh.onHand }} {{ sh.estHint }}
{{ sh.name }} {{ sh.onHand }} {{ sh.estHint }} sheets
{{ sh.shortTxt }}
Used remnant
{{ bo.number }}{{ bo.job }} · op {{ bo.seq }}
{{ bo.name }}
{{ bo.splitNote }}
{{ bo.qty }} {{ bo.stLabel }}
Move — shop plan {{ mvHint }}
{{ mvArmHint }}
This item has no home bin yet — set one on the item page, or in a location's "Stored here" list.
{{ ms.name }}
{{ mz.code }} {{ mz.n }}
{{ mp.short }} {{ mp.chip }}
{{ mvCadLabel }}
{{ mvSpotLabel }} outside the expected department
drag again to nudge
Drag a marker to where you actually left the pallet, nudge it as often as you like, then Confirm. Wheel or pinch zooms, dragging the floor pans, double-tap fits.
Move ops — WIP waiting for a lift
Nothing waiting — a move card appears the moment an op completes.
{{ mt.number }}{{ mt.job }}HOTCALLED
{{ mt.qty }} · after {{ mt.opName }}{{ mt.slackTxt }}
{{ mt.fromName }} {{ mt.toName }} on the forks — {{ mt.runBy }}
In {{ mvSelCode }} — drag onto the plan to move
Nothing in this zone.
{{ mc.number }}WIP{{ mc.refTxt }}
{{ mc.binCode }} · {{ mc.name }}
{{ mc.qty }} {{ mc.uom }}
Internal stores {{ fStoresWho }}

Take what you use — stock drops and the draw is recorded against your name. Dip below min and a purchase request goes to purchasing on its own.

{{ fStoresFallbackNote }}
{{ fStoresRunnerNote }} — request and it comes to you
My requests
{{ sm.line }}{{ sm.status }}
{{ sm.sub }}
{{ fStoresEmptyMsg }}
Nothing matches that search on the shelves you can see.
{{ ss.label }}
{{ si.label }} {{ si.n }}
{{ si.number }} {{ si.name }} {{ si.onHand }}
{{ si.number }} {{ si.name }} {{ si.onHand }}
Plan {{ planSub }}
{{ planFlagTxt }}
{{ planDraftTxt }}
{{ planEmptyTxt }}
{{ pr.n }}
{{ pr.job }}{{ pr.number }}HOT
{{ pr.opName }} · {{ pr.wc }}
{{ pr.when }}{{ pr.needTxt }}
{{ pr.crew.crewTxt }} {{ pr.crew.crewTxt }} {{ pr.onNow }} {{ pn.name }} Your lead has you on this next
{{ fWaitTitle }} — not on a nest yet · {{ fWaitNoCut }}
{{ fWaitTitle }} Not on a nest yet. They reach the laser as a nest, when one is pushed from CAM · Laser — nothing to start here.
{{ wg.label }}{{ wg.n }} · {{ wg.pcs }}
{{ wg.note }}
{{ wo.number }} {{ wo.name }} {{ wo.job }} {{ wo.qty }} no cut fileoffice told
General WIP — parked work {{ fGwN }}
Nothing routes work out of here — call what you need
{{ gw.number }} {{ gw.job }} HOT
{{ gw.qty }} · next {{ gw.nextTxt }} · {{ gw.wc }}
{{ gw.callTxt }}
Ordered by the smart schedule — run top to bottom to hit due dates
{{ c.job }} · op {{ c.seq }} {{ c.opName }} Hot {{ c.waitTxt }}
{{ c.wc }}
{{ c.job }} · op {{ c.seq }} Hot Late On hold Engineering Material late Sub-ASM Waiting on {{ c.blockedBy }} {{ c.askText }} {{ c.msgN }}
{{ c.ptsTxt }} {{ c.wc }}
Held by engineering. {{ c.protoHeldWhy }} Stop your clock and put it down — it comes back when they release it.
{{ c.number }}
{{ c.opName }}
{{ c.qty }} {{ c.est }}{{ c.crewTxt }}{{ c.crewTxt }}Your lead has you on this next{{ c.planNamedShort }} {{ c.customer }} {{ c.loc }}
{{ c.schedTileTop }}
{{ c.schedTileDay }}
{{ c.schedTileMon }}
{{ c.schedTimes }}
{{ c.schedNote }}
{{ c.schedRisk }}
In flow state! — parts moving to the next op
{{ c.trackTxt }}
{{ c.recNote }}
{{ c.callMsg }}
{{ c.blocked }}
{{ c.arthurTxt }}
{{ c.advWarn }}
Parts collected from op {{ c.prevOp }}
{{ c.advHint }}
{{ c.elapsed }} {{ c.remain }}
{{ c.eta }}
Paused at {{ c.elapsed }} — time is kept
Done in {{ c.doneIn }}
{{ cf.mini }}
{{ c.outTxt }}{{ c.outSub }}
{{ fbEmptyTxt }}
{{ g.title }}{{ g.n }}
{{ rw.picEl }}
{{ rw.badgeLabel }}{{ rw.badgeSub }}
{{ rw.title }}{{ rw.opLine }}{{ rw.lateTxt }}
{{ rw.item }} {{ rw.detail }}
{{ av.init }}{{ rw.whoTxt }}
{{ rw.badgeLabel }}{{ rw.badgeSub }}
{{ rw.title }}{{ rw.opLine }}
{{ rw.item }} {{ rw.detail }}
{{ fbWaitTxt }}
The department board shows each department’s running, ready and late work.
{{ fbEmptyTxt }}
{{ g.title }}{{ g.n }}
{{ rw.picEl }}
{{ rw.phChip }}{{ rw.title }}
{{ rw.opLine }} {{ rw.item }} {{ rw.detail }} {{ rw.lateTxt }}
{{ av.init }}{{ rw.whoTxt }}
{{ rw.phChip }}{{ rw.title }}
{{ rw.opLine }} {{ rw.item }} {{ rw.detail }}
{{ fbWaitTxt }}
Departmentstap one to see its work
{{ c.job }} · op {{ c.seq }} · {{ c.opName }} {{ c.waitTxt }} Hot {{ c.wc }}
{{ c.job }} · op {{ c.seq }} Hot Late On hold Engineering Material late Sub-ASM Waiting on {{ c.blockedBy }} {{ c.msgN }}
{{ c.ptsTxt }} {{ c.wc }}
Held by engineering. {{ c.protoHeldWhy }} Stop your clock and put it down — it comes back when they release it.
{{ c.number }}
{{ c.opName }}
{{ c.qty }} {{ c.est }}{{ c.crewTxt }}{{ c.crewTxt }}Your lead has you on this next{{ c.planNamedShort }} {{ c.customer }} {{ c.loc }}
{{ c.schedTileTop }}
{{ c.schedTileDay }}
{{ c.schedTileMon }}
{{ c.schedTimes }}
{{ c.schedNote }}
{{ c.schedRisk }}
In flow state — parts moving to the next op
{{ c.trackTxt }}
{{ c.recNote }}
{{ c.callMsg }}
{{ c.blocked }}
{{ c.arthurTxt }}
{{ c.advWarn }}
Parts collected from op {{ c.prevOp }}
{{ c.advHint }}
{{ c.elapsed }} {{ c.remain }}
{{ c.eta }}
Paused at {{ c.elapsed }} — time is kept
Done in {{ c.doneIn }}
{{ c.outTxt }}{{ c.outSub }}
{{ fRestLabel }}
{{ foAboveTitle }}

{{ foAboveLead }}

{{ ch.label }}
{{ ar.title }} {{ ar.stLabel }} {{ ar.wc }}
{{ pp.init }}{{ pp.name }}{{ pp.sub }}
{{ ar.nobodyTxt }}
{{ ar.counted }} · {{ ar.countRest }}
{{ ar.heldTxt }}
{{ ar.matLine }}
{{ ar.stopsTxt }}
{{ ar.offTxt }}
{{ foJob }} · op {{ foSeq }} {{ foWc }} In flow state!
{{ foNumber }}
{{ foItemName }}
{{ foRevTitle }}{{ foRevSub }}
{{ foName }}
{{ foQty }} {{ foEst }} {{ foCustomer }}{{ foDue }}
{{ foSetup }}
Points at stake {{ foPtsStake }} {{ foPtsDrop }}
Ahead {{ foPtsV1 }} On time {{ foPtsV2 }} Behind {{ foPtsV3 }}
{{ foNeedBy }}
{{ foThru }}
Load on the brake
{{ bt.role }}{{ bt.txt }}{{ bt.tag }}
{{ foBrkNote }}
CAD model — tap to enlarge
{{ foNumber }} {{ foCadFullHint }}
Measurements to take
{{ foQcFullCount }}
{{ qs.i }}. {{ qs.text }} critical
{{ qs.meta }}
{{ qm.dotNum }} {{ qm.what }} · {{ qm.label }} {{ qm.nom }} {{ qm.tol }} {{ qm.pillTxt }}
{{ qm.lo }}
{{ qm.hi }}
{{ qm.verdictTxt }}
{{ qv3.t }}
Tap a measurement to open it — the model frames that dimension and the tolerance decides the result.
Op image
Cut on nest {{ foNestNo }}
{{ foNestMeta }}
{{ foNoDxfTxt }}
Cut file — {{ foDxfName }}
{{ foDxfMeta }}
Build documents
{{ foDocCount }}
Open flags on this item
{{ ff.text }}
{{ ff.by }} · {{ ff.date }}
Complete this operation
{{ foRecLine }}
{{ foNcrTxt }}
{{ foFlowLine }}
{{ foAboveWarn }}
Share some of the good pieces with someone who worked this op — they count toward their work, not yours
{{ foShareNote }}
{{ wz.code }}
This job's parts & materials
{{ wl.code }} — {{ wl.lines }}
Nothing placed yet — parts land on the plan as ops complete and materials are received.
{{ foSpotNote }}
View only — moves happen on the Move terminal.
Consumables used on this run
Enter what you actually used. Leave 0 if you used none — it comes off stock and onto the job.
{{ fc2.number }} {{ fc2.onHand }} {{ fc2.uom }}
Sheets used — pick by hand, full sheets only
Laser ops never auto-consume material. Only what you enter here is deducted.
No matching sheets in stock — use the remnant option or receive material.
{{ foNestUseSub }}
{{ fsh.name }} {{ fsh.onHand }} {{ fsh.estHint }}
{{ fsh.name }} {{ fsh.onHand }} {{ fsh.nestTxt }} Consigned sheets
Used remnant
Completing consumes — check the counts
{{ fc.number }}
{{ fc.name }} · {{ fc.per }} · {{ fc.have }}
{{ fc.uom }}
{{ fc.pullTxt }}
{{ foDeliveredLine }}
{{ foFinalNote }}
{{ foMoveWarn }}
{{ foShortWarn }}
Counts logged so far
{{ fp.line }}
{{ fp.meta }}
{{ foElapsed }} {{ foRemain }}
{{ foEta }}
{{ foProtoShutWhy }} — Start and Complete are off. Stop your clock and put it down; it comes back when engineering releases it.
Paused at {{ foElapsed }}
Complete — {{ foElapsed }}
Where the materials came from
{{ mfl.number }}{{ mfl.kindTxt }}
{{ mfl.line }}
{{ mfl.fixed }}
Pick the bin each one came from and how many. The bins and the count on hand follow — a bin that holds fewer than you pick gets a count.
{{ mfe.number }}
{{ mfe.name }}
{{ mfe.total }}
{{ mfe.diff }}
{{ mfr.warn }}
{{ mfe.was }}
{{ mfe.lineWarn }}
{{ foNote }}
Operation notes
{{ foOpNotes }}
Materials at this step
No materials tied to this operation.
{{ fm.number }}
{{ fm.name }}
{{ fm.need }}
{{ fm.used }}
{{ fm.have }} — short
Op flow {{ ff.mini }}
{{ ff.seq }} {{ ff.name }}
{{ ff.statTxt }} {{ ff.wc }}
QC Strict — {{ foStrictCust }}. {{ foStrictNote }}
{{ foQIssueTitle }}
{{ foQIssueSub }}
parts held
Quality issue open upstream — op {{ foUpstreamSeq }}
{{ foUpstreamSub }}
First article required on this job — run one piece, get it inspected and signed off before the rest of the lot.
QC checkpoints
{{ foQcCadHint }}
{{ qs.i }}. {{ qs.text }} critical
{{ qs.meta }}
{{ qm.dotNum }} {{ qm.what }} · {{ qm.label }} {{ qm.nom }} {{ qm.tol }} {{ qm.pillTxt }}
{{ qm.lo }}
{{ qm.hi }}
{{ qm.verdictTxt }}
{{ qv2.t }}
{{ qs.verdictTxt }}
{{ qv.t }}
the tolerance decides — record the measurement {{ qs.stampTxt }} {{ qs.ncrRef }}
Job conversation {{ foJtCount }}
{{ foJtBlockMsg }}
No one has posted on this job yet. Anything written here is shared by every station on {{ foJob }} and visible to the office.
{{ jm.text }}
{{ jm.by }} {{ jm.toName }} blocker {{ jm.seen }}
{{ pw.text }}
{{ r.head }}
In flow state!
On the clock {{ fc.init }}{{ fc.name }} {{ fc.dur }} {{ fc.pcs }}
{{ foCrewPcs }} {{ foLabor }}
{{ foSeqWhy }}
Something's wrong
{{ qrCtx }}
What is it about
How bad
saving the picture…
No QC hold location exists yet. Add one in Inventory → Locations with the QC hold kind and the pieces can be booked there instead of left at the machine.
And the op

{{ qrHoldNote }}

Quality gate — {{ qgSo }}
{{ qgCust }} · QC Required
{{ ck.t }} {{ ck.note }}
{{ qgBlockNote }}

Quality

{{ qStd }}
{{ qt.label }}
{{ qt.val }}
{{ qt.sub }}

Raised from the floor by whoever was holding the part. A flag is not a nonconformance yet — decide whether it becomes one. Closing it releases anything held and lets the operator finish the op.

Nothing flagged. Anything the floor raises with “Something's wrong” arrives here.
{{ qf.id }} {{ qf.sev }} {{ qf.scope }} op stopped · {{ qf.heldQty }} {{ qf.who }} {{ qf.stateLabel }}
{{ qf.desc }}
{{ qf.ctx }}
{{ qf.closeNote }}
Became

Every nonconformance, from checkpoint failures on the floor to customer returns and bad vendor material. Records carry containment, root cause, corrective and preventive action, disposition and the cost of the failure.

NCR Source Part Nonconformance Qty Disposition Cost State
No nonconformances on record. Failures raised from the floor, receiving or a customer return land here.
{{ nr.id }}{{ nr.date }} {{ nr.src }} {{ nr.part }}{{ nr.partName }} {{ nr.desc }} {{ nr.qty }} {{ nr.dispo }} {{ nr.cost }} {{ nr.state }}
{{ nd.id }}
{{ nd.date }} · raised by {{ nd.by }} · {{ nd.srcLabel }}
State
{{ nd.closedNote }}
{{ nd.causeNote }}
{{ nd.dispoNote }}
Cost of failure
{{ nd.costTotal }}
Photograph the nonconformance — it travels with this record and prints on the NCR. Objective evidence like this is what an AS9100 audit asks for.

A customer sending parts back, authorised against the order line they came from. Every RMA raises an NCR, so root cause and corrective action are recorded where an audit expects to find them.

You can see returns but not authorise them. Ask an admin for the Issue RMA permission.
New return authorisation
{{ rmaNewCap }}
What happens to them
{{ rmaOutcomeNote }}
{{ rmaNewProblem }}
RMA Part / order Customer Qty Outcome State
{{ rr.part }} {{ rr.sub }} {{ rr.customer }} {{ rr.qty }} {{ rr.outcome }} {{ rr.state }}
{{ rf.label }}
{{ rf.val }}
{{ rr.detail }}
{{ rr.receiveMsg }}
No returns on record. Raise one against a shipped order line, or approve a request from the customer portal.
{{ drBusy }}
Drop the drawing PDF to review it Reads dimensions & tolerances, GD&T, material, finish, hardware, welds and notes — then suggests ops and inspection checkpoints
{{ drFile }} reviewed {{ drWhen }}
Drawing disagrees with the item record
{{ mm.field }}drawing says {{ mm.drawing }} · item says {{ mm.item }}
Print header
{{ dh.k }}{{ dh.v }}
GD&T callouts
{{ g2 }}
Hardware callouts
{{ hw2.callout }} {{ hw2.qty }}
Welding callouts
{{ wd.label }} {{ wd.note }}
General notes
{{ n3 }}
Toleranced dimensions
No toleranced dimensions found in the text layer.
{{ dd2.i }} {{ dd2.feature }} {{ dd2.nominal }} {{ dd2.tol }} critical
Suggested operations
{{ do3.name }} · {{ do3.wc }} {{ do3.haveNote }} {{ do3.why }}
Suggested QC checkpoints
{{ dq.text }} critical {{ dq.opName }} · {{ dq.method }} · {{ dq.spec }}
Manufacturability concerns
{{ c3 }}
QC Required customers Set per customer in Admin → Customers. These are the defaults a newly marked customer starts from. Added margin points of margin on new quotes Inspection op {{ qCfgInspNote }}
Inspector sign-off on critical checkpoints Operators self-check every checkpoint at op completion; checkpoints marked critical additionally need a QC-role signature.
First article by default Pre-checks "First article required" when a job is approved for a part with no FAI on record, or whose rev changed. Always overridable per job.

Settings

Shop-wide switches. These change how the whole system behaves, not one page of it.

Production
Releasing a job short of material
A job can go to the floor before every material is in — the shop cuts and bends while the hardware is on order, and the op that needs it waits. That op never starts short, whichever you choose; this decides what happens at Release.
Material order window
How long before a job's latest start its material is bought. Until then a missing material reads ‘Order from …’ instead of short — on the job, in the digest, for Arthur and on the Purchasing board — and the schedule does not plan the op before the material can be here. A vendor lead time longer than the window opens it earlier. Hot jobs and jobs with no due date are not held back. The floor gate and Release still see every missing material. 0 turns it off.
days before the latest start
{{ mwEx }}
Arthur
Arthur’s watch
He reads every live job for hold-ups and works out the fix he would take. In shadow he only records it and scores himself against what you did. Live, a hold-up that is hot, unowned, at risk or unanswered goes to its owner, then the whole role, then you. He never touches anything on this page.
Who hears about what
{{ rt.label }}
The role, then a named owner — left blank, he takes the first person who holds the permission. “No cut file” stays with the engineering chase that already runs.
When nobody answers
{{ anum.label }}{{ anum.sub }}h
Escalate tothe last stop when the role has not answered either
What leaves the building
Arthur reasons over a text digest of the shop, sent to the model through your own server function; the model keeps nothing between calls. Job ids, part numbers, quantities and dates always go. These decide what is withheld.
Stores
How consumables reach the floor
Simple: operators walk to the shelf and take what they use. Advanced: they request from their station and a Stores Runner brings it — stock drops on delivery, against the requester, with the runner named. Mins and purchase requests work the same in both.
Runnersanyone whose role carries “Stores runner” — set under Users & roles
{{ sr.init }}{{ sr.name }} Nobody has the permission yet — requests would fall back to Simple
Delivery targetminutes — late requests turn red on the board
How often, by family
{{ cf.label }}{{ cf.sub }}everydays
{{ ccLoadNote }}
Pace
{{ cn.label }}{{ cn.sub }}{{ cn.unit }}
When the count disagrees
This terminal
Appearance
Theme for this terminal only — every station keeps its own. Status red, amber and green stay fixed in all of them.
This installation
{{ dbEnvName }}
{{ dbEnvNote }}
{{ dbBuild }}
{{ lockTitle }}
{{ lockNote }}
Schema
{{ migSummary }}
{{ mg.name }} {{ mg.why }} {{ mg.state }}
{{ migNote }}
Modules
Move
WIP tracked by location, a move op after every operation, and a forklift terminal on the shop plan. Built for facilities large enough that moving work is someone's job.
{{ mvModState }}
{{ mvModStat }}
{{ cntkNote }}

Locations

{{ locTotal }}

Every place stock can sit, nested as deep as your building needs. Zones are drawn on the shop plan; everything below them is racks, shelves, carts and bins. Receiving, job completion and shipping all write to these locations.

{{ locMvNote }}

{{ locResultN }}
Stored here
{{ hi.number }} nothing assigned to this bin yet
Which size lives here? A bin holds one
{{ locItemNoneMsg }}
{{ locItemMore }}
Bins under {{ locSelCode }}
{{ locBulkPreview }}
{{ locSelCode }} {{ locSelKind }} {{ locSelName }} {{ st.v }}{{ st.k }} {{ locSelSize }}
Class colour
completes here:
Inside here
Stock at {{ locSelCode }}
{{ h.when }} {{ h.dir }} {{ h.at }} {{ h.detail }} {{ h.who }}
Nothing has moved in or out of here yet.
Class Part Description Reference Qty
{{ r.cls }} {{ r.desc }} {{ r.ref }} {{ r.qty }}
{{ locStockEmptyMsg }}
Shop plan
{{ eq.tip }} {{ eq.tip }} {{ p.tip }} Drag to resize {{ locDrawBox }} {{ locPlanText }} {{ locTickBtn }}
{{ locPlanNote }}
Equipment shadows
{{ locEqSelName }} {{ locEqSelSize }}
rotate move
Distance to wall ({{ locEqDimUnit }})
{{ locEqHint }}
{{ locZoneCode }} {{ locZoneName }}
Size ({{ locZoneUnit }})
Distance to wall ({{ locZoneUnit }})
Shop floor
×
{{ locFpUnitLabel }}
{{ locScaleNote }}
{{ locFpUnitLabel }}
{{ lg.label }}

Messages

{{ msgUnreadN }} unread

Channels and direct messages for talk, tickets for issues. Anything the floor flags, engineering freezes, quality raises or purchasing shorts lands here as a ticket you can pass to a person and walk through open, acknowledged, in progress and resolved.

{{ msgSupHint }} — every private thread you open is written to the audit log.
To
{{ r.head }}
Nobody matches that.
With a title this becomes a tracked issue — it gets a reference, a state and an owner.
{{ msgEmptyMsg }}
Arthur
Bug Improvement
files on the Arthur tab under Admin
Describe a new feature or report a bug. I'll ask questions until the logic is airtight, then draft the dev prompt for review.
{{ bugDoneMsg }}
{{ bg.text }}
Arthur is thinking…
{{ bugTgt }}
{{ sh.thumb }}
One question at a time until it's airtight, then the drafted prompt lands under Admin on the Arthur tab.
{{ msgRef }} Urgent {{ msgSrcLabel }}

{{ msgTitle }}

{{ msgSub }}
{{ msgJobBlockMsg }}
{{ msgPrivMsg }}
{{ msgMakeUpNote }}
{{ msgFreezeMsg }} unfreezes on resolve
{{ msgOwnerInit }}
{{ mm.init }}
{{ mm.name }} {{ mm.station }} {{ mm.dept }} {{ mm.toName }} blocker
{{ mm.t }}
{{ mm.b }}
{{ mm.drWas }} → {{ mm.drWant }} {{ mm.drHead }}
{{ mm.drCost }}
answering closes this issue and replies to them
{{ mm.drWait }}
{{ mm.seen }}
{{ mm.photoName }}
{{ mp.text }}
{{ r.head }}
{{ rfTitle }}{{ rfSub }}
Nothing is being revised. Open an item and pick Revise from a new file in its ⋯ menu.
{{ rfBusyTitle }} {{ sp.t }}
Every part in the build{{ rfCounts }}compared shape by shape · corner radii are estimates
{{ r.num }} {{ r.kind }} {{ r.stTxt }} rev {{ r.revWas }} {{ r.revFixed }}
{{ r.revErr }}
{{ ln.t }}
{{ r.info }}
{{ r.note }} {{ r.doTxt }}
{{ sb.label }}{{ sb.warn }}
{{ r.jobsLbl }}
{{ jb.id }}{{ jb.what }}
{{ jb.lock }}
{{ jb.note }}
Rev {{ r.revWas }} · now
The new file
Flat · old grey, new purple, changes ringed
Hardwarecounted in the whole file, matched by name
{{ w.n }}{{ w.q }}{{ w.stTxt }}
{{ sb.label }}{{ sb.warn }}
New in the filenot in the build yet
{{ x.n }}{{ x.q }}
Not in the build, so Apply leaves it out. Make it in the CAD Engine, then add it to its assembly’s BOM.
Apply stopped — nothing was writtenThese parts have a cut file now, and their new one could not be made from the file — they would keep cutting the old shape at the new rev. Measure the coupons it asks for, or untick those parts, then Apply again.{{ bk.t }}
rev {{ rfTopWas }} →type the customer drawing's rev if it differs
{{ rfTopErr }} {{ rfTopSub }}
{{ rfFTitle }}{{ rfFSub }}
The new cut files{{ rfCkSub }}
{{ rfCkHead }}
{{ rfCkNum }}{{ rfCkRev }}
{{ c.t }}
What changedclick one to zoom to it
{{ rfCkInfo }}
{{ rfCkBannerTxt }}
{{ b.lbl }}
{{ rfCkOldLbl }}{{ rfCkNewLbl }}
{{ rfCkZl }}
{{ rfCkStepTxt }}
Scroll to zoom · drag to move
{{ rfCkVMsg }}
New cut file {{ rfCkOldKey }} Bend line — kept with the cut file, not cut Changed spot
{{ rfCkNoAlignTxt }}
BendAngleInner RDeductionWhere the figure comes from
{{ b.n }}{{ b.ang }}{{ b.r }}{{ b.bd }}{{ b.from }}
No bends — the flat is the part, so no deductions are used.
{{ rfCkSumTxt }}
{{ rfDoneHead }}{{ rfDoneSub }}
{{ rfSvOkT }}
{{ rfSvBadT }}
New revs
{{ c.num }}{{ c.rev }}
{{ c.sub }}
No part was revised.
Left for you to check
{{ wn.t }}
Left exactly as they are{{ k.t }}
Open jobs{{ cj.t }}
Quotes{{ rfDQuote }}

Engineering

Everything waiting on engineering. Clear what it needs, say what changed, and it goes back to the stage it was at.

{{ c.n }} {{ c.label }}
You can see the queue. Releasing and resolving flags need the Engineering permission or Admin.
{{ g.label }}{{ g.n }}
{{ g.hint }} {{ g.emptyTxt }}
Pick something on the left.
{{ ewD.kicker }} {{ ewD.title }}{{ ewD.number }}{{ ewD.name }}
{{ c.t }}
{{ ewD.src }}{{ ewD.reason }}
{{ ewD.matTxt }}
One-click fix
{{ fx.label }}{{ fx.sub }}
Before it goes back
{{ ck.t }}
{{ f.text }}{{ f.by }}
The part
{{ o.seq }} {{ o.name }} {{ o.cut }} {{ o.pill }} {{ o.qty }}
Conversation
{{ x.by }}{{ x.text }}
{{ ewD.cutTxt }}
Goes back to{{ ewD.backTo }}
{{ ewD.relHint }}
{{ ewD.doneTxt }}

Time & attendance

Punches from the front door, machine kiosks and office computers. Lunch is a clock-out and a clock-in. Overtime is anything over 40 h in a week.

{{ taWkLbl }}
{{ sx.k }}{{ sx.v }}{{ sx.sub }}
PersonDepartment {{ dh.l }} TotalOvertimeFlags
Nobody is set to clock in — set it on each profile in Users & roles.
{{ r.name }} {{ r.dept }} {{ r.total }} {{ r.ot }} {{ r.flag }}
Hours = clock-in to clock-out, every stretch of the day added up. Amber = needs fixing · blue = clocked in at a machine kiosk · a dot = fixed by an admin. Hover a day for its punches; click it to fix it.
{{ taNeedLbl }} Nothing to fix in the last 60 days. {{ taDoneLbl }}
Person
{{ taRec }} {{ taEv }}
Worked
to
{{ taTotal }}
Reason
{{ taErr }} {{ taSaved }}
The door's own punches stay on record. The fix is kept beside them with your name, the reason and the old times, and the report uses the fix.

Backup & restore

A complete copy of the system in one file. Take one before every update, and keep it somewhere other than this computer — a backup that lives on the machine it is protecting is not a backup.

Parts, orders, jobs, purchasing, quotes, messages, customers, users, settings and the photographs.

{{ bkLastNote }}

{{ stStorage }} {{ stWarn }}
{{ bkBusy }}
{{ bkErr }}
{{ bkPrev.file }}
{{ bkPrev.when }} · {{ bkPrev.by }} · {{ bkPrev.size }}
What changes Now After {{ bl.label }} {{ bl.from }} {{ bl.to }}
Test demand for the lasersample shop only

{{ tdSummary }}

{{ tdNote }}
Logic check
{{ imgRowsNote }}

Checks the logic, not the database: every number the money depends on, computed by the same functions the app uses, plus the corrections a person makes — change the yield, the consumption, a work-centre rate, the margin, the material price, the cut time — and whether each one reaches the price. Then it opens all 35 screens and proves each one painted, which is why the full run takes about half a minute; Numbers only skips that and finishes instantly. Runs on a copy of the shop, so nothing it does is saved.

{{ wfHead }} {{ wfSub }}
{{ w.step }} {{ w.detail }}

{{ wfNote }}

Write test — {{ wrEnv }}
off on live

{{ wrNote }}

{{ wrHead }} {{ wrSub }}
{{ wr.step }} {{ wr.detail }}
Write audit

The database check below proves the connection. This proves the app's own path: it creates a record, edits it two ways, deletes it, and re-reads the shop from the server after each step. Captured is the shape that breaks quietly — a handler that grabbed the record before saving — and it is how a renamed user reverts or a deleted order comes back.

{{ waHead }}
CollectionCreateEditCapturedDelete
{{ wa.label }} {{ wa.ins }} {{ wa.db2 }} {{ wa.cap }} {{ wa.del }}
Shared database check

Run this after every update. It writes a test record to each table, changes one field, reads it back, confirms the change stuck, and deletes it — retrying once if the connection drops mid-request. Nothing it writes appears anywhere in the system.

{{ stNote }}
{{ stHead }} {{ stSub }}
{{ r.table }} {{ r.detail }}

{{ stFailNote }}

{{ stLiveNote }}

Restore points

Kept inside the system, without being asked: one before the app changes under you, one at the start of each working day. The last six are held; older ones drop off. They carry everything except CAD files — the download above is still what protects you against losing this computer.

None yet — the first is taken once there is real data to keep.
{{ sn.when }} {{ sn.why }}
{{ sn.what }} · {{ sn.size }}

Users & roles

{{ uCount }}

You can add and manage floor operators. Full user & role administration needs the "Manage users & roles" permission.

{{ siNote }}
{{ u.init }}
Departments, in priority order:
{{ u.runsLabel }}
{{ u.siLabel }}
Pay grades

What a person costs, without individual wages in the app. Standard cost always uses the work center's labour rate, so quotes stay stable; actual cost uses the grade of whoever did the work, which is what makes a welder on the brake show up as a labour variance instead of a saving.

$ /hr {{ pg.usedBy }}

Preset roles ship with sensible permissions — adjust any of them, or duplicate one as a custom role. The Admin role is locked so you can't lock yourself out.

{{ rc.count }} locked
Filter: latest 200 entries
Nothing logged yet — sign-ins, floor activity and admin changes land here.
{{ ar.t }} {{ ar.by }} {{ ar.action }} {{ ar.detail }}
Floor kiosk address

Open this on a shop tablet and it lands on the floor sign-in every time — no office door, and no way back to one. Bookmark it, or add it to the home screen.

{{ kioskLink }}
Front door clock

An iPad by the door that only takes PINs: everyone clocks in on the way in and out on the way home, and for lunch. Sign the iPad in with the door account, then tap the button below on the iPad itself (or open the site's /door address on it). It never locks, keeps punches while offline, and leaving it needs an admin PIN.

{{ dbt.t }}
No door set up yet.
Machine kiosk sign-in

Who is here today comes from the front door, and an op keeps the name of whoever started it — the kiosk's sign-in feeds neither. It only says who is tapping the kiosk right now: it keeps a person signed in while they use it, forgets them this many seconds after the last touch (tap, key, scroll or mouse movement, in any of its tabs) and goes back to the PIN pad, so the next person to walk up is asked who they are. 0 = never forget.

seconds
Saving on this computer

{{ svNow }}. A change the database has not taken yet is kept on this computer and sent at the next start. What went wrong with saving on this computer is listed here, newest first.

{{ sl.when }}{{ sl.kind }}{{ sl.m }}
Nothing has gone wrong with saving on this computer.
Back to the PIN pad

A screen nobody has touched for this long goes back to the PIN pad — moving the mouse, scrolling or typing all count as using it. Only the person is signed out of that screen: running ops keep running, no clock stops, and a screen with typing or a form open waits. 0 turns it off.

minutes
After-hours clock stop

An operation left running is closed at the end of the shift it was started on — but only after this long with no sign of life on it. The window lets people stay late without being cut off mid-job: anything logged on the op restarts the countdown. The shift-end figure is what stands, and the extra time is held for the operator to confirm. 0 turns it off.

minutes of quiet {{ quietLabel }}
{{ cpVendor }} · consignment at {{ cpShop }}
Read-only. Your stock on our shelves, what we have used, our counts and the statements. Updated live.
{{ t.k }}{{ t.v }}{{ t.sub }}
Your stock on our shelf
Item · sizeOn shelfUsed · unbilledLast countNext count
{{ r.number }} {{ r.name }} {{ r.size }}{{ r.onHand }}{{ r.used }}{{ r.last }}{{ r.next }}
Usage this period
Nothing drawn since the last statement.
{{ u.when }}{{ u.number }}{{ u.line }}{{ u.qty }}
Statements
No statement issued yet.
{{ rp.id }}{{ rp.line }}{{ rp.owed }}
Questions about a count or a statement: reply to the buyer who sent you this link. Figures on this page are the shop's live records and can move until a statement is issued.
{{ hvTitle }} {{ hvSub }}
{{ hvHeart }}
donerunning — fills with the pieces through itnot startedoutside — not back yet
the rim — how it stands: green on time, amber late, red a shift or more lateouter ring the job · inner rings its sub-jobs, each starting at its picturea dot outside the job’s ring — the step a sub-job feedsthe tick — where it should be by now to make its date Point at any arc for the step and its pieces.

{{ stubName }}

This module is scoped but not built yet — we started with Items, the core the rest hangs off. Quoting, jobs, the floor kiosk and user roles come next.

This invitation is no longer valid

It may have been revoked, or replaced by a newer one. Ask your contact at the shop to send a fresh link.

Reference: {{ setupWhy }}
You're all set

From now on, open the same link and enter your 4-digit PIN. You can see your parts and orders, track where they are on the floor, ask us to move a date, and send us a purchase order.

You're already set up

This is your personal link for the {{ setupCust }} portal — keep it. Sign in with your usual 4-digit PIN.

No rush

Your link stays good — open it again whenever suits and pick up where you left off.

{{ setupShop }} — customer portal

Set up your access

{{ setupGreeting }} — you've been invited to the portal for {{ setupCust }}. Check we have you right, then pick a PIN. It takes a minute.

Your details
Addresses
Choose a PIN

Four digits. This is how you sign in from now on — keep it to yourself.

{{ setupPinNote }}
ARTHUR Daily briefing {{ bgDayLbl }}
{{ bgWho }} — read this before starting the day. {{ bgScopeLbl }} {{ bgMeta }}
{{ bgHeadline }}
{{ bs.label }} {{ bs.val }} {{ bs.sub }}
{{ bgStatsDesc }}
The week· {{ bgWeekN }}
{{ bd.lbl }} {{ bd.n }}
{{ bgWeekDesc }}
Jobs to watch Each line is the job’s pulse against its plan — flat on the baseline is on time, sinking is late. Tap one to enlarge. nothing at risk — every job has slack
{{ bh.heart }}
{{ bh.no }} {{ bh.label }}
{{ bgLoadTitle }} no open work
{{ bl.name }}
{{ bl.hrs }}
Hours already booked on each station — a bar past the dashed line is more work than two weeks of shift time can hold.
{{ bgHint }}
Laminar
{{ signinTitle }}
{{ signinSub }}
New operators — pick your name
Nobody is waiting to be set up. Ask the office to add you — they assign 0000 and your name appears here.
{{ padInit }} {{ padName }}
{{ padSub }}
{{ padSub }}
{{ pinErrMsg }}
{{ padNewHint }}
Move your clock?
{{ opSwitchMsg }}
On the clock now: {{ opSwitchFrom }}
{{ fAskTitle }}
{{ fAskBody }}
{{ opPickTitle }}
{{ opPickSub }}
{{ offTitle }}
{{ offSub }}
{{ r.init }}{{ r.name }}
{{ omPhotoTitle }}
Every screen
{{ orow.label }}
{{ meShInit }}
{{ meShName }}
{{ meShRole }}
Colour
Icon
Photo
Change PIN
4 digits, unique to you — it signs you in at the office door and the kiosk. The change is audit-logged.
Site password
Signed in on this device as {{ meShEmail }}
Account
Role{{ meShRole }}
Departments{{ meShDepts }}
{{ meShAdminNote }}
{{ arNudgeText }}
{{ arPickTxt }}{{ arPickHint }}
Arthur {{ arWho }}
Open chats
None yet. Ask him something and the chat is kept here, on every screen you sign in on.
{{ acf.title }}{{ acf.meta }}
{{ arCvTitle }}
{{ arCvFrom }}
{{ arCvHidden }}
{{ arTipText }}
Ask about what is on this screen, or how to use it. He answers from what he can see, says where each figure came from, tells you plainly when something is not there, and can open the right screen for you.
Try
What he can see{{ arScope }}{{ arPackLines }}
{{ asc.t }}
{{ arBlind }}
{{ apm.t }}
Pointed at · {{ atn.ptKind }}{{ atn.ptLabel }}
{{ atn.tag }}{{ atn.text }}
Where those numbers came from · {{ aci.t }}
{{ atn.actKind }}
{{ atn.actSummary }}
{{ aar.k }}{{ aar.v }}
{{ atn.stkPoTxt }}
{{ atn.stkWhereLbl }}
{{ atn.stkLine }}
One-click fix
{{ afx.label }}{{ afx.sub }}
Nothing is written until you send it. It goes through the same path as the button on the screen, under your name.
{{ atn.doneTxt }}
reading {{ arShort }}…
What he can see{{ arScope }}{{ arPackLines }}
{{ asc.t }}
{{ arBlind }}
{{ apm.t }}
Talking about{{ arSubjLabel }}