e↗entertrainment
← All project stories
Web & community / PROJECT STORY

Ad Creator

Turn real product photography and a structured stock record into a consistent advert and marketplace drafts. A practical publishing toolkit demonstrated with a Nord Stage 88.

Static advert + toolkit6 MIN READDEVELOPMENT ARCHIVE · OCT 2026
PROJECT REVIEW · 18 October 2026

Inside the project

Prepared with the project’s development agent from source and retained evidence. This is a project-owner assessment, not an independent customer review. Dated checks were not rerun for this website.

A small, honest toolkit that turns a folder of product photos into a slick deployable advert plus ready-to-publish Reverb/eBay/Shopify listings, all from one canonical record (stock.json). The Nord Stage 88 advert is its live flagship output: dark Nord-red theme, 12-image equal gallery, fault-forward condition and sale-terms cards, at £379. Strongest where it matters for a seller: one source of truth so price/condition/photos never drift between site and marketplaces, honest condition mapping, and a safe DRY_RUN default. Most valuable at scale (many items, multi-channel) rather than for a single listing.

What stands out

  • Single source of truth (stock.json + Zod) feeds the advert and every marketplace payload identically
  • Honesty engineered in: 1:1 condition mapping; declared faults auto-appended to descriptions and eBay conditionDescription
  • Safe by default: DRY_RUN prints payloads and sends nothing until explicitly disabled
  • Zero-heavy-dependency image pipeline (macOS sips, optional cwebp); static advert needs no build
  • One-command advert from any photo folder (new-advert)

Current limits

  • macOS-only image step (sips)
  • Marketplaces fetch images over HTTP, so photos must be publicly hosted first
  • Channel adapters need real credentials + eBay category/policy IDs and Reverb product_type slug before any live publish
  • Self-hosted Stripe/Apple Pay sale carries chargeback risk (no marketplace buyer protection)
  • No close-up photos exist yet for the two declared faults; live site updates only on redeploy

Features & evidence

Nord Stage 88 advert page

released

Visitor views a responsive dark-themed advert: hero, £379 price, condition + sale-terms cards, 12-image gallery with hover captions, CTAs

Recorded evidence

Live public HTTP 200 verified 2026-10-17 (venerable-begonia-d8c1c3.netlify.app); source on disk confirmed 2026-10-18 (advert/index.html: 12 <figure>, price £379, Sale terms, Stripe button)

new-advert (any folder -> advert)

component-tested

User runs one command over a photo folder; gets converted web images + item.json + rendered page

Recorded evidence

Documented + source present (catalog/src/new-advert.ts, README 2026-10-18); image tooling (sips/cwebp) probed 2026-10-17

Canonical record + shared renderer

component-tested

User edits one stock.json/item.json; advert and payloads regenerate from it

Recorded evidence

stock.json + Zod types.ts + render-advert.ts confirmed 2026-10-18

Reverb / eBay / Shopify adapters

component-tested

User runs sell:* to build listing payloads (Reverb draft; eBay inventory->offer->publish; Shopify draft)

Recorded evidence

sell:nord dry-run all three adapters zero errors 2026-10-17; honest USED_GOOD + 12 resolved image URLs in output; not run against live creds

Postgres canonical store + importer

component-tested

User scales from flat file to DB via idempotent upsert

Recorded evidence

db/schema.sql + db/import.ts; dry-run flattened record to typed rows 2026-10-17

Apple Pay / Card button (Stripe Payment Link)

source

Buyer taps to pay; inert until owner pastes their Stripe link

Recorded evidence

Button + logic present in advert/index.html 2026-10-18; intentionally not activated (no live Stripe link)

Review updates & corrections
  • No material change since 17 Oct biography: price remains £379; condition still 'good' with the same two declared faults; 12 photos; status available
  • On-disk confirmation 2026-10-18 that the advert includes the Apple Pay/Card (Stripe) button and 'Sale terms' card (both added late on 17 Oct)
  • Live public URL verified HTTP 200 on 2026-10-17; not re-verified today (this session cannot make network requests)
  • No new assets added; fault close-up photos still outstanding

Workflow walkthrough

A guide to the native workflow. These steps describe the app; only the recordings and images embedded on this page are available as website demonstrations.

  1. Open the live advert (interactive, playable on the website)
  2. Hero shows the Nord Stage 88 at £379 with condition badge
  3. Read the 'Condition — fully disclosed' and 'Sale terms' cards (two declared faults)
  4. Hover/scroll the 12-image gallery; captions reveal per shot
  5. Use a CTA: Reserve-by-email (live), or Buy-now/Reverb and Apple Pay/Card (activate when owner pastes URLs)
Planned captures · not yet available
  • Proposed (does not exist): short screen capture of new-advert turning a folder into a page.

Development biography · earlier archive

Development profile compiled from project source and retained records in October 2026. Dates and test results describe those records; they do not imply a new build, live acceptance test or public release.

From photographs to a consistent advert

Ad Creator grew from a practical studio task: describe and photograph a used musical instrument, give it a clear visual presentation, and prepare the same item for more than one sales channel. Rewriting the details separately for each destination creates opportunities for inconsistent specifications, missing condition notes and outdated links. The toolkit keeps those details in one structured record and uses them to render each output.

The first demonstration is an advert for a Nord Stage 88. Its visual design uses a dark background, restrained red accents and a responsive gallery of real photographs. Captions reveal the instrument’s physical details, while a dedicated condition section keeps declared faults visible. The page is a retained example of the publishing workflow; this portfolio does not represent the instrument’s current price or availability.

One record, several outputs

The stock model carries the item’s identity, brand and model, condition, explicit condition notes, specifications, price fields, images, captions, channel links and sale status. TypeScript types and Zod validation give the author feedback when a record is incomplete or malformed. A shared renderer produces the advert so repeated builds use the same presentation logic.

A photo-processing command accepts a folder of source images and prepares web-sized JPEGs, with optional WebP output. It then scaffolds an item record and generates the static advert. The existing photo workflow uses macOS image tooling. It is useful for studio equipment and other photographed goods, while the underlying record is not tied to one instrument manufacturer.

The channel layer contains adapters for Reverb, eBay and Shopify. These use the shared item data to construct the different payloads each destination expects. Condition notes are carried into descriptions rather than silently upgraded to a more favourable label. The adapters start with a dry run that displays the proposed payload. Real publishing requires configured credentials, category and policy identifiers, and an operator’s decision.

A practical workflow

  • Photograph the item and collect the images in a folder.
  • Generate the advert scaffold and edit the specifications, captions and condition notes.
  • Review the static page at desktop and mobile sizes.
  • Host the approved page and its product images.
  • Preview each marketplace payload before configuring or using a publishing integration.
  • Record confirmed listing links and update the item status when its availability changes.

The toolkit also includes a PostgreSQL schema and an importer that maps stock records to product and channel-listing rows. This provides a route from a single advert to a larger catalogue. Its upsert design supports repeatable imports, while the sales workflow still depends on accurate status updates. It should not be read as a verified automatic inventory synchronisation service.

The demonstration page

The Nord advert uses twelve photographs in a grid that adapts across four, three, two and one columns. JPEG fallbacks accompany WebP images, and link-preview metadata gives the page a useful appearance when shared. A condition card and configurable calls to action sit alongside the gallery. Payment and marketplace links require actual destinations before they can become usable purchase paths.

The project agent reports that the static output was deployed and visually checked, and that dry runs exercised the three adapters and database importer on 17 October 2026. Those records establish a working page and payload preparation. They do not establish successful live transactions or a complete production integration with each marketplace.

Next steps and limits

The recorded roadmap includes OAuth refresh support, richer image upload integration, simpler hosting, duplicate-photo detection, multi-item catalogues and bulk editing. These are planned capabilities, not delivered claims. The current image-processing step depends on macOS, and hosted image URLs are needed by external channels.

For a single item, manual publication remains a reasonable workflow. The toolkit becomes more useful when an author needs consistent descriptions and images across several outputs. The project’s contribution is a clear, inspectable publishing process with real photography and explicit item condition.

Explore the connections.

Browse all project stories ↗