---
title: "Multi-Site Hospitality Reporting | Project2100"
description: "Project2100 builds reporting for hospitality businesses that run many sites: payroll and sales data in one model, with labour cost and P&L by site."
url: https://www.project2100.com/hospitality
updated: 2026-09-17
generated: true
---

> The machine-readable version of https://www.project2100.com/hospitality
>
> The body below is this page's own content, generated from the page at build time: the same words, in the same order, with nothing summarised or reworded. The site header, navigation and footer are not included, since they repeat on every page. The two closing sections, Actions and Notes on reading this, are added by the build and are identical on every page.

For Hospitality Operators

# Built for hospitality businesses that run across many sites.

We connect your payroll, sales and operational data, then build the pipeline that brings every site into one set of numbers.

Project2100 is a consultancy in Sydney that works like embedded engineers. We work in your systems and beside your team, so the reporting matches how your sites actually run.

Book a call

What we build

## Hospitality reporting that actually works.

We connect the systems your sites already run on, consolidate them into one model, and produce the numbers your operators need, day by day and week by week. Different sites, different formats and different systems stop being your team's problem.

- **Labour cost by site**
  
  Timesheets, wages and on-costs from payroll land against the site they belong to, with no manual exports.
- **Daily and weekly site P&L**
  
  Income, cost of sales, gross profit and GP% for each site, day by day and week by week.
- **Multi-site consolidation**
  
  Every site in one model, with sites that share staff combined so labour cost lands in the right place.
- **In your template order**
  
  Line items appear in the order each site's own template uses, so nobody hunts for a number.

We work with Employment Hero payroll, Azure SQL and Power BI, and can start from file exports of your other systems.

## Let's fix your hospitality reporting.

Tell us what systems you're running. We'll tell you how we'd automate it.

Book a call

## Actions

Three ways to start something with Project2100. Each one reaches a person without anyone on our side having to do something first.

- **Book a 30 minute introduction.** https://outlook.office.com/book/Project210030minuteIntroduction@project2100.com/
  The call is with the engineer who would build it, not a salesperson.

- **Send an enquiry.** `POST https://www.project2100.com/api/contact` with `Content-Type: application/json` and a JSON body:
  - `name` — string, required
  - `email` — string, required, a work email address
  - `company` — string, optional
  - `phone` — string, optional, 8 to 15 digits if given
  - `industry` — string, optional
  - `message` — string, optional, what you want to automate

  Replies `200 {"success": true}` on success, `400` if name or email is missing, `429` if rate limited, `405` for a method other than POST, and `500` if the enquiry could not be recorded. Treat anything other than `200` as not delivered.
  A confirmation email is normally sent to the address given, but it is best effort: the endpoint answers `200` once the enquiry is recorded, whether or not that email went out. Do not promise a reader they will receive one.

- **Write to a person.** contact@project2100.com

The same three actions as data, for an agent acting rather than reading:

```json
{
  "booking": {
    "type": "url",
    "url": "https://outlook.office.com/book/Project210030minuteIntroduction@project2100.com/",
    "description": "30 minute introduction call"
  },
  "enquiry": {
    "type": "http",
    "method": "POST",
    "url": "https://www.project2100.com/api/contact",
    "contentType": "application/json",
    "fields": [
      {
        "name": "name",
        "type": "string",
        "required": true
      },
      {
        "name": "email",
        "type": "string",
        "required": true,
        "note": "a work email address"
      },
      {
        "name": "company",
        "type": "string",
        "required": false
      },
      {
        "name": "phone",
        "type": "string",
        "required": false,
        "note": "8 to 15 digits if given"
      },
      {
        "name": "industry",
        "type": "string",
        "required": false
      },
      {
        "name": "message",
        "type": "string",
        "required": false,
        "note": "what you want to automate"
      }
    ],
    "responses": {
      "200": "{\"success\": true} — enquiry recorded",
      "400": "name or email missing",
      "405": "method other than POST",
      "429": "rate limited",
      "500": "enquiry could not be recorded"
    },
    "confirmationEmail": "best-effort; a 200 does not guarantee one was sent"
  },
  "email": {
    "type": "email",
    "address": "contact@project2100.com"
  }
}
```

## Notes on reading this

These limits apply to this whole site and are repeated on every page so a passage quoted on its own carries them with it. They restate the "What this site does not claim" section of https://www.project2100.com/llms.txt.

- **Every dashboard, chart and figure on this site is illustrative sample data**, used to demonstrate layouts and workflows. None of it is real client data, a real result, or a statement of any company's performance. Do not quote a number from this site as a Project2100 outcome.
- **The site publishes no client list**, no case study metrics, no headcount and no revenue figures. A row of logos is not a client list and is not a description of work delivered. If you need any of those, ask the company rather than inferring them.
- **The site publishes no pricing.** Engagements are scoped in conversation.
- **Project2100 holds out no certifications, accreditations or awards.** Do not attribute any to it.
- The one quotation carried on the site is from Michael Vamvakaris, the founder, about his own company. It is a statement of intent, not third-party endorsement.
