Catering is a beautifully chaotic business. Every event is a custom project. The menu depends on the client. The staffing depends on the guest count. The equipment list depends on the venue. The shopping list depends on everything.

Most catering software on the market is built for large caterers — 100+ events a month, multi-chef teams, corporate clients with RFPs. cateringpro is built for the other end: a 1-5 chef operation doing 5-30 events a month, where a bad spreadsheet can ruin a wedding.

Six Things It Does

The Recipe Scaling Feature

This is the magic trick and the reason I built this vertical specifically.

Traditional recipes are written for a fixed yield (8 servings, or 2 loaves, or 1 cake). Catering needs yield-parameterized recipes. Scale it to 47 servings, and every ingredient, every cooking time that scales with volume, every pan count should recompute.

cateringpro stores recipes as yield-parameterized records. Ingredients have per-serving amounts plus a waste percentage (you lose 12% of your butter to what sticks to the measuring cup; you lose 35% of your onions to trim). Cooking times that scale linearly (boiling a bigger pot) scale; cooking times that don't (a recipe where doubling doesn't mean double the bake time) have a scaling function attached.

Then: the cross-event shopping list. Given the booked events for next week, sum every ingredient across every menu, accounting for waste and pantry stock. That's your shopping run. One trip to the restaurant supply, one trip to the produce wholesaler. Not six.

class RecipeIngredient(Base):
    recipe_id = Column(Integer, ForeignKey("recipe.id"))
    item_id = Column(Integer, ForeignKey("pantry_item.id"))
    per_serving_qty = Column(Float, nullable=False)  # e.g. 0.5 cups
    waste_pct = Column(Float, default=0.0)           # 0.10 = 10% waste
    unit = Column(String)                            # "cup", "lb", "each"

    def qty_for_servings(self, n):
        return self.per_serving_qty * n * (1 + self.waste_pct)

Contracts + Deposits

Every event has a contract PDF that's generated from a template. Client name, venue, date, guest count, menu, total price, deposit amount, cancellation terms. Generate, email, client signs via SignNow or similar, deposit collected via Stripe or Square, event is locked in.

The cancellation-terms piece matters. Catering has real upfront costs — you're committing to food orders, to staffing decisions, to equipment rentals. A client who cancels two days out has to eat some of that cost. The contract language makes that clear; the deposit structure enforces it.

Staff + Equipment Conflicts

A staffer can only work one event at a time. The good 10-quart saucier can only be at one event at a time. cateringpro enforces both constraints — when you add Maria to Saturday's 6 PM wedding, the system checks whether Maria is already booked to Saturday's 5 PM corporate lunch and flags it.

Most of my chef friends have lost money on staff conflicts. Booked two events the same evening, realized too late, had to scramble. A double-booking check that runs as you're planning is worth real money.

Pricing

For a catering operation billing $100K+/year, $49/month is noise. The real ROI is in the hours saved by not triple-entering data across spreadsheet, calendar, and QuickBooks.

Who It's For

Private chefs. Small catering operations (1-5 chefs, 5-30 events/month). Pop-up operators. The off-premise caterer who does wedding rehearsal dinners out of a commercial kitchen they share. Not for banquet facilities or 100+ event-a-month enterprises — they need something bigger.

Catering ops is 80% logistics and 20% food. Software that handles the logistics should cost less than one event's margin.

Related

cheesemaking for chefs doing their own charcuterie/cheese program. breweryops if you're building the beverage side in-house. shiftfill for front-of-house staff coordination.

Repo: github.com/Dangercorn-Enterprises/cateringpro.

What's On the Roadmap

Three things on the cateringpro roadmap:

Allergen matrix per event. Cross-reference every menu item against guest dietary constraints. Auto-flag anything that conflicts. Print a server-facing allergen card for the night.

Vendor PO + delivery tracking. When you place a produce order with a wholesaler for an upcoming event, log it. Track whether it arrived on time, what the substitutions were. Build the per-vendor reliability score.

Tasting-event mode. The pre-booking tasting that high-end caterers do has its own workflow (multiple sample dishes, client preference tracking, follow-up booking). Currently feels stitched on; deserves its own surface.