Hoja gratis del operador · Se queda en tu navegador

Hoja semanal de costo
primo.

El número más importante que un operador pequeño puede seguir. Mete costos de comida, bebida y mano de obra contra las ventas netas. Mira tu costo primo y dónde queda frente al techo del 60 por ciento.

Paquete: Operaciones y Márgenes Cadencia: Semanal · martes por la semana anterior Privado — corre en tu navegador

Llénala

Hoja semanal de costo primo

Mete tus números — la matemática corre en tu navegador. Imprime, exporta a CSV o guárdala en el Taller.

Ejemplo trabajado Café de 60 asientos, Brooklyn Ve cómo se ve un llenado de un martes en la mañana
Ventas netas (todos los canales)$48,200
Costo de mercancía — comida + bebida (con ajuste de inventario)$15,580
Salarios de salón (FOH)$7,900
Salarios de cocina (BOH)$8,400
Costo de mercancía como % de ventas32.3%
Mano de obra como % de ventas33.8%
Costo principal66.1% · amarillo

Su promedio rodante de 13 semanas es 64.0%, así que esta semana corrió un poco caliente. La línea de salarios de cocina es la palanca — el martes se cubrió para una noche más ocupada que la que llegó. El martes a las 10 pone a prueba un turno con un cocinero menos.

Números compuestos típicos — no un local real. Usa el ritmo, no las cifras.

Week ending
Sales (net of sales tax)
Cost of goods sold
Labor (fully loaded)
Net sales $0.00
COGS (food + bev, used cost) $0.00
Total labor (fully loaded) $0.00
Prime cost $0.00
Prime cost as % of sales 0.0%

Type your numbers above. The healthy band for full-service independents runs 55–65% — anything above 65% is a margin emergency.

Try a scenario — what if labor or food shifts?

Slide one or more, watch the verdict re-run on top of your typed numbers. Nothing saves until you click Reset and refill, or use the Workshop save with the scenario flag.

Read the long version The math, the four lies operators tell themselves, the verdict bands, and a four-week protocol for getting stable. The trunk number — Why weekly prime cost is the only number that matters →

+ (Math.round(v * 100) / 100).toFixed(2); } function fmtPct(v) { return (Math.round(v * 10) / 10).toFixed(1) + '%'; } // D9 · Verdict band uses the centralized Bench.evaluate(metric, value) // when available (built from data/benchmarks.json), with the // pre-Bench band ladder as a graceful fallback. Updating // benchmarks.json's prime_cost_pct thresholds cascades to // every sheet that calls Bench.evaluate('prime_cost_pct', ...). function band(pct) { if (pct <= 0) return { band: 'idle', msg: 'Type your numbers above. The healthy band for full-service independents runs 55–65% — anything above 65% is a margin emergency.' }; if (window.Bench && window.Bench.evaluate) { var verdict = window.Bench.evaluate('prime_cost_pct', pct); if (verdict && verdict.msg) return { band: verdict.band, msg: verdict.msg }; } // Fallback ladder (shipped before centralized benchmarks). if (pct < 50) return { band: 'good', msg: 'Below the typical band. Double-check that you included employer taxes and salaried managers in labor — under-counting labor is the most common cause of an artificially low prime cost.' }; if (pct < 60) return { band: 'good', msg: 'Healthy. Keep the cadence; this is the number that protects the rest of the P&L.' }; if (pct < 65) return { band: 'warn', msg: 'In the upper-healthy band. Watch food cost trend week-over-week; small drift here compounds fast.' }; if (pct < 70) return { band: 'warn', msg: 'Above the healthy ceiling. Identify the bigger driver — food (vendor pricing, waste, portion) or labor (over-scheduling, salaried mix) — and act on it this quarter.' }; return { band: 'bad', msg: 'Margin emergency. At this level, every additional dollar of sales loses you money once fixed costs are in. Cut here is non-optional.' }; } // D8 · Read what-if slider state. Returns {labor, food, sales} // as point/percent deltas applied on top of the typed inputs. function whatif() { var f = document.getElementById('sheet-fields'); if (!f || !f.whatif_labor) return { labor: 0, food: 0, sales: 0 }; return { labor: n(f.whatif_labor.value), food: n(f.whatif_food.value), sales: n(f.whatif_sales.value), }; } function recalc() { var f = document.getElementById('sheet-fields'); if (!f) return; var w = whatif(); // D8 — apply scenario deltas on top of the typed numbers. // Labor delta is in PERCENTAGE POINTS of sales; food delta is // in PERCENTAGE POINTS of sales; sales delta is in PERCENT // (multiplicative). var rawSales = n(f.sales_dinein.value) + n(f.sales_togo.value) + n(f.sales_other.value); var sales = rawSales * (1 + w.sales / 100); // Used-cost convention. var rawCogs = n(f.cogs_food_purchases.value) + n(f.cogs_bev_purchases.value) - n(f.cogs_inv_adjustment.value); var cogs = rawCogs + (w.food / 100) * sales; var rawLabor = n(f.labor_hourly.value) + n(f.labor_salary.value) + n(f.labor_taxes_benefits.value); var labor = rawLabor + (w.labor / 100) * sales; var prime = cogs + labor; var pct = sales > 0 ? (prime / sales) * 100 : 0; // Update what-if output labels. if (f.whatif_labor_out) f.whatif_labor_out.value = (w.labor >= 0 ? '+' : '') + w.labor.toFixed(1) + 'pt'; if (f.whatif_food_out) f.whatif_food_out.value = (w.food >= 0 ? '+' : '') + w.food.toFixed(2) + 'pt'; if (f.whatif_sales_out) f.whatif_sales_out.value = (w.sales >= 0 ? '+' : '') + w.sales.toFixed(0) + '%'; document.querySelector('[data-output="net_sales"]').textContent = fmt$(sales); document.querySelector('[data-output="cogs_total"]').textContent = fmt$(cogs); document.querySelector('[data-output="labor_total"]').textContent = fmt$(labor); document.querySelector('[data-output="prime_cost_dollars"]').textContent = fmt$(prime); var pctEl = document.querySelector('[data-output="prime_cost_pct"]'); pctEl.textContent = fmtPct(pct); var b = band(pct); pctEl.dataset.band = b.band; var rec = document.querySelector('[data-output="recommendation"]'); if (rec) rec.textContent = b.msg; // D9 · Anomaly flags. Bench.flag(slug, outputs) walks // data/benchmarks.json's anomalies array and returns any // operator-relevant warnings. var anomEl = document.querySelector('[data-output="anomalies"]'); if (anomEl && window.Bench && window.Bench.flag) { var flags = window.Bench.flag('weekly-prime-cost-worksheet', { prime_cost_pct: pct }); if (flags && flags.length) { anomEl.innerHTML = flags.map(function (f) { return '

' + f.replace(/[<>]/g, '') + '

'; }).join(''); anomEl.hidden = false; } else { anomEl.hidden = true; anomEl.innerHTML = ''; } } } // D8 · Reset scenario sliders. document.addEventListener('click', function (ev) { if (ev.target && ev.target.matches && ev.target.matches('[data-whatif-reset]')) { ev.preventDefault(); var f = document.getElementById('sheet-fields'); if (!f) return; if (f.whatif_labor) f.whatif_labor.value = 0; if (f.whatif_food) f.whatif_food.value = 0; if (f.whatif_sales) f.whatif_sales.value = 0; f.dispatchEvent(new Event('input', { bubbles: true })); } }); function collect() { var f = document.getElementById('sheet-fields'); if (!f) return [['Field', 'Value']]; var rows = [ ['Field', 'Value'], ['Week ending', f.week_ending.value || ''], [], ['Sales — dine-in', f.sales_dinein.value || '0'], ['Sales — to-go & delivery', f.sales_togo.value || '0'], ['Sales — bar & catering', f.sales_other.value || '0'], ['Net sales', document.querySelector('[data-output="net_sales"]').textContent], [], ['Food purchases', f.cogs_food_purchases.value || '0'], ['Beverage purchases', f.cogs_bev_purchases.value || '0'], ['Inventory adjustment', f.cogs_inv_adjustment.value || '0'], ['COGS (used cost)', document.querySelector('[data-output="cogs_total"]').textContent], [], ['Hourly & tipped wages', f.labor_hourly.value || '0'], ['Salaried wages', f.labor_salary.value || '0'], ['Employer taxes & benefits', f.labor_taxes_benefits.value || '0'], ['Total labor', document.querySelector('[data-output="labor_total"]').textContent], [], ['Prime cost (dollars)', document.querySelector('[data-output="prime_cost_dollars"]').textContent], ['Prime cost (% of sales)', document.querySelector('[data-output="prime_cost_pct"]').textContent], ]; return rows; } if (window.SheetPage) { window.SheetPage.register({ slug: 'weekly-prime-cost-worksheet', collect: collect, recalc: recalc, }); } })();

Teclado: ⌘P imprimir · ⌘S bajar CSV · ⌘↵ guardar en el Taller

Cuándo usarla

Saca esta hoja cuando —

  • Martes en la mañana, cerrando la semana anterior. Antes de la nómina. Antes del pedido de produce.
  • Un costo brincó — quieres ver si aterrizó en el costo primo o se absorbió en otro lado.
  • Hablas con un socio o prestamista y necesitas una respuesta de un solo número sobre la salud del restaurante.
Errores comunes

Lo que los operadores hacen mal

  • Olvidar impuestos de nómina y beneficios dentro de mano de obra — el resultado lee 4 a 6 puntos bajo.
  • Usar ingresos con impuesto de venta incluido. Neto del IVA, siempre, o el porcentaje queda mal.
  • Contar solo comida en COGS — el costo primo de bebidas corre diferente y necesita su propia línea.
Va con

Las herramientas, términos y artículos al lado de esta hoja.

Gratis, sin registro. Tus números nunca dejan esta página.