Free OpenClaw skill · No signup · v1.0.0
Free OpenClaw Skill for Ghost Kitchens: Multi-Brand and Aggregator Agent (Download)
A working OpenClaw skill for ghost kitchen operators running 2 to 10 virtual brands from one kitchen. Owns the multi-brand order routing, the aggregator reconciliation across DoorDash, Uber Eats, and Grubhub, the kitchen station prep, and the daily P&L review per brand.
Built and maintained by Adhiraj Hangal, OpenClaw Consult. Code I wrote runs inside OpenClaw's source, merged by the project's creator.
Free OpenClaw skill for ghost kitchens
12 KB file. Free for any use. Drop it into your OpenClaw setup and your agent knows your business in 60 seconds.
We email you a copy plus the install notes. One email, no list, no spam.
What this skill does for your ghost kitchens
- Routes orders from Otter, Cuboh, Chowly, or Olo Dispatch into station-aware kitchen tickets keyed to which brand's recipe maps to which physical station.
- Reconciles aggregator payouts (DoorDash, Uber Eats, Grubhub, Postmates) against POS-recorded orders to catch missing payouts and rate-card discrepancies.
- Tracks per-brand contribution margin daily, flagging brands that drift below the operator's stated floor for a menu or pricing intervention.
- Runs the multi-brand prep sheet for the morning shift, with cross-brand ingredient pooling (shared protein, shared rice, shared sauce base) called out explicitly.
- Detects aggregator throttling or marketplace ranking drops by tracking conversion rate against impression count from each platform's analytics export.
What's inside this OpenClaw skill
The full file you download, indexed below for search engines and for operators who want to read before they install.
---
name: ghost-kitchen-multi-brand-and-aggregator
description: Multi-brand order routing, aggregator payout reconciliation, kitchen station prep, and per-brand contribution margin tracking for ghost kitchens. Integrates with Otter, Cuboh, Chowly, Olo Dispatch, DoorDash, Uber Eats, Grubhub, CloudKitchens, Reef Technology.
version: 1.0.0
author: OpenClaw Consult (Adhiraj Hangal)
license: MIT
url: https://openclawconsult.com/skills/ghost-kitchens
---
# OpenClaw Skill: Ghost Kitchen Multi-Brand and Aggregator Operator
## Overview
This skill turns the OpenClaw agent into the multi-brand operations and
aggregator reconciliation layer for a ghost kitchen. It owns the routing of
incoming orders from Otter / Cuboh / Chowly into station-aware kitchen
tickets, the daily reconciliation of DoorDash / Uber Eats / Grubhub payouts
against POS records, the per-brand contribution margin tracker, and the
multi-brand morning prep sheet with shared-ingredient pooling.
Designed for operators running 2 to 10 virtual brands out of one physical
kitchen, on Otter, Cuboh, Chowly, ItsaCheckmate, or Olo Dispatch. Works for
owned-kitchen, CloudKitchens-leased, and Reef Technology multi-merchant
environments.
## What this skill does
1. Routes incoming aggregator orders to station-aware kitchen tickets
2. Reconciles daily aggregator payouts against POS-recorded orders
3. Tracks per-brand contribution margin and flags brands below the floor
4. Generates the multi-brand morning prep sheet with ingredient pooling
5. Detects aggregator throttling and marketplace ranking drops
6. Drafts dispute messages to aggregator merchant support for missing payouts
## Triggers
```yaml
triggers:
- type: heartbeat
schedule: "0 8 * * *" # Daily 8am, aggregator reconciliation
action: morning_aggregator_reconciliation
- type: heartbeat
schedule: "0 6 * * *" # Daily 6am, multi-brand prep sheet
action: generate_morning_prep_sheet
- type: heartbeat
schedule: "0 21 * * *" # Daily 9pm, contribution margin roll-up
action: nightly_contribution_margin_roll_up
- type: heartbeat
schedule: "0 10 * * 1" # Mondays 10am, marketplace ranking check
action: weekly_marketplace_ranking_review
- type: on_event
event: otter.order_received
action: route_to_station_ticket
- type: on_event
event: aggregator.payout_report_available
action: trigger_reconciliation
- type: on_event
event: brand.contribution_margin_below_floor
action: flag_for_pricing_review
```
## Workflow: multi-brand order routing
When an order lands in Otter / Cuboh / Chowly:
1. Identify the source brand (Birria Bowls, Crispy Chicken, etc.)
2. Look up the recipe-to-station mapping for that brand
3. Generate the station-aware kitchen ticket (Grill, Fryer, Salad, Sauce, Pack)
4. Print to the appropriate KDS or kitchen printer
5. Log the order to the per-brand contribution margin tracker
The recipe-to-station map is editable per kitchen:
```yaml
recipe_station_map:
birria_bowls:
- station: protein_braise
prep: "Pull braised beef from holding"
- station: rice
prep: "Cilantro lime rice 1.5 cup"
- station: assembly
prep: "Build bowl, sauce, salsa"
crispy_chicken:
- station: fryer
prep: "Drop chicken tender 4-piece"
- station: assembly
prep: "Pack with slaw and sauce"
acai_bowls:
- station: cold_assembly
prep: "Blend acai base, build toppings"
```
## Workflow: aggregator reconciliation
Each morning at 8am the agent:
1. Pulls the previous day's payout report from DoorDash, Uber Eats, Grubhub, Postmates
2. Pulls the previous day's POS orders
3. Reconciles order-by-order, brand-by-brand
4. Flags missing orders in aggregator portals (orders we fulfilled but they did not record)
5. Flags missing payouts in POS (orders they paid us for but we did not record)
6. Flags rate-card discrepancies (the aggregator applied a different commission than the contract)
7. Drafts dispute messages to aggregator merchant support
Operators we have scoped recover 1 to 4% of monthly aggregator revenue from
disputes that would otherwise go unflagged. The discipline is in pulling
the reports daily and reconciling within the aggregator's dispute window
(typically 14 to 30 days depending on platform).
## Workflow: per-brand contribution margin tracking
Each night at 9pm the agent:
1. Aggregates the day's orders by brand
2. Computes revenue per brand (net of aggregator commission)
3. Computes food cost per brand from the recipe-to-ingredient map and current ingredient prices
4. Computes labor allocation per brand based on order volume share
5. Computes contribution margin per brand
6. Flags any brand below the operator-set floor
Default floors:
```yaml
contribution_margin_floors:
default: 30%
high_food_cost_brand: 25%
premium_pricing_brand: 35%
```
When a brand drops below its floor for 3 consecutive days, the agent drafts
a Slack with options: price increase candidates, recipe portion adjustments,
menu mix shifts, or temporary pause recommendation.
## Workflow: morning prep sheet
Each morning at 6am the agent:
1. Pulls the previous 4 weeks of orders by SKU
2. Forecasts today's demand by SKU (with day-of-week and weather adjustments)
3. Maps each SKU to its ingredient list
4. Pools shared ingredients across brands (Birria's beef and Crispy Chicken's chicken thigh share the same protein order if the recipe overlaps)
5. Generates the prep list per station with target quantities
6. Routes to the kitchen team's preferred surface
A representative 4-brand kitchen has 6 to 12 shared ingredients across
brands. Surfacing the pooling explicitly cuts prep waste and makes the
morning easier.
## Workflow: marketplace ranking detection
Each Monday at 10am the agent:
1. Pulls the previous 14 days of impressions and orders per brand per platform
2. Computes conversion rate (orders / impressions) per platform per brand
3. Compares against the trailing 28-day average
4. Flags any brand-platform combination with a conversion drop above the operator-set threshold
The most common causes of conversion drops are: aggregator-side ranking
changes, store-hours misconfiguration, completion-rate dropping below the
aggregator's quality floor, or a new competing brand entering the marketplace.
## Message templates
```yaml
templates:
aggregator_dispute_uber_eats:
channel: email
subject: "Missing order in merchant portal: {date}, {brand_name}"
body: |
Hi Uber Eats Merchant Support,
We are missing the following orders from our {brand_name} merchant
portal for {date}:
{missing_order_list}
All orders were received in our POS, fired in the kitchen, and
delivered. Receipt time stamps and KDS logs are attached.
Please credit the payouts to our next-cycle settlement.
Account ID: {uber_eats_account_id}
Store: {store_name}
{operator_name}
contribution_margin_alert:
channel: slack
body: |
CONTRIBUTION MARGIN ALERT
Brand: {brand_name}
Today's margin: {todays_margin}
Floor: {brand_floor}
Trailing 3-day average: {trailing_3day}
Top drivers: {top_cost_drivers}
Suggested actions:
1. {action_1}
2. {action_2}
3. {action_3}
morning_prep_sheet:
channel: slack
body: |
MORNING PREP ({prep_date})
Forecasted orders today: {total_orders_forecast}
Per-brand forecast: {brand_breakdown}
Shared protein pool: {shared_protein_pool}
Shared rice pool: {shared_rice_pool}
Shared sauce pool: {shared_sauce_pool}
Station-specific prep:
{station_prep_blocks}
marketplace_ranking_drop:
channel: slack
body: |
MARKETPLACE RANKING ALERT
Brand: {brand_name}
Platform: {platform_name}
Conversion rate this week: {conversion_this_week}
Trailing 4-week average: {trailing_4w}
Drop: {drop_percent}
Suspected cause: {suspected_cause}
Suggested investigation: {investigation_steps}
```
## Memory keys
```yaml
memory:
- key: kitchen.brands[{brand_id}]
description: Brand metadata, recipe-station map, contribution margin floor
schema: { name: string, station_map: object, margin_floor: number, status: string }
- key: orders.daily[{date}][{brand_id}]
description: Daily orders aggregated per brand
schema: { order_count: number, revenue_net: number, food_cost: number, labor_alloc: number, margin: number }
- key: aggregator.reconciliation[{date}]
description: Daily aggregator reconciliation results
schema: { aggregator: string, pos_count: number, portal_count: number, payout_expected: number, payout_received: number, exceptions: array }
- key: aggregator.disputes[{dispute_id}]
description: Pending and resolved disputes
schema: { aggregator: string, brand: string, amount: number, status: string, opened: date }
- key: marketplace.ranking[{platform}][{brand_id}]
description: Weekly impressions, conversion, ranking signal
schema: { impressions: number, orders: number, conversion: number, trailing_4w: number }
```
## Required integrations
| Integration | Purpose | Read | Write |
|--------------------------|--------------------------------------------------|------|-------|
| Otter / Cuboh / Chowly / ItsaCheckmate / Olo Dispatch | Order feed and routing | yes | yes |
| DoorDash merchant portal | Order, payout, impression data | yes | no |
| Uber Eats merchant portal | Order, payout, impression data | yes | no |
| Grubhub merchant portal | Order, payout, impression data | yes | no |
| Postmates / regional aggregator | Order, payout data | yes | no |
| POS (Square, Toast, Lightspeed) | Order records and refund logs | yes | optional |
| CloudKitchens / Reef Technology | Facility-level coordination | yes | no |
| Email provider | Dispute messages and operator alerts | no | yes |
| Slack | Operator alerts | no | yes |
| OpenClaw Memory | Brand state, reconciliation, ranking signals | yes | yes |
| OpenClaw Heartbeat | Daily and weekly cadences | yes | yes |
Aggregator merchant portals vary widely in API access. Where API is not
available, the skill works from the scheduled CSV export each portal
supports.
## Compliance notes
The skill respects each aggregator's dispute window (typically 14 to 30
days depending on platform). Disputes filed outside the window are
flagged but not auto-submitted. The operator is responsible for the final
dispute call.
For operators in CloudKitchens or Reef Technology multi-merchant facilities,
the skill respects the facility's order-fulfillment SLAs and does not draft
any communication that would conflict with the facility-level agreements.
## Configuration
```yaml
config:
kitchen_name: "Your Kitchen"
brand_count: 4
brands:
- id: birria_bowls
contribution_margin_floor: 30
- id: crispy_chicken
contribution_margin_floor: 28
- id: plant_bowl
contribution_margin_floor: 32
- id: korean_wings
contribution_margin_floor: 30
order_aggregator: otter # or "cuboh", "chowly", "olo_dispatch"
facility: owned # or "cloudkitchens", "reef_technology"
approval_mode: operator_approves_all # or "autonomous_after_2_weeks"
autonomous_template_allowlist:
- morning_prep_sheet
- aggregator_dispute_doordash
- aggregator_dispute_uber_eats
marketplace_ranking_alert_threshold: -15
contribution_margin_below_floor_consecutive_days: 3
dispute_max_amount_auto_draft: 200
```
## Quick install
```bash
mkdir -p ~/.claude/skills
mv ghost-kitchens.md ~/.claude/skills/ghost-kitchen-multi-brand-and-aggregator.md
# Edit the config block to match your operation
```
Launch OpenClaw and the skill is live. Trigger it manually with
`run aggregator reconciliation` or `compile morning prep sheet` or wait
for Heartbeat to fire on the configured cadence.
## Want it wired to your stack?
This SKILL.md is the starting point. If you want it plugged into your
specific brand mix, aggregator portfolio, kitchen station layout, and
facility on a fixed-price two-week clock, the door is at
https://www.adhirajhangal.com/work
Install in 60 seconds
- 1
Drop the file into your OpenClaw skills directory
Save the downloaded ghost-kitchens.md as ~/.claude/skills/ghost-kitchen-multi-brand-and-aggregator.md (or your project-level .claude/skills/). OpenClaw picks up new skill files on next agent launch.
- 2
Connect Otter (or your order aggregator) and each aggregator merchant portal
Edit the integrations block to point at your Otter, Cuboh, Chowly, or Olo Dispatch order feed, plus the DoorDash, Uber Eats, and Grubhub merchant exports for payout reconciliation. The skill includes prompts that translate each aggregator's daily payout report into the agent's reconciliation memory.
- 3
Launch in approval mode, then flip the standard routing and reconciliation to autonomous
Start with the operator approving every kitchen ticket route and aggregator escalation for the first two weeks. The skill's defaults route any payout exception above $50 and any kitchen station override to a human. After two weeks, flip the standard routing rules and the daily reconciliation summary to autonomous.
Example conversation
You
Pull yesterday's aggregator reconciliation and tell me where I'm getting short.
Agent
Yesterday's reconciliation complete. POS-recorded orders: 312 across 6 brands. DoorDash: 142 orders POS, 142 in DoorDash portal, $4,287 expected payout, $4,271 received, $16 short (one cancelled-order refund applied to next-day cycle, normal). Uber Eats: 98 orders POS, 96 in Uber Eats portal, 2 orders missing from their portal flagged for a dispute (orders 4471 and 4498, both fired and delivered on our end). Grubhub: 72 orders POS, 72 in portal, $1,840 expected, $1,840 received, clean. Per-brand contribution margin: Birria Bowls 42% (above floor), Crispy Chicken 28% (below 30% floor due to chicken thigh cost spike), Plant Bowl 38%, Korean Wings 31%, Loaded Fries 45%, Acai Bowls 26% (below floor, recommended pricing review). Two dispute drafts queued for your approval to send to Uber Eats merchant support.
Founder-led · 14 days
Want this multi-brand and aggregator operator live in your ghost kitchen in 14 days?
Adhiraj ships OpenClaw AI agents into real businesses. Short discovery to map it to Otter, the major aggregators, and your kitchen line, build in 14 days, then optional ongoing support so your OpenClaw system keeps working.
Build it with meCommon questions
Will this work for a 2-brand operation or a 10-brand multi-cuisine ghost kitchen?
+
Both. The skill is designed for the 2 to 10 virtual brand range out of a single physical kitchen. Below 2 brands the multi-brand routing workflow is overkill. Above 10 brands the cross-brand ingredient pooling logic typically needs custom rules and the skill is a starting point that needs operator-specific extension.
Which aggregator orchestrators does it integrate with?
+
Otter (the dominant multi-aggregator orchestrator for ghost kitchens), Cuboh, Chowly, ItsaCheckmate, and Olo Dispatch via their respective APIs. For operators on a closed system, the skill works at the email + portal-CSV-export layer with a Notion DB or Google Sheet as the source of truth.
How does the aggregator reconciliation actually work?
+
Each morning the agent pulls the previous day's payout report from DoorDash, Uber Eats, Grubhub, and Postmates merchant portals (where API available, otherwise scheduled CSV export). It reconciles against POS-recorded orders for the same window. Missing orders, missing payouts, rate-card discrepancies, and refund anomalies are flagged. Most operators recover 1 to 4% of monthly aggregator revenue from disputes that would otherwise have gone unflagged.
Does it handle CloudKitchens or Reef Technology shared kitchen environments?
+
Yes. For operators leasing space in a CloudKitchens facility or a Reef Technology multi-merchant kitchen, the skill includes the operational-handle nuances of those environments: shared loading dock scheduling, shared driver pickup windows, facility-level utility billing reconciliation. The README block explains the integration setup for each.
Can it detect aggregator throttling or marketplace ranking drops?
+
It tracks conversion rate (orders / impressions) per platform per brand using each platform's analytics export. When conversion drops more than the operator-set threshold against the trailing 14-day average, the agent flags the brand for review. The most common cause is a marketplace ranking change driven by store-hours, completion rate, or aggregator-side promotion changes.
Can I modify this skill?
+
Yes. MIT licensed. Edit the routing rules, the reconciliation thresholds, the per-brand contribution margin floors, the marketplace ranking alerts. Most operators fork it within the first month to match their specific brand mix.
What does this cost to run on top of OpenClaw?
+
Token cost scales with order volume and brand count. A representative 200-order-per-day ghost kitchen with 4 brands sees monthly token spend in the $40 to $90 range. A 500-order-per-day kitchen with 8 brands sees $100 to $250.
How does this compare to Otter's built-in reconciliation features?
+
Otter's built-in reconciliation and Cuboh's payout matching are excellent at the single-aggregator job each handles. The OpenClaw skill reasons across all aggregators at once, layers per-brand contribution margin tracking on top, and detects marketplace ranking drops that neither tool surfaces. Most operators keep Otter and add this skill on top for the cross-aggregator operator workflows.
Can OpenClaw Consult build a customized version for my kitchen?
+
Yes. The free SKILL.md is the starting point. If you want it wired into your specific brand mix, your kitchen station layout, your aggregator portfolio, and your facility (CloudKitchens, Reef, owned) on a fixed-price two-week clock, the door is at openclawconsult.com/hire.
How do I keep the skill updated?
+
We post a changelog at openclawconsult.com/skills/ghost-kitchens and bump the version in the frontmatter. Updates track aggregator API changes (DoorDash and Uber Eats update their merchant APIs every 6 to 12 months) and the seasonal ranking pattern changes we see across operators.
Want the full implementation playbook?
Read the deep-dive guide for ghost kitchens
The playbook covers workflows, software integrations, compliance, ROI math, and a four-week rollout plan. The skill file above is a working slice of that build.
Read the ghost kitchens playbook →Related free skills
Free OpenClaw Skill for meal prep services
A working OpenClaw skill for meal prep companies running 200 to 5,000 weekly orders. Owns the Sunday 11:59pm cutoff cadence, the Monday kitchen prep sheet, the delivery route plan, and the macro-counted menu personalization, all from one SKILL.md drop-in.
Free OpenClaw Skill for bakeries
A working OpenClaw skill that runs the custom-order and wholesale workload for a working bakery. Custom cake intake, decorator calendar, lead-time enforcement, wholesale DSD coordination, cottage-food compliance routing, all from one SKILL.md drop-in.
Free OpenClaw Skill for juice bars and smoothie shops
A working OpenClaw skill for juice bars, smoothie shops, and cold-press operations. Owns the 1/3/5-day cleanse subscription cadence, the HPP cold-press production schedule, the corporate wellness account book, and the açaí bowl daily ops, all from one SKILL.md drop-in.
Want it wired to your stack?
The free skill is the starting point. If you want it plugged into your actual software, on a fixed-price two-week clock, with the founder writing every line, this is the door.