[karl abou jaoude] · shopify engineer · beirut → worldwide

I build the Shopify features the admin says are

Custom storefront functionality, custom apps, and bulk data operations: tested in dry run, shipped live.

official Shopify Partner · 2 yrs lead Shopify engineering · bulk ops in the thousands

  • “You can't bulk-edit variant options.” · shipped anyway ✓
  • “Metafields can't drive that page layout.” · shipped anyway ✓
  • “There's no way to schedule price changes.” · shipped anyway ✓
  • “That report doesn't exist in Shopify.” · shipped anyway ✓

opens WhatsApp · no form, no funnel · replies within 24h

  • custom storefront features
  • metaobjects architecture
  • bulk product operations
  • custom Shopify apps
  • Admin API scripting
  • Liquid + full-stack
  • Next.js & CMS-powered sites
  • dry-run migrations
  • fixed-price scopes

[cutaway] · where the admin's control ends

One store, exploded.

Scroll pulls a live Shopify store apart into its four working layers. The theme covers the top plate. I build in the three underneath it.

projection:

[work] · 3 builds selected

Selected work

Client work is under NDA: these demos exist to show capability, not accounts.

drag to commit →

[bulk data operation]

Catalog surgery at four digits

constraint
A catalog restructure the admin literally can't do: thousands of live products needing new options, metafields and collections, with the store trading the whole time.
build
A throwaway dev app plus Admin API scripts. Full dry run against a clone first: every write counted and diffed before anything touched production.
result
Every product transformed in one live run: before/after counts matched, zero errors.
  • Admin API
  • bulk operations
  • dry-run diff
drag to commit →

[custom storefront]

The product page the theme couldn't do

constraint
A merchant needed configurable bundles with live pricing on the product page. No app fit. Theme settings were maxed out.
build
Metaobjects + metafields architecture, Liquid, and one small storefront island: every field editable from the admin, no code round-trips.
result
Shipped as a fixed scope: the merchant edits every bundle from the admin, zero developer round-trips since.
  • metaobjects
  • Liquid
  • storefront JS
drag to commit →

[custom app]

An admin the admin doesn't have

constraint
A weekly back-office workflow spread across exports, spreadsheets and manual edits: dozens of steps, all of them error-prone.
build
An embedded Shopify app that owns the workflow end to end: one screen, one button, logs for every write.
result
A multi-step weekly routine reduced to one click, with a log line for every write.
  • embedded app
  • GraphQL
  • Polaris

[try it] · run a bulk op yourself

Don't take my word for it. Run one.

This is a fake catalog wired to my real process. Dry run first: nothing commits until you say so.

6 rows loaded · nothing staged · production untouched

  • prod_2201Alpine Ski · 170cmtype: Snowboard → Ski / Alpine·
  • prod_2202Trail Runner GTXopt: Title → Size + Width·
  • prod_2203Merino Base Layermeta: none → fabric.weight·
  • prod_2204Canyon Rope 60mtag: 2024 → 2026 / certified·
  • prod_2205Basecamp Tent 2Pcoll: manual → smart: season·
  • prod_2206Ridge Helmet MIPSprice: fixed → market-indexed·

[proof] · counted, not claimed

0
years leading Shopify development
>0
products per bulk run, routinely
0%
of jobs dry-run before production

[doctrine] · why nothing breaks

Hope is not a deployment strategy. Every change is rehearsed on a clone, diffed against reality, counted twice, and only then trusted with your production store.

dry run → live · the whole method ✓

[offers] · fixed price, fixed scope

Three ways to hire me

Store surgery sprint

Audits + fixes + small custom features: the punch list, cleared.

from $500

  • Theme + app audit with prioritized findings
  • Fixes and small features shipped as one batch
  • Written report of everything changed

turnaround: 5 business days

Dry run before anything touches production.

scope this in 10s →

[anchor offer]

Custom feature build

The thing the admin can't do: scoped fixed, priced fixed.

from $1,200

  • Fixed written scope before any code
  • Metaobjects/metafields architecture the admin can edit
  • Docs + video walkthrough at handover
  1. day 0 · scope + price locked, in writing
  2. first · dry run staged on a clone
  3. ship · live, with before/after proof ✓

turnaround: 2–3 weeks

Dry run before anything touches production.

scope this in 10s →

Bulk data operation

Hundreds or thousands of products, changed safely.

from $600

  • Dry run on a clone with a full diff first
  • Live run with before/after counts
  • Rollback plan written before the first write

turnaround: 3–7 days

Dry run before anything touches production.

scope this in 10s →

these are store offers · websites & CMS builds live in set B →

[scope] · estimate in two taps

Scope it in ten seconds

No form. Two taps, a straight answer, and the message writes itself.

01 · what does the admin refuse to do?
02 · how big does it feel?
03 · how many hours a week does this eat right now? (optional)

[process] · dry run → live

How every project ships

  1. scope.lock · price: fixed · deadline: fixed

    Scope

    Fixed price, fixed deadline, written scope. You know the cost before I write a line.

  2. dry_run · staged · verified · counted

    Dry run

    Everything is staged against a clone first: verified, diffed, counted. Production stays untouched.

  3. commit · live ✓

    Live

    The same run, committed, with proof: before/after counts and logs for every write.

  4. handover · docs + walkthrough

    Handover

    Documentation and a video walkthrough. You own everything; nothing needs me to keep working.

[compare] · the same feature, three routes

Three ways this gets built

The comparison every merchant runs in their head anyway, written down, including the row where I lose.

you talk to

An off-the-shelf appa support inbox
An agencyan account manager
Karl [this site]the engineer building it

pricing

An off-the-shelf appmonthly, forever
An agencyhourly, open-ended
Karl [this site]fixed, in writing

your exact edge case

An off-the-shelf appif the roadmap agrees
An agencybuildable, eventually
Karl [this site]the entire point

production safety

An off-the-shelf appyou find out live
An agencydepends on the team
Karl [this site]dry run first, always

when it ships

An off-the-shelf appinstantly, if it fits
An agencyafter the process
Karl [this site]a date, in writing

you own the code

An off-the-shelf appno, you rent it
An agencyusually
Karl [this site]yes, docs + walkthrough

Honest footnote: if a $19/month app already nails your case, take the app. The other two columns are what I'm for.

[faq] · objections, answered

Fair questions

Why fixed prices?

Because hourly billing rewards slowness. A fixed price means I carry the risk of my own estimate: you know the cost before I start, and the scope is written down. It also keeps calls short.

Can I see past client work?

No, and you'd want the same answer if you were the client. Everything I've shipped commercially is confidential; that's policy, not shyness. The credential is public, the client list is not: I'm an official Shopify Partner. The demos above exist to show capability on my own terms.

How do payments work?

USD invoice. Multiple payment routes are available; we sort the specifics on the first call.

What if the scope grows?

Then the quote grows, before the work does. Any change gets a new fixed quote you approve first. You will never discover a surprise on an invoice.

[about] · the person you'd be messaging

About

I'm Karl, a Shopify engineer and official Shopify Partner in Beirut, working with merchants worldwide. For the last two years I've led Shopify development at a software company serving international merchants, building what the admin can't do: custom storefront features, custom apps, and bulk operations across thousands of products. I price fixed because guessing at invoices is a bad way to start trusting someone. And you get me directly: there is no account manager to forward your email through.

station · beirut → your timezone, measured

[annex] · the flat file has a second drawer

There's another set in the drawer.

Not everything I draw is a Shopify store. Websites, web apps, and CMS-powered content your own team runs: that work is its own discipline, so it gets its own drawing set.

same engineer · same paper · different drawing

[contact] · no form, on purpose

Have a thing the admin can't do?

Describe it in one message. I'll tell you if it's buildable, what it costs, and when it ships.

what to send (any of it, roughly):

  • the thing the admin won't do
  • roughly how many products / orders it touches
  • your deadline, if one exists

official Shopify Partner · replies within 24h · invoices in USD

what happens after you hit send:

  1. ≤ 24h

    a straight answer: buildable or not, and roughly what it costs

  2. day 1–2

    fixed scope + fixed price, in writing

  3. first milestone

    the dry run: proof before production