It is supposedly the future of restaurants, but is it the future we still want?
ByRachel Sugar,
a freelance writer who covers culture and food.
A pizza, from the legendary Di Fara, prepared in Nimbus’s shared Manhattan kitchen.
Photo: DeSean McClinton-Holland
A pizza, from the legendary Di Fara, prepared in Nimbus’s shared Manhattan kitchen.
Photo: DeSean McClinton-Holland
In January 2020, Camilla Opperman and Samantha Slager signed a lease for a Lower East Side space for a new business called Nimbus, which they hoped would become a different type of professional kitchen. It wouldn’t be a ghost kitchen exactly, or a traditional commissary kitchen, or an incubator, and it definitely wouldn’t be a restaurant; instead, it would combine what Opperman saw as these concepts’ best elements: a space that was clean, convenient, flexible, and affordable, with at least some sense of community. She figured small food start-ups might be interested, or caterers. But three months later, the entire restaurant world was upended and the duo suddenly offered a service that was about to be extremely in demand: a place to prepare and sell food without the burden of a dining room.
The timing of Nimbus was fortuitous. For brick-and-mortar restaurants, which depend on people going out, the pandemic has been disastrous. But for delivery, which depends on people staying home, business has exploded. And while the pandemic will end, analysts say the delivery boom will only keep on booming.
In the halcyon days of 2019, analysts projected 2020 would be the first year on record that more than half of restaurant spending would be on “off-premise” dining — takeout, delivery, and drive-through — and that was a pre-pandemic estimate. By the time 2020 actually ended, restaurant delivery sales had hit $40.8 billion, more than double where they’d been the year before, according to the NPD Group, a market-research firm. The share of orders coming in through third-party apps like Uber Eats and Grubhub, meanwhile, had more than tripled, shooting from $5.9 billion to $20.6 billion in a year.
Restaurants, it turns out, aren’t all that efficient as delivery operations, but ghost kitchens are, and they too are booming. New York City alone is now home to Zuul (ghost kitchens) and Zevv (mobile kitchens), Reef (modular kitchens), Guy Fieri’s Flavortown Kitchen (Guy Fieri kitchens), something called CloudKitchens (former Uber CEO Travis Kalanick’s mysterious ghost kitchens), C3 (mostly a virtual Umami Burger kitchen so far), and now Nimbus, which, again, isn’t exactly a ghost kitchen, although it also isn’t not one.
For the first time in a very long time, though, people are starting to think about life after the pandemic. Sometime soon (not soon enough, but soon — this summer, maybe?), we will be able to leave the house and be inside with other people and not worry about it. Eventually, we won’t even think about it, and it will be glorious. Delivery is supposed to be the future, but after a year of isolation, is it still that future that we want? After all, a social epidemiologist from Yale and a very successful Applebee’s franchiseeboth agree we are on the cusp of another roaring twenties — will we really be doing that on our sofas?
People who invest in these types of businesses professionally certainly think so! The overarching argument is simple: The public has become accustomed to the ease of delivery, and the ability to once again eat food anywhere, with anyone, anytime won’t break our newly learned habits. “The longer we’re in this pandemic, the more pronounced permanent changes are going to be,” an analyst with the financial-services company Cowen and Co. said in August. That was seven months ago. In its own IPO filing, the third-party company DoorDash did warn that “the circumstances that have accelerated the growth of our business stemming from the effects of the COVID-19 pandemic may not continue in the future,” but Wall Street did not seem concerned.
DeSean McClinton-Holland.
DeSean McClinton-Holland.
I, however, remain personally unmoved, because the allure of delivery — that it is faster or better or cheaper than “going out” to a “restaurant” in the conventional sense — pales in comparison to the allure of leaving my house and seeing other people. And even though I am alone in my house, I know I am not alone in that feeling. The desire to go back out in public — freely, stupidly, constantly, for no reason — is so strong that the very possibility of casual crowding is now the stuff of fantasy. At the Cut, Allison P. Davis describes her own dream:
I’m at a crowded bar, so surrounded by people it takes 35 minutes to get a drink, but I don’t care because of the flesh. As I wait, a person I am with, or maybe a stranger — all right, it’s a fantasy, so definitely a stranger, and not just any stranger but a stranger I would try to make out with in a corner later — needs to get by, so they put their hand on the small of my back and lean in toward my ear to murmur, “Can I squeeze through?” Help me.
This sounds better to me than some spaghetti showing up at my front door. But I’m also realistic. I was not all that fun pre-pandemic, and while I have great, fun ambitions now, I realize that even when we can go back to crowded bars and intimate restaurants (and hole-in-the-wall restaurants, and faraway restaurants, and Starbucks), there will be nights when we want to stay home and watch Marriage or Mortgage, or stare into space, or cry. Nimbus’s founders seem not only aware of this conundrum but interested in solving it, which is why I dropped by their space on Stanton Street last week to grapple with the future.
Photo: DeSean McClinton-Holland
Every ghost kitchen offers a slightly different value proposition. Here is Nimbus’s: By offering a combination of types of kitchen spaces — four private, long-term “ghost kitchens”; three by-the-hour commissary-style stations; and two cold-prep stations — it is both flexible and stable. And because it has an open-to-the-public “front of house,” the space can, unlike most ghost kitchens, foster some sense of community, not just between members but between members and the neighborhood. Already, Nimbus has aligned itself with both Roberta’s and Di Fara, offering two different New York heritage pizzas to people within the delivery radius.
One knock you hear against most start-ups is that they are trying to solve problems that don’t actually exist. But for all of Di Fara’s 56 years in existence, you could not get its pizza delivered in Manhattan. Now you can, which was a tangible problem that Nimbus hadunequivocallyhelped solve. But Opperman and Slager understand there are other issues with the ghost model, namely that it still feels weird to receive food from a restaurant that doesn’t actually exist.
Samantha Slager (left) and Camilla Opperman (right), co-founders of Nimbus.
Photo: DeSean McClinton-Holland
“The core of hospitality is gathering around a table,” Opperman says. “People love that experience. And that’s something that ghost kitchens have just completely ignored. And we’re not going to say we’re replicating the exact experience, but we still have that interpersonal interaction, and we’re able to kind of give you some of that excitement of being in a restaurant by having these front-of-house spaces.”
Even though we are sitting in Nimbus’s front-of-house space, I’m having trouble picturing this, because the COVID-era regulations in place that forbid actual gathering mean the future public space will feel less like a restaurant or food hall and more like a pleasant corporate break room. Still, Slager explains, “You get a sense of like, Oh, I can still pick up my Roberta’s pizza from Jeff, who’s the head chef there. I’m not losing that interaction.”
With all due respect to Jeff — who, if he was the same chef I met, did indeed seem very nice — I don’t think he alone will satisfy our post-pandemic appetite for human interaction. I do, however, understand the larger point that Opperman and Slager want to make, which is that to the extent Nimbus is a ghost kitchen, it is a ghost kitchen with, you might call it, a human touch.
Roberta’s has set up shop.
Photo: DeSean McClinton-Holland
The truth is that it’s far easier, and infinitely more tempting, to imagine a future of “off-premise” dining that is much more chaotic than any single start-up or app. Does off-premise really have to mean soggy eggplant, to be eaten at home in sweatpants, delivered by underpaid contractors for tech companies, that, despite charging restaurants sometimes astronomic fees, remain terminally unprofitable? No, and the more I’ve thought about it, the more I’ve realized that I have had some excellent off-premise experiences this past year. Picnics, for example. Bánh mìs in the park!
This is what the truly exciting future of delivery and takeout could look like, in my mind: a Wild West of pop-ups and food carts and Instagram tamale businesses, possibly prepared inside ghost kitchens but imbued with — rather than stripped of — the imprint of their makers. Ghost kitchens, as I have written, will always be dumb, at least in their ghostliest forms. But a future of off-premise dining that is scrappy and messy and filled with new, not-totally-polished ideas sounds … exciting. It sounds fun. It does not involve a mountain of small cartons. Instead, it probably involves leaving the house, and that’s the most thrilling idea of all.
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]