PAPER 001

What Used to
Take a Team.

I started the day trying to improve a customer profile.

By the end of it, ONE had coaching products, booking infrastructure, Personal Video Feedback and the foundations of its own application platform.

ADAM JUKES FOUNDER, ONE BLADES

I did not set out
to build a platform.

I started the day trying to improve a customer profile.

By the end of it, I had built the foundations of a software platform.

That was not the plan.

There was no specification for a platform. No development roadmap. No agency. No software team.

I just kept following one question:

Would this make things
better for the skater?

By the time I stopped, the answer had taken me much further than I expected.

The interesting part is that the customer does not see most of what was built.

They see something simple.

They sign into ONE.

They see ONE Academy.

They can see their ONE Credit, access learning, find coaching, use Personal Video Feedback and return to Your Academy to see their activity.

From their side, it is becoming one place.

They do not need to know what Shopify is doing.

They do not need to know which booking system is running.

They do not need to know where ONE's database lives.

They should never need to know what an API, webhook or authentication token is.

They just sign into ONE.

01

It started with
coaching.

I wanted ONE Academy to become more useful than a collection of lessons.

There are times when a skater needs direct help.

So we created two coaching products:

01

30-Minute Coaching

A focused session for a skater who needs help with a specific problem without booking a full hour.

02

60-Minute Coaching

More time when the problem, element or conversation genuinely needs it.

Then we connected the booking infrastructure.

Both coaching services use the same underlying availability.

If one session uses a piece of my time, that time is unavailable to the other service.

Customers see appointment times in their own timezone.

Payment remains inside Shopify rather than sending the skater into a completely separate payment system.

That also matters for ONE Credit.

Instead of creating disconnected systems for every new service, the aim is to let the existing ONE commerce infrastructure continue doing its job.

02

Not everyone needs
a coaching session.

Sometimes a skater does not need 30 minutes.

They need someone to look at one thing.

A jump.

A spin.

A position.

A specific problem they cannot understand.

That led to Personal Video Feedback.

The product is simple.

It costs $10.

The skater submits one skating video up to 60 seconds.

They choose one element or one specific problem.

They upload the video to YouTube as Unlisted and submit the link through ONE Academy.

That sounds easy.

Building it correctly was not.

How does ONE know
they actually bought it?

We could have made a form.

Someone buys Video Feedback.

We send them a link.

They fill it in.

I respond.

Done.

But that creates work for everyone.

The skater might need to enter their name, email or order number.

I might need to check whether they really purchased the service.

Someone who bought once could potentially submit repeatedly.

Refunds would need checking manually.

Feedback would live somewhere disconnected from everything else.

That is not much of a system.

I wanted something simpler for the skater.

03

One purchase should mean
one submission.

If a skater bought one Personal Video Feedback, ONE should already know.

Their account should simply show that they have one submission available.

If they bought two, they should have two.

If an unused purchase is refunded or cancelled, the entitlement should disappear.

When they submit, ONE should use exactly one entitlement.

No receipts.

No order numbers.

No proving that they paid.

The system should already know.

That one decision changed the scale of the project.

04

The profile needed
a brain.

Shopify is excellent at knowing what someone bought.

It was not designed to manage the entire workflow I was beginning to imagine.

So ONE needed somewhere to remember its own information.

We built a backend.

Then a database.

Now ONE can maintain records for things such as purchased entitlements, submissions, submission status, completed feedback and customer history.

But if ONE was going to hold customer-specific information, another problem appeared.

How do we know the person asking
for the information really is that customer?

The customer's browser does not tell ONE who they are and expect us to trust it.

Shopify signs their identity.

ONE verifies it.

Only then does the backend return information belonging to that customer.

That distinction matters.

A convenient system that exposes someone else's information is not a good system.

05

Then Shopify needed
to talk to ONE.

Knowing who the customer is solved only half the problem.

ONE also needed to know what happened in Shopify.

When somebody pays for Personal Video Feedback, ONE needs to create an entitlement.

When something is refunded, ONE needs to know.

When an order is cancelled, ONE needs to know.

So we connected Shopify's commerce events to ONE.

01

Order paid.

Shopify sends ONE a signed event.

ONE verifies that it genuinely came from Shopify, checks the exact product and variant, and creates the correct number of entitlements.

02

Order cancelled or refunded.

Shopify sends another signed event.

ONE verifies it and revokes unused entitlement without destroying work that has already been submitted.

03

Duplicate event.

ONE recognizes it and does not create the same entitlement twice.

Failed processing remains safely retryable rather than being mistaken for a completed event.

We tested this against the actual production store.

A controlled $10 order was created manually.

No card was charged.

Shopify sent the real paid-order event.

ONE received it.

ONE verified it.

ONE created exactly one Personal Video Feedback entitlement for the correct customer.

The order was then cancelled and refunded.

Shopify sent the cancellation and refund events.

ONE received them.

The entitlement became unusable.

That was the first time the entire commerce side existed outside a test environment.

06

The simple form
wasn't simple either.

Once the commerce engine worked, we returned to the customer.

They needed a form.

Two fields.

YouTube video link.

What would you like feedback on?

Then:

Submit for Feedback.

That was all the customer needed to see.

But underneath that button we needed to guarantee something important.

Pressing Submit twice should not consume two purchases.

A slow connection should not accidentally create two submissions.

If the response gets lost after ONE successfully receives the submission, retrying should not use another entitlement.

Initially we tried generating the secure submission identifier inside Shopify's customer-account application.

It failed.

The extension runtime did not expose the cryptographic capability we expected.

So we changed the architecture.

ONE's backend now generates a secure, short-lived submission attempt.

The customer submits using that attempt.

If something goes wrong and the request needs to be retried, ONE can recognize it as the same attempt.

One submission.

One entitlement.

No accidental duplicate.

The customer sees none of this.

They press a button.

That is how it should be.

07

Then I needed
my side.

Once a skater submits their video, somebody has to respond.

So we built a private ONE Academy admin system.

It is protected separately from the customer account.

A new submission appears as pending.

I can see the skating video and what the skater wants help with.

I can provide written feedback.

The system can also support a response-video link when demonstrating something makes more sense.

Then I mark the feedback ready.

The customer's ONE Academy updates.

Under Your Academy they now see:

Feedback ready.

Their submission has become part of their history.

That matters to me.

A lot of coaching disappears.

You have a lesson.

Someone gives you useful information.

The call ends.

A week later, some of it is forgotten.

I want ONE Academy to become somewhere a skater's work can accumulate.

Not meaningless gamification.

Actual learning.

Actual coaching.

Actual feedback.

Actual assessments.

Actual progress.

08

Then we tested
the whole thing.

Eventually there was only one test that mattered.

Could a real customer actually use it?

We temporarily activated the new ONE Account configuration.

I signed into a real customer account.

ONE recognized me securely.

A test entitlement was added.

ONE Academy immediately showed:

1 submission available.

I opened Personal Video Feedback.

Entered the video.

Explained what I wanted feedback on.

Pressed Submit.

ONE's backend created a secure submission attempt.

The entitlement was consumed.

The submission was saved.

The screen changed to:

Video submitted.

I returned to ONE Academy.

Without refreshing the page, the submission was already inside Your Academy.

It showed:

Submitted.

Then the admin side.

The submission was waiting.

Feedback was added.

It was marked ready.

Back in the customer account:

Feedback ready.

The feedback was there.

The entire loop worked.

Then we deleted the test data.

09

The failures are part
of the story.

It would be easy to tell this as:

I had an idea.

AI wrote some code.

It worked.

That is not what happened.

We repeatedly hit real technical constraints.

01

Shopify development did not behave like production.

Shopify would not let the development environment preview directly against the production store.

The Customer Accounts simulator also did not provide the same authenticated customer identity as a real signed-in account.

02

The first permissions were not enough.

Reading orders alone did not give ONE everything required to securely identify both the customer and the exact product variant.

We stopped, inspected the actual permission boundaries, and added only the access the system genuinely required.

03

Synthetic webhook testing hit a production security boundary.

Shopify's CLI test event used a synthetic shop identity.

ONE's production backend correctly rejected it because the shop did not match the real ONE Blades store.

We did not weaken the security rule just to make a test pass.

04

Draft products could not be used for the real order test.

The Personal Video Feedback product remained invisible inside Shopify's Draft Order picker while its status was Draft.

We temporarily made it Active while keeping it published nowhere, ran the controlled production test, then returned it to Draft.

05

Webhook retries exposed a reliability hole.

A failed webhook could have been left marked as processing and then mistaken for a completed duplicate on retry.

That could theoretically leave a paying customer without the entitlement they had bought.

We rebuilt the receipt lifecycle before activating the production webhook subscriptions.

06

Browser-side secure randomness failed.

The first submission design relied on cryptographic randomness inside Shopify's Customer Account extension runtime.

The runtime did not support what we expected.

Instead of weakening the system, we moved secure submission-attempt generation to ONE's backend.

07

One test did not actually test the button.

Browser automation appeared to activate Submit, but the real extension handler never fired.

We stopped rather than pretending the application had failed.

A normal browser interaction later proved the real behavior.

08

Successful submission still exposed stale account state.

The submission completed correctly, but returning to ONE Academy initially showed the old entitlement and history state.

We traced the mounted extension lifecycle and added an explicit refresh before navigation.

09

Mobile testing had to become real too.

Browser emulation interfered with earlier interaction testing.

So the final mobile sign-off happened on an actual phone inside the real signed-in customer account.

Build. Test. Fail. Understand.
Change. Test again.

Over and over.

The interesting part was not that AI magically knew the answer.

It did not.

The difference was how quickly we could move through that loop without losing the context of everything we had already learned.

10

What the skater
actually got.

It is easy to get distracted by the technology.

The technology is not the point.

The skater got something better.

They can increasingly come to one place.

ONE Account.

01

One place to return to.

The customer does not need to remember which service, booking tool, email thread or external page contains the thing they need.

ONE Account becomes the front door.

02

Their ONE Credit is visible.

The value already attached to their account is visible inside the same environment where future eligible services can live.

03

Learning sits beside help.

Lessons and guides do not need to exist separately from coaching and feedback.

A skater can learn independently, then ask for personal help when they need it.

04

Coaching fits the problem.

A skater can choose a live session when direct conversation is useful.

They do not need to buy more time than the problem requires.

05

Video Feedback solves a smaller need.

Not every skating problem requires a live call.

One short video and one specific problem can be enough to get useful personal feedback.

06

They do not need to prove what they bought.

ONE already knows whether they have an available submission.

The purchase becomes capability inside their account.

07

Their work can begin to accumulate.

A submission does not have to disappear into an email thread after it is complete.

Your Academy can become a useful record of learning, coaching, feedback and future assessment.

11

What actually exists
underneath.

From the customer's side, it looks like a clean account page.

Underneath it now sits:

01

Customer identity

A first-party Shopify Customer Account application, signed customer identity and authenticated communication with ONE's backend.

02

Commerce

Coaching products, Personal Video Feedback, ONE Credit visibility, booking infrastructure and Shopify checkout.

03

ONE's own application layer

A production backend and database capable of remembering entitlements, submissions, statuses and customer history.

04

Commerce events

Signed Shopify webhooks for paid orders, refunds and cancellations, with retries and duplicate protection.

05

Security

Encrypted Shopify credentials, OAuth, session-token verification, rate limiting, customer isolation and protected admin access.

06

Submission infrastructure

Secure server-generated submission attempts, atomic entitlement consumption, safe retries and persistent customer history.

07

Human review

A private ONE Academy admin interface where submitted work can be reviewed, completed and returned to the correct customer.

08

Testing

Automated backend and extension tests, real production-order testing, real signed-customer testing and physical-phone verification.

By the end, the backend alone had more than 80 automated tests, with additional tests around the customer application.

All of that so the customer can press:

Submit for Feedback.

And have it work.

12

What would this have taken
before AI?

This is where the day became difficult for me to ignore.

Imagine commissioning the system after it already exists.

You would potentially need expertise across Shopify development, frontend development, backend development, database architecture, authentication, infrastructure, security, user experience, testing and ecommerce operations.

Then someone has to coordinate all of it.

A strong independent developer could potentially cover much of that.

An agency could assemble the different skills.

But this is not a small Shopify theme customization.

A conventional build would reasonably be measured in weeks or months rather than hours.

Depending on who built it and how much discovery was required, an agency replacement cost could reasonably run into tens of thousands of pounds.

Perhaps £25,000.

Perhaps £60,000.

Potentially more with a larger specialist agency.

Those are not valuations of what ONE built.

They are estimates of what it could reasonably cost to commission comparable work conventionally.

And there is another problem with even making that comparison.

I could not have commissioned today's
finished system this morning.

I did not know what it was yet.

13

That may be
the biggest change.

This morning I did not have a specification saying:

Build an authenticated Shopify Customer Account application connected to a Cloudflare backend with an entitlement ledger, webhook retry lifecycle, encrypted OAuth credentials, protected administration and an asynchronous coaching workflow.

I was trying to make the customer experience better.

One question led to another.

01

Could ONE Academy live inside the account?

If the customer already has a ONE account, why should their learning and services feel disconnected from it?

02

Could coaching live there?

That led to coaching products, shared availability and booking infrastructure.

03

Could ONE Credit be visible there?

The account could begin showing the customer value that already belongs to them.

04

Could someone submit a video?

That became Personal Video Feedback.

05

How would ONE know they had paid?

That created the entitlement system.

06

How would we stop one purchase being used twice?

That led into atomic consumption, secure submission attempts and idempotent retries.

07

What happens after a refund?

Shopify's commerce events needed to update ONE's entitlement records automatically.

08

Where does my feedback go?

That required the private admin workflow.

09

Could it remain in their Academy?

That became the beginning of persistent customer history inside Your Academy.

Each answer exposed the next useful question.

Historically, the cost of following those questions would have become the limiting factor very quickly.

At some point I would have needed to stop.

Write a specification.

Find developers.

Get quotes.

Find capital.

Decide whether the idea justified spending tens of thousands before knowing where it would ultimately lead.

AI changed that equation.

AI dramatically reduced the cost
of continuing to ask:
what would make this better?

14

This was not
one AI.

There is another important part of the process.

I was not asking a chatbot to make an app.

Different systems increasingly played different roles.

01

Human judgment

I made the product decisions.

I brought decades of skating experience, the customer context and the understanding of what I wanted ONE to become.

I remained responsible for consequential decisions around permissions, billing, publishing, customer data and real-world testing.

02

ChatGPT

ChatGPT worked with me on strategy, architecture, decisions, specifications and challenging what we were building.

When implementation exposed a new constraint, the next step could be redesigned around the evidence rather than the original assumption.

03

Codex

Codex worked directly with the repository, terminal, Shopify, Cloudflare, browser, tests and deployments.

It increasingly acted as the execution layer rather than simply producing code for someone else to run.

At different points, one system could inspect or challenge what another had proposed.

And the real store, real browser, real backend and real customer remained the final source of evidence.

The interesting capability was not one enormous prompt.

It was the loop.

Human judgment AI reasoning AI execution
Real-world test Evidence Correction.

Then repeat.

That is very different from asking AI to write something for you.

15

Tomorrow does not
start from zero.

This may be the part with the biggest long-term consequence.

We did not build all of that infrastructure solely for a $10 Video Feedback product.

We now have reusable building blocks.

01

Identity

ONE can securely understand which signed-in customer it is serving.

02

Commerce events

ONE can react when an eligible service is purchased, refunded or cancelled.

03

Entitlements

A purchase can become something the customer is allowed to use.

04

Submissions

A customer can send work into ONE through an authenticated workflow.

05

Human review

ONE can receive that work, review it and return a result.

06

Customer history

The result can remain attached to the customer's Academy rather than disappearing.

07

Administration

ONE has a protected operational side for managing the work behind the customer experience.

08

Infrastructure

Authentication, database, Shopify integration, security and retry behavior no longer need to be invented again for every service.

That means the next service does not begin where this one began.

Assessments can reuse much of the same infrastructure.

A customer purchases an assessment.

ONE knows they are entitled to it.

They submit what is required.

A human assesses it.

The result becomes part of Your Academy.

Coaching can increasingly connect into the same customer history.

Certificates can eventually represent actual completed requirements.

Other ONE services can use the same identity and entitlement systems.

The first workflow had to build the road.
The next ones get to drive on it.

That is where the economics become even more interesting.

ONE BUILD PAPERS · PAPER 001

The customer still
sees a profile.

After all of that, I opened ONE Academy on my phone.

It looked simple.

A clean account.

Learning.

Coaching.

Video Feedback.

Your Academy.

Nothing about it screamed: look how complicated the technology underneath this is.

Good.

It shouldn't.

The customer should not experience our complexity.

They should experience the benefit.

I started the day trying to improve a Shopify customer profile.

I ended it with the foundations of ONE's own application platform.

I did not plan that.

I followed the problem.

Before AI, the cost of following it this far would probably have stopped me long before I discovered where it led.

That may be the most important thing I built today.

The complexity belongs underneath.
The simplicity belongs to the skater.

RETURN TO SERIES

ONE Build Papers