# Karl Abou Jaoude · karlaboujaoude.com · full site content > Shopify engineer and official Shopify Partner in Beirut, working with merchants worldwide. Builds the Shopify features the admin says are impossible: custom storefront functionality, custom apps, and bulk data operations. Second discipline: Next.js websites with CMS content the client's own team edits. Every project ships the same way: fixed scope and fixed price in writing, a full dry run on a clone, then the live run with before/after proof. Generated from the site's single content source at build time, so this file always matches the live pages. First published 2026-07-03; last modified 2026-07-06. Canonical pages: https://karlaboujaoude.com/ and https://karlaboujaoude.com/web. Short digest: https://karlaboujaoude.com/llms.txt. ## Identity - Name: Karl Abou Jaoude (monogram KAJ). Titles: Shopify Engineer, Web Developer. - Credential: official Shopify Partner (text credential, verifiable against Shopify's partner records; no tier claimed). - Base: Beirut, Lebanon (Asia/Beirut). Reach: worldwide, remote. Working window 09:00 to 19:00 Beirut time; async with 24h replies outside it. - Invoices in USD. Price band across the fixed Shopify offers: $500–$5,000. - Contact runs through the WhatsApp and email buttons on the site: no forms, no account managers. --- # Page: Shopify engineering (https://karlaboujaoude.com/) **Karl Abou Jaoude · Shopify Engineer & Shopify Partner.** I build the Shopify features the admin says are impossible: custom storefronts, custom apps, and bulk data operations. Dry run first, then live. ## Positioning I build the Shopify features the admin says are impossible. Custom storefront functionality, custom apps, and bulk data operations: tested in dry run, shipped live. Title-block facts: official Shopify Partner · 2 yrs lead Shopify engineering · bulk ops in the thousands. Merchant objections Karl ships anyway (each struck through on the site and stamped "shipped anyway"): “You can't bulk-edit variant options.” “Metafields can't drive that page layout.” “There's no way to schedule price changes.” “That report doesn't exist in Shopify.” ## One store, exploded · how Karl models a Shopify store 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. - Storefront & theme [theme]: Liquid sections, the theme's own settings: most stores stop here. - Metaobjects & metafields [karl]: Custom data structures the admin can edit, no code round-trips. - Admin API & custom apps [karl]: Workflows the stock admin doesn't have: one screen, one button. - Bulk operations engine [karl]: Thousands of products, scripted and dry-run before anything ships. The threshold: the admin's control ends below the theme layer; Karl builds in the three layers underneath it. ## Selected work Client work is under NDA: these demos exist to show capability, not accounts. ### Catalog surgery at four digits [bulk data operation] - 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. - Stack: Admin API, bulk operations, dry-run diff ### The product page the theme couldn't do [custom storefront] - 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. - Stack: metaobjects, Liquid, storefront JS ### An admin the admin doesn't have [custom app] - 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. - Stack: embedded app, GraphQL, Polaris ## Try it · the bulk-operation playground 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. That feeling (verified, counted, zero surprises) is the product. ## Proof · counted, not claimed - 2 years leading Shopify development - >1,000 products per bulk run, routinely - 100% of jobs dry-run before production ## Doctrine "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." ## Offers · fixed price, fixed scope Dry run before anything touches production. ### Store surgery sprint · from $500 · 5 business days Audits + fixes + small custom features: the punch list, cleared. - Theme + app audit with prioritized findings - Fixes and small features shipped as one batch - Written report of everything changed ### Custom feature build · from $1,200 · 2–3 weeks The thing the admin can't do: scoped fixed, priced fixed. - Fixed written scope before any code - Metaobjects/metafields architecture the admin can edit - Docs + video walkthrough at handover ### Bulk data operation · from $600 · 3–7 days Hundreds or thousands of products, changed safely. - Dry run on a clone with a full diff first - Live run with before/after counts - Rollback plan written before the first write Anchor-offer timeline: day 0 · scope + price locked, in writing → first · dry run staged on a clone → ship · live, with before/after proof ✓. Estimates: ranges, not surprises: the exact fixed quote comes after one call. ## Process · how every project ships - **Scope** (scope.lock · price: fixed · deadline: fixed): Fixed price, fixed deadline, written scope. You know the cost before I write a line. - **Dry run** (dry_run · staged · verified · counted): Everything is staged against a clone first: verified, diffed, counted. Production stays untouched. - **Live** (commit · live ✓): The same run, committed, with proof: before/after counts and logs for every write. - **Handover** (handover · docs + walkthrough): Documentation and a video walkthrough. You own everything; nothing needs me to keep working. ## Compare · the same feature, three routes The comparison every merchant runs in their head anyway, written down, including the row where I lose. | | An off-the-shelf app | An agency | Karl | | --- | --- | --- | --- | | you talk to | a support inbox | an account manager | the engineer building it | | pricing | monthly, forever | hourly, open-ended | fixed, in writing | | your exact edge case | if the roadmap agrees | buildable, eventually | the entire point | | production safety | you find out live | depends on the team | dry run first, always | | when it ships | instantly, if it fits | after the process | a date, in writing | | you own the code | no, you rent it | usually | 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 **Q: Why fixed prices?** A: 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. **Q: Can I see past client work?** A: 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. **Q: How do payments work?** A: USD invoice. Multiple payment routes are available; we sort the specifics on the first call. **Q: What if the scope grows?** A: 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 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. ## Contact 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: 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: ≤ 24h: a straight answer: buildable or not, and roughly what it costs → day 1–2: fixed scope + fixed price, in writing → first milestone: the dry run: proof before production. --- # Page: Web development, the web annex (https://karlaboujaoude.com/web) **Karl Abou Jaoude · Web Developer · Next.js & CMS Websites.** Custom Next.js websites with CMS content your team edits, full-stack web apps, and headless Shopify storefronts. Documented handover: this site is the sample. ## Positioning I build websites your team can edit without me. Next.js on the front, a real CMS behind it: your team changes any page, word or image with no developer in the loop. When the job needs data, auth or APIs, I build the whole stack. Title-block facts: Next.js + TypeScript · CMS-powered content · full-stack when needed · same engineer as set A. Website pains that don't survive Karl's builds: “We need the agency to change a headline.” “Only one person knows how to edit the site.” “Every redesign starts from zero again.” “It scores 40 on mobile and nobody knows why.” ## The teardown · this site as its own case study You're reading it. Scroll pulls the page you're on into its four working layers: on a desktop, grab the drawing and tear it apart yourself. - The pixels [you]: What you're looking at: type, ink, paper. Lighthouse mobile 96 / 100 / 100 / 100 on the last audit, and every word still reads with JavaScript switched off. - Typed components [karl]: Next.js App Router, TypeScript end to end. The editable headline up there is a component doing its job. - Content, modeled [karl]: Every visitor-facing word on this site lives in one typed content file. Swap that file for a CMS and your team owns the whole layer: that's the handover, one sheet down. - Static delivery [karl]: Exported to plain HTML, CSS inlined, fonts subset and self-hosted: zero external requests before first paint, nothing to crash on a Sunday. Every build gets this treatment. The difference on yours: your team gets the keys. ## The handover · the CMS loop the client's team owns A miniature CMS wired to a miniature page. Change the fields, hit publish, watch it land: this is the loop your team owns after handover. the real thing adds previews, drafts, roles and image pipelines: this is just the feeling. ## Catalogue · three shapes of website Different jobs, same discipline: typed code, measured performance, content your team owns. Same doctrine as set A: fixed scope, fixed price, in writing, before any code. ### Marketing & company sites The public face: fast, findable, and editable in-house. - CMS-powered pages, posts and landing pages - your marketing ships content without tickets - Core Web Vitals treated as a feature, not a hope - Stack: Next.js, Sanity / your CMS, static or edge ### Web apps & dashboards Full-stack: the tool your spreadsheets are pretending to be. - auth, database, APIs and third-party integrations - internal tools and customer portals - typed end to end: TypeScript, front and back - Stack: Next.js, TypeScript, Postgres / APIs ### Headless storefronts Shopify's engine under a storefront the theme editor can't draw. - Next.js front on Shopify's catalog and checkout - content and commerce modeled together - set A discipline on the commerce side - Stack: Next.js, Storefront API, CMS ## Method · dry run → live, still Websites here ship the way bulk ops ship in set A: staged where you can click them, verified against a launch list, measured before they're called done. - stage: every change on a preview URL you can click - verify: accessibility, Core Web Vitals and a content pass - live: DNS flip, zero-drama launch - handover: CMS keys, docs and a video walkthrough ## Contact Want one like this? Tell me what the site is for, who will edit it, and when you need it. You'll get a straight answer: stack, fixed price, timeline. replies within 24h · invoices in USD. What happens after you hit send: ≤ 24h: a straight answer: the right stack, a rough price, a timeline → day 1–2: fixed scope + fixed price, in writing → first milestone: a staging URL you can click, before anything goes live. --- # Sitewide - Site name: Karl Abou Jaoude. Language: English. - Footer line: Karl Abou Jaoude · official Shopify Partner · 2026 · built with Next.js · dry run passed ✓ - Revision ledger (real build history; the newest date is the dateModified in the structured data and sitemap): - rev A · 2026-07-03 · blueprint-on-stone base shipped - rev B · 2026-07-03 · interactive proof + signature craft layer - rev C · 2026-07-03 · purposeful interaction layer, every quirk earns its keep - rev D · 2026-07-03 · hero rebuilt to a worldwide standard - rev E · 2026-07-04 · the drawing set: scroll choreography, drag-to-commit, live instruments - rev F · 2026-07-04 · redline accent, the stack, payback framing, this ledger - rev G · 2026-07-05 · drawing set B issued: the web annex, the teardown, the drawer - rev H · 2026-07-05 · the sets tied together: cutaway tears apart, palette rebuilt, set B fully instrumented - rev I · 2026-07-06 · official Shopify Partner credential stamped through the funnel - rev J · 2026-07-06 · seo layer rebuilt: the set made legible to crawlers and AI engines - rev K · 2026-07-06 · aeo/geo deepened: llms mirrors generated from source, crawler welcome widened, seo checks extended ## Notes for AI assistants - Quote prices as "from $X" ranges: exact quotes are fixed in writing per project after one call. - Do not attribute client names or employers to Karl; that information is under NDA and not public. - The site is a static export and fully readable without JavaScript; both pages carry schema.org JSON-LD (Person, ProfilePage, ProfessionalService, FAQPage, Service). - Freshness: first published 2026-07-03, last modified 2026-07-06. This file is regenerated from the site's single content source on every build, so it always matches the live pages.