·opuesto· aquaE-commerce · Medellín, Colombia · 2026

Portfolio / Catalog and brand voice

The brand existed. The store did not.

·opuesto·aqua is the competition swimwear and teamwear line of ·opuesto·, a brand that defines itself as the opposite of conventional. It arrived with a brand book, an identity manual and a clear read on its customer — and with no sales infrastructure at all: 16 SKUs in a spreadsheet and an Elementor theme inherited from a footwear store, complete with a New York address and staff names belonging to nobody. We built the whole foundation: catalog architecture, brand copy across seven pages, a legal framework, and an SEO base.

Client
·opuesto·aqua
Sector
Competition swimwear and teamwear
Scope
Catalog, copy, legal, design and SEO
Role
E-commerce architecture and content
Status
Built · never opened to the public
The opuestoaqua.com homepage with the headline “WE ARE WATER DRIVEN” in teal over a photograph of a swimmer in cap and goggles.

01The brief

Plenty of identity. No sales channel.

·opuesto· already had the hard part: a brand archetype, a code of behaviour — eccentricity, singularity, boldness, surrealism — and a clear read on its customer, someone who feels free, is curious, fears mediocrity, and needs to execute their ideas without anyone editing them. That DNA was written down and it was good. What did not exist was its translation into something anyone could buy.

The brief was to build that translation end to end for the aquatic sub-line: a catalog that could survive growth, a brand voice on every page, a legal framework that matched how the business actually sells, and an SEO base laid at the start instead of patched on afterwards.

What already existed

  • 01Brand book and visual identity manual
  • 02Customer empathy matrix
  • 03A 2026 catalog with 16 SKUs in a spreadsheet
  • 04Product and real team photography
  • 05A domain with WordPress installed
  • 06An Elementor theme from another industry

Our role

WooCommerce catalog architecture, SKU and attribute mapping, seven pages of copy with implementation instructions, terms and conditions written for this business, application of the visual system, and SEO strategy folded into each page guide.

02The diagnosis

A site that was talking about shoes.

Auditing the existing site turned up three problems of different orders: one of content, one of data, one of structure. All three had to be solved before a single line of brand copy was written.

01 · Inherited content

Fake staff and an invented address.

The template carried names of people who do not exist, a New York address belonging to nobody, and footwear references in the forms. It was not a half-finished site: it was another business's site with the logo swapped.

02 · An unstructured catalog

Sixteen SKUs in a spreadsheet.

The 2026 catalog existed as a file, not as a store: no categories, no variation attributes, no SKU convention. It was processed with Python to extract and map the products before any of them got copy.

03 · Crossed sizing

Child and adult in one field.

Almost every product exists in both youth and adult ranges. Putting both into a single size attribute is the decision that breaks store filtering — and it does not show on launch day, it shows six months later.

03The decision

The one that avoids the mess that arrives later.

Youth and Adult are not the same attribute.

A competition rashguard sells in 4, 6, YXS, YS, YM and YL, and also in XS, S, M, L, XL and XXL. In one field that is twelve options with no hierarchy, and store filtering stops working: the parent shopping for a child and the swimmer shopping for themselves get the same scrambled list.

They were split from the first product. Every page serves three independent selectors — Child / Youth (4 · 6 · YXS · YS · YM · YL), Adult (XS · S · M · L · XL · XXL) and Colour (Black · White) — and out of them come the 36 variations each product carries in production. Fixing this after launch means rebuilding the entire catalog.

MapSplitScale

04Visual system

Pool water, podium gold.

Aqua Light

Light grounds and breathing space

HEX
#C3E7F1
RGB
195 · 231 · 241
Aqua Mid

Section headings and navigation accents

HEX
#519CAB
RGB
81 · 156 · 171
Aqua Dark

Cover headline and deep surfaces

HEX
#050E35
RGB
5 · 14 · 53
Gold

The accent that shows up only when it matters

HEX
#FFC64F
RGB
255 · 198 · 79
Ink

Product typography and store buttons

HEX
#000000
RGB
0 · 0 · 0

05The system

From a spreadsheet row to a sellable page.

The catalog was not loaded by hand, product by product. It was processed as data first and built second, which is the only way the twelve missing SKUs can arrive with the same structure as the four already there.

  1. 2026 catalog

    Spreadsheet of source SKUs
  2. Python · pandas

    Extraction and mapping
  3. WooCommerce

    Categories and attributes
  4. Elementor Pro

    Pages and copy blocks
  5. Rank Math

    Meta, keyword and schema
  6. Product page

    Variations and cart
  1. 01

    Read the catalog as data

    The 16 SKUs in the 2026 sheet were extracted with Python and mapped into 4 parent categories — teamwear, swimwear, accessories and the shop line — with slugs ready for WooCommerce.

  2. 02

    Fix the SKU convention

    Every product gets a three-letter code and every variation is composed from it: MRG, FRG, WTS, WBJ, BJT, JGR. The convention is defined before the first product exists, not once there are forty.

  3. 03

    Split the size attributes

    Child / Youth and Adult go in as separate attributes, plus Colour. The variations come out of the combination without asking the buyer to read a list of twelve mixed sizes.

  4. 04

    Write the copy against the brand

    Nothing was drafted generically: every block was checked against the brand book and the empathy matrix, and delivered with a “Remove → Replace With” instruction so that pasting it into the right Elementor widget requires no interpretation.

  5. 05

    Put the SEO in the same guide

    Focus keyword, meta title, meta description and schema notes travel inside each page's guide rather than in a separate document. A separate technical annex is an annex nobody implements.

  6. 06

    Publish the page

    Each product ends up variable, with its gallery, its short and long descriptions, its visible SKU and its category. The four in production serve 36 variations each.

16 SKUs mapped · 4 products built · 144 variations in production

07The pieces

The site as built, behind the lock.

08The work

What is standing.

Figures read from the store's API on 25 August 2026 rather than from the delivery document: this is what is loaded in the client's WordPress right now.

16
SKUs mapped from the 2026 catalog
144
Live variations across the products built
12
Published pages, seven of them rewritten
14
Sections in the terms and conditions

09The stack

What runs underneath.

Verified against the namespaces the site's REST API exposes. This is not the list of what was recommended: it is what is installed and active today.

Store

WooCommerce · WooCommerce POS

Variable products with per-product attributes, categories, cart and checkout. The point-of-sale module is installed for selling in person at events and clubs.

Build

Elementor Pro · Slider Revolution

Elementor Pro over the Hello theme, which is the right blank canvas when the builder carries the design. The copy shipped in blocks meant to be pasted widget by widget.

Operations

WP Rocket · Really Simple Security · WP Mail SMTP

Caching, a security layer with two-factor, and authenticated mail delivery, on Hostinger hosting. Rank Math and Site Kit are wired up to measure from the day it opens.

10The status

All built. The door shut.

opuestoaqua.com answers 503 with maintenance mode on: the site exists, it is built, and it can be walked end to end from a logged-in session, but it was never opened to the public. Publishing is the client's call and it never came. This case documents the foundation delivered, not a launch.

What remains is concrete and listed: load the twelve missing SKUs with the same variable structure as the four already there, set prices — the pages currently sit at zero — write alt text for the product images, and replace the contact details still surviving from the inherited template. None of those tasks requires redoing anything: the architecture holds all four.

Ready to publish

  • 014 parent categories defined with their slugs
  • 02Global attribute table ready to import
  • 034 variable products built and browsable
  • 047 pages of copy with pasting instructions
  • 0514-section terms and conditions, published
  • 06Meta and focus keyword per page in Rank Math

What this case does not claim

There are no traffic, sales or ranking figures, and there will not be while the site stays closed: nobody outside has seen it yet. What is published here are pieces that are built and verifiable against the site's own API.

More of the work

A badly structured catalog does not fail on day one. It fails the day it starts working.

Fashion, sport, any store with sizes and variants: the decision that determines whether you can grow is made before the first product is loaded, and it is almost never visible from outside.

Tell us about your project