← All work

Office furniture · Workplace services

Create Spaces

Every booking since 2009, verified and in one place.

The company’s booking history back to 2009, verified to the cent in its own AWS storage, with a dashboard and a read-only ChatGPT connection live behind a company sign-in; every answer ties its figure to the report row it came from. A daily AI export agent is built and being proven run by run.

PROJECTCreate Spaces
MY ROLESoftware Engineer · Manifold
STAGEDashboard and ChatGPT connection live · daily export being proven
A dashboard page with a daily summary card and four period totals

The dashboard’s Overview: yesterday’s summary and the totals for the chosen period. A local run of the product’s own code with invented bookings in the report’s exact format; real figures stay private.

The context

A problem worth solving.

Sales information lived inside the company’s desktop business system, as reports someone had to run and export by hand. The team wanted the full history in one place and a safe way to ask questions without losing the original numbers.

My contribution

What I brought to the work.

Built the export agent and its verification, the storage and alerting on the company’s own AWS account, the dashboard and the read-only ChatGPT connection. An AI agent with its own cloud computer is set to sign in to the business system each morning and export the previous day’s report, so no one’s computer has to be on; every file is checked against the report’s printed totals before it is kept. The first supervised cloud run passed every check, and unattended runs are being confirmed.

The product

What it makes possible.

Five parts follow: the dashboard, the report rows behind each figure, the daily export and its checks, the ChatGPT connection, and who gets in. Each screen is a local run of the product’s own code with invented bookings; the company’s real figures stay private.

01

No one’s computer required

A hosted AI agent with its own cloud computer is scheduled to sign in to the business system each morning and export the previous day’s Booking Report as Excel. The first supervised run passed every check; unattended runs are being proven.

02

Every line checked

A report is kept only when its lines add up to the report’s own printed totals to the cent. The full history back to January 2009 was verified the same way.

03

The company’s own cloud

Storage sits in Create Spaces’ own AWS account, blocked from public access, with health alarms, a spending alert and an activity log.

04

Ask in your own ChatGPT

Each person connects their own ChatGPT through a read-only connection, switched on in October 2026. The connection returns every figure with the report row it came from and has no way to change the data.

05

See the business

A dashboard opens on the latest day, then bookings, gross profit and margin by salesperson for the latest day, the last 7 days, the month so far or all saved history, the original Excel rows, and a calendar of every day received.

At a glance / simplified product view

  1. 01Business-system report
  2. 02Verified daily export
  3. 03Dashboard and ChatGPT answers

The dashboard

Yesterday’s bookings, then any period, without opening a report.

The dashboard opens on the latest report day in one paragraph of figures, then shows bookings, gross profit, margin and orders for the latest day, the last seven days, the month so far or everything saved, ranked by salesperson.

A dashboard page with a daily summary card and four period totals
The morning viewYesterday’s summary with its largest bookings and what is worth a look, above the totals for the chosen period. Local run of the product’s own code with invented bookings in the report’s exact format.
Period totals above a bar chart of bookings by day and a ranked list of salespeople
The month so farMonth to date: the four totals against the same days last month, bookings by report day and the salespeople ranked. Local run of the product’s own code with invented bookings in the report’s exact format.
A table of bookings with filters and a report-row column
Every booking, searchableBooking details with search, salesperson, booking type and sort; each line ends with the report day and row it came from. Local run of the product’s own code with invented bookings in the report’s exact format.
A dashboard with a notice that the chosen period would split a saved report
It says what it cannot answerAsked for a period that would split a multi-day report, the page declines and says why instead of showing a partial total. Local run of the product’s own code with invented bookings in the report’s exact format.

Sources

Every figure opens the Excel row it came from.

Nothing on the dashboard is a number on its own. A figure links to its line in the saved report, shown exactly as it was exported, and the original workbook can be downloaded.

A reports page with one spreadsheet row highlighted
From a figure to its rowThe largest booking on the Overview, opened in Reports: the row is found and highlighted in the original report. Local run of the product’s own code with invented bookings in the report’s exact format.
Spreadsheet rows of a booking report with one row highlighted
The row among its neighboursThe same row in place, with the customer totals and salesperson totals around it as the report printed them. Local run of the product’s own code with invented bookings in the report’s exact format.
A spreadsheet rendered as a table with a selection block and booking rows
The workbook itselfOne exported workbook as a table: the selection block that records how the report was run, then the bookings grouped by salesperson. A plain render of the file’s cells. Local run of the product’s own code with invented bookings in the report’s exact format.
A form for dates and a salesperson above calculated totals and booking lines
A calculated view across reportsA view calculated over whole saved reports for one salesperson and one month, each line linked to its original row. Local run of the product’s own code with invented bookings in the report’s exact format.

Collection

An agent collects the report; every file is checked before it is kept.

First supervised run passed every check · the daily schedule is being proven run by run

An AI agent with its own cloud computer is set to open the business system each morning and export the previous day’s report. The Exports page shows what is collected, when it last arrived and when the next one is due, and each file is kept only if its lines add up to the report’s own printed totals.

An exports page with a report card, a calendar of days and a usage figure
What is collected, and whenThe report being collected, its health, the last and next delivery, the days received and the month’s service cost against its budget. Local run of the product’s own code with invented bookings in the report’s exact format. The calendar of real report days is an existing capture of the live dashboard and shows no figures.
A list of six numbered steps under a report card
The steps the agent followsThe six steps written out for the people who rely on the report: which report, which records, which day, how it is grouped, and that it is exported and checked. Local run of the product’s own code with invented bookings in the report’s exact format. The calendar of real report days is an existing capture of the live dashboard and shows no figures.
A verification receipt in two columns above a table of booking lines
The check each file must passThe receipt written for one workbook: its fingerprints, row and subtotal counts, the report’s printed totals, and eight checks that must all be true, above the checked table of its booking lines. Local run of the product’s own code with invented bookings in the report’s exact format. The calendar of real report days is an existing capture of the live dashboard and shows no figures.
Calendar of every report day received from 2009 to September 2026
Every day receivedReport days received on the live dashboard: the latest 31 days on a calendar, beside the count of every day received since January 2009. An existing capture; it shows coverage, not figures. Local run of the product’s own code with invented bookings in the report’s exact format. The calendar of real report days is an existing capture of the live dashboard and shows no figures.
An exports page with a Late badge and a sentence about the failed delivery
When a delivery failsA failed delivery is stated in plain words: the newest report is late, earlier reports are unaffected, and it is retried after review. Local run of the product’s own code with invented bookings in the report’s exact format. The calendar of real report days is an existing capture of the live dashboard and shows no figures.
A one-page document of totals and small tables
The one-page morning briefThe brief built from the same saved reports: the day’s totals, the change against earlier days, new against changed bookings and the largest bookings, each with its source row. Local run of the product’s own code with invented bookings in the report’s exact format. The calendar of real report days is an existing capture of the live dashboard and shows no figures.

The ChatGPT connection

Each person asks in their own ChatGPT; the connection can only read.

The connection gives ChatGPT a small set of read-only tools over the saved reports. Every answer carries the report, sheet and row behind each figure, and a request without a valid company sign-in is refused before any data is read.

A connections page with a ChatGPT card saying it is ready to connect
Set-up, written for the person doing itThe Connections page: what is needed, how long it takes, before the eight numbered steps, which are ticked off as they are done. Local run of the product’s own code with invented bookings in the report’s exact format. The terminal pictures are the product’s own proof scripts run on this machine against stand-in storage; no AI answer is shown.
A list of example questions above privacy and help notes
Questions to try, and how to stay privateEight questions to copy, a plain statement that ChatGPT can only read, how to keep chats out of training, and answers to the usual set-up problems. Local run of the product’s own code with invented bookings in the report’s exact format. The terminal pictures are the product’s own proof scripts run on this machine against stand-in storage; no AI answer is shown.
Terminal output of a request and a structured answer with totals and a citation
One question, as the connection answers itA tool call as ChatGPT would send it and what comes back: the period covered, exact totals, one group per salesperson, and a citation naming the report, sheet and row. Local run of the product’s own code with invented bookings in the report’s exact format. The terminal pictures are the product’s own proof scripts run on this machine against stand-in storage; no AI answer is shown.
Terminal output listing refused requests with their status codes
What it refusesThe same proof run: no sign-in, a forged or expired sign-in, the wrong app and an uninvited person are each refused, and storage is not read until an invited person asks. Local run of the product’s own code with invented bookings in the report’s exact format. The terminal pictures are the product’s own proof scripts run on this machine against stand-in storage; no AI answer is shown.

Access and operation

Private to the company, with the controls kept for the operator.

The reports sit behind a company sign-in that admits only invited addresses. The schedule, the monthly budget and the pause switch are shown to the service operator alone.

A front page with a headline about each morning’s booking report and a sign-in button
The front doorWhat anyone without a sign-in sees: one sentence about what this is, and that access is by invitation. Local run of the product’s own code with invented bookings in the report’s exact format.
A page saying this account is not invited yet
Not invited yetA real sign-in from an address that is not on the guest list is told so, and that nothing was opened. Local run of the product’s own code with invented bookings in the report’s exact format.
Terminal output of status codes for signed-out, forged, outsider and invited requests
The front door, provenThe dashboard’s own proof script: the front door answers, data without a session or with a forged one is refused, an outsider is refused, and storage is read only once an invited person asks. Local run of the product’s own code with invented bookings in the report’s exact format.
An operator panel with schedule, budget figures and daily charges
The operator’s controlsThe operator’s local console: the active schedule and next start, the monthly budget with what is used and what remains, and the day-by-day cost of each run. Local run of the product’s own code with invented bookings in the report’s exact format.

Engineering choices

The decisions behind the interface.

01

Verify before keeping.

A new report replaces nothing until its rows reconcile with the report’s printed totals. A failure keeps the last good data in place and raises an alert.

02

Point every answer at its row.

The ChatGPT connection is read-only and returns the Excel row behind each figure, so an answer can be checked against the source.

More than 1,200 automated tests cover the export, verification, dashboard and connection. The dashboard and the ChatGPT connection went live on 1 October 2026; the daily schedule is the remaining rollout step.

Where it stands

Live, and still rolling out.

The verified history, the dashboard and the ChatGPT connection are live on the company’s own AWS account, behind a company sign-in. The daily schedule is being proven run by run.

Keep exploringDIY kit data migration