Wooden Ships · Shopify
One storefront, three years.
Since July 2023 I have worked on one live Shopify store, through four roles.
The store is run by PT In Fashion, my employer. This is professional work on it, not ownership of the company.
- Jul 2023 – present
- One, continuously live
- Four, no gap
Explore:Four roles, one live store
The store stays live the whole way. What changes is my part in it: what I implemented, what I led, and what my team engineered under my direction.

- Jul 2023 – Mar 2024Shopify Admin
- Mar 2024 – Sep 2024Lead Graphic Designer
- Sep 2024 – Nov 2025Lead Web Developer
- Nov 2025 – PresentAI & Automation Project Manager
Implemented
My hands
- First code on the live store
- E-commerce visual system
- Store theme (Shopify’s Liquid)
- Release QA
- Search that matches what shoppers type
- Customer birthdays into proper fields
- Order exportdeveloped further by Prada Dipa and Luthfi Aditya
- Catalog media pipeline
Led
As web lead
- Release management
- Vendors and US stakeholders, 12–13 hours behind
Four things I can point at.
In the storefront
Storefront search relevance
Built by me — diagnosis, implementation, release QA.
Shoppers who searched “lobster” were shown products with no lobster in them, which makes a shop look broken. I fixed the search so every result carries the words they typed.
Reads from the store
Slow Seller decision engine
Primarily engineered by Kirei Kharisma Handayani — LinkedIn profile, opens in a new tab. I defined what it had to do, reviewed the implementation, and took it through QA and rollout.
Reads the store’s sales and writes a merchandising decision into the team’s sheet.
Reads from the store
Order export for production planning
Built by me — design, directing Claude Code from specs, the warehouse-attribution rule and the conservative stock verdict, requirements with the planning team, deployment and the handover to planners; developed further by Prada Dipa — LinkedIn profile, opens in a new tab and Luthfi Aditya — LinkedIn profile, opens in a new tab.
Planners export orders themselves instead of asking a developer.
Alongside the store
Seasonal catalogue pipeline
Built by me — design, implementation, the naming convention and the dry-run-by-default rule, the season run and its runbooks.
Not the storefront: the season’s wholesale catalogue, on WordPress.
Implemented
A search for “lobster” that returned no lobster.
| Typed | Also returned |
|---|---|
| lobster | OH CRAB!, MARLED CRAB V, KEY WEST |
| pumpkin | WONDERFUL CHRISTMAS |
Public product titles. The fix’s own notes record that none of these carries the word anywhere: title, tags, description or variants. MAUI V and CROP BOYFRIEND also come back for “pumpkin” and stay on purpose: a pumpkin colourway is in their variant names.
The fix, in three pieces
Compare plain words on both sides: ignore capitals, formatting and punctuation.
Look for the words in the product’s own text, description included.
Drop any result missing a typed word.
Live on the store since 19 August 2026, in main search, predictive search and suggestions. It is on by default; turning it off takes a deliberate settings change.
Go deeper
Downcases, strips HTML, and rewrites 20 punctuation characters to spaces, applied to both sides of every comparison, so OH CRAB! equals “oh crab”, and a SKU reading PURE SNOW/BLACK becomes findable by “snow”.
Builds the haystack from title, vendor, type, joined tags, joined variant titles, joined variant SKUs and the description. A product that names the word only in its body copy still matches; a product that carries it nowhere does not.
Split the query into words and return false the moment one is missing. Every typed word must be present, in any order. Main search, predictive search and suggestions all apply it. Curated tag matches still work, because those are fields the merchandiser chose. A later commit made the filter an opt-out theme setting: it stays on unless someone deliberately switches it off.
6 commits on 19 August 2026, touching 8 of the theme’s 721 files.
Exactly this much, and no more.
- I did not found, own or build the company.
- The merchandising team owns its policy, and Kirei Kharisma Handayani built the engine.
- No internal screen appears here, and no measured outcome is claimed.
Go deeper: the full scope
What the work was
- Led web development on a live commercial storefront from September 2024.
- Implemented storefront changes in Liquid and shipped them to production.
- Integrated apps and services against the Shopify Admin GraphQL API.
- Coordinated production releases and release QA on a store that cannot go down.
- Directed the internal systems built around the store for merchandising and ad review: Kirei Kharisma Handayani engineered the merchandising decision engine, and Prada Dipa the ad review, which Hady Satya maintains. I defined what each had to do, reviewed the logic, and took them through QA and rollout.
- Directed the commerce data warehouse that reads the store’s sales, which Prada Dipa and Luthfi Aditya engineered. I ruled that the net-sales definition lives in one database view every endpoint reads, reviewed the access model, and took it through QA and rollout.
- Built my own Shopify tools around it, the order export for production planning among them, mostly with Claude Code writing against specifications I set. The order export is now developed further by Prada Dipa and Luthfi Aditya.
- Automated operational workflows — some hands-on, the rest directed — and made the runbook part of done, so a tool is not owned by whoever wrote it.
What it was not
- Founding, owning or building the company. It existed before me and does not depend on me.
- Writing the merchandising policy, or encoding it. The policy belongs to the merchandising team, and Kirei Kharisma Handayani built the engine; my part was turning that flowchart into decision rules an engineer could implement, then reviewing the encoding before it shipped.
- Authoring the whole theme. The search fix on this page touched 8 files out of 721.
- Showing anything internal. No admin screen, no order, no customer record and no employee record appears anywhere on this site.
- Claiming a measured outcome. None of these systems instrument themselves, so there is no percentage on this page.
Where next
A problem like these? hello@jdenandro.com






