Product shaping
Converted a loose and changing outline into clear workflows, product rules and delivery priorities.
Case study
PlasticFree · Subscription SaaS platform
As sole developer, I turned an evolving startup concept into a collaborative subscription platform combining structured publishing, visual search, organisation accounts, payments and shared project collections.

PlasticFree was conceived as a design and materials intelligence platform helping creative teams discover alternatives to conventional plastic and make more informed decisions about products and packaging.
My involvement began in April 2022, when the startup had a strong purpose and a broad outline of what it wanted to create, but many of the product decisions still needed to be made. Working through workshops and weekly meetings, I helped translate an evolving vision into defined user journeys, content structures, permissions, subscription rules and buildable priorities.
Working from Made Thought’s brand and initial creative direction, I collaborated with Integral to extend the design across the complete digital product, including responsive behaviour, application states and functionality that emerged during development. When both design teams had completed their involvement, I continued resolving the remaining interface and product-design decisions alongside all development work.
PlasticFree launched in January 2023. I was the sole developer responsible for its architecture, data model, CMS, frontend, backend, search, media processing, Stripe integration and deployment.
Early requirements moved frequently as the team explored what the product could become. My role was to turn those discussions into decisions the platform could support coherently.
Regular workshops were as important as the code. I mapped relationships between content, users, organisations, subscriptions and collaborative projects; surfaced decisions that were blocking progress; and helped the team commit to a launch scope while leaving sensible room for the product to evolve.
Converted a loose and changing outline into clear workflows, product rules and delivery priorities.
Designed the shared structures connecting editorial content, media, subscriptions, organisations and projects.
Extended the creative direction into responsive application screens, system states and interactions.
Built and integrated the complete platform as its sole developer, from publishing tools to payments.
PlasticFree brought together staff and freelance contributors overseen by a head of content. They needed the freedom to create at pace without weakening editorial control or making mistakes difficult to reverse.
I extended SimpleCog with configurable roles covering contributors, editors, heads of content, core administrators and super administrators. Access could be limited by responsibility, contributors could submit work without publishing it, and editors could approve, reject or return content for further work.
Materials, makers, insights, inspiration and “On Our Radar” updates each had page-aware editing templates with blocks suited to that content type. Underneath, they shared the same core structures, keeping the editorial experience consistent while allowing each format to behave differently. “On Our Radar” items could work as lightweight overlays or be linked directly, opening the relevant item when the page loaded.
A busy editorial team needed a complete history of who changed what and the confidence that previous content could be restored safely.
I built versioning around the individual content blocks that made up a page. When an editor created a revision, unchanged blocks were referenced from the existing version rather than saved again. Only an altered text, image or layout block created a new record, which the new page version then indexed.
This preserved a detailed history while avoiding full duplicate copies of every page. Editors could see authorship and changes, reinstate an earlier version when required and continue working with the familiar block-based interface.
Record every meaningful change without storing the same unchanged content repeatedly.
Versioning principle
The visual quality of the platform depended on a large, searchable pool of material photography, brand assets, maker imagery, insight graphics and “On Our Radar” media.
Content creators could upload original files at full resolution—including source images as large as 15MB—organise them by purpose and find them again through the media library. Editors could select the important focal point so automated crops retained the subject across different layouts and screen shapes.
Instead of eagerly generating a generic collection of sizes for every upload, the platform created an optimised derivative only when an image was first required in a particular context. That avoided producing and storing variants that might never be used while still removing manual image preparation from the editorial workflow.

Search had to work across every major content type and respond as users typed, while returning image-rich results without repeatedly querying and rendering the full underlying content.
I created a condensed, compiled representation of searchable page content and cached it separately from the primary database. A second cache stored reusable result sets. As someone typed, each keystroke narrowed the results already found by the previous query rather than starting from the entire library again.
Results were weighted according to relevance signals such as the frequency of the search term. Editors could also associate alternative or commonly misspelled terms without making the visible page copy repetitive. Previous and common searches remained cached until a relevant CMS update invalidated them.
Users could then refine results through the full set of structured properties attached to materials, makers and other content. In a recent informal spot check, a search view containing 19 large images returned in approximately 106ms.
The original product combined free discovery with paywalled content for students, individuals, teams and larger organisations. Plans were seat-based, with additional sharing and administration features above the personal tier.
I integrated Stripe throughout custom PlasticFree interfaces rather than sending users away to a generic billing portal. The platform handled trials, discounts, upgrades, downgrades, cancellations, failed payments, invoices and grandfathered subscriptions, together with confirmation and transactional emails.
Webhooks kept product access aligned with the billing state. Successful payments unlocked content immediately. If a renewal failed, members retained enough account access to resolve the problem while paid content became unavailable. Organisation administrators could invite or remove people and manage seats themselves, while PlasticFree staff retained equivalent support controls in the CMS.
Reducing seats also raised a product problem beyond billing: what should happen to work belonging to a departing member? Administrators could transfer that person’s projects to another account so organisational knowledge was not lost with the seat.
Finding a material or idea was only the beginning. Members needed a way to collect useful information around the real products and packaging challenges they were working on.
Users could save materials, makers, insights and inspiration into visual projects. Projects could remain private, be shared across an organisation or be opened to specific invited collaborators, who could contribute to the same collection.
The audience ranged from students and individual creators to teams within organisations including Logitech, HP, Unilever and Crayola. The same underlying model needed to remain understandable for one person while supporting company-wide membership and knowledge sharing.
Search and filter connected content across materials, makers, insights and inspiration.
Save relevant items into a visual project built around a real piece of work.
Keep a project private, share it company-wide or invite selected collaborators.
Transfer projects when seats changed so useful organisational work remained accessible.
Each revision referenced unchanged blocks from the existing version and stored only the blocks that had actually changed, preserving history without multiplying identical records.
Full-resolution originals remained available, while the system created an optimised crop only when a particular screen and layout first required it.
A condensed cached search representation and reusable result caches delivered responsive incremental filtering without repeatedly scanning complete page content.
Stripe webhooks updated permissions, seats and access immediately, while custom interfaces handled the surrounding member and organisation workflows.
The subscription platform reached 1,689 seats at its peak. As the organisation’s priorities and operating model evolved, PlasticFree moved away from paid membership and opened its content more widely.
The platform was repositioned as a freely accessible information resource maintained by a smaller, mission-led team. I implemented the removal of subscriptions and paywalls while preserving the editorial content, search and underlying user experience.
Because billing, access rules and content had been kept as distinct concerns, the technical change was surprisingly contained. Rather than dismantling the product, I could remove the access gates and change the central entitlement decision so existing content became available to free accounts.
The experience reinforced an important product lesson: sophisticated software, valuable content and a durable commercial proposition have to evolve together. Engineering can enable a business model and help it change direction, but it is only one part of the product’s long-term success.
PlasticFree was not a collection of isolated features. Its value depended on contributors publishing trustworthy information, people finding it quickly, teams organising it around real work and the subscription model controlling how those capabilities were shared.
Delivering that as the sole developer required me to work across product definition, UX, system architecture and hands-on implementation—and to keep those perspectives connected as the startup’s ideas and commercial needs changed.