messed with memory bank

This commit is contained in:
2RE 2026-09-25 23:28:31 +08:00
parent 8a7c3eabf4
commit 9e42a8c049
6 changed files with 241 additions and 22 deletions

View file

@ -10,9 +10,10 @@
- Until approval, leave finished work in the working tree as uncommitted changes, and say plainly what is sitting there waiting. - Until approval, leave finished work in the working tree as uncommitted changes, and say plainly what is sitting there waiting.
## Current Work Focus ## Current Work Focus
**Copy pass 1 and the work-caption work both landed (uncommitted).** A working static site on a locally vendored Bootstrap 5.3.3, with custom CSS/JS and a live Web3Forms contact page, a **Collins-inspired Case Studies feature** (typographic index + 10 detail pages), the first copy pass out of `memory-bank/todo.md` (homepage closing CTA, a new **Workflow** band on `services.html`, the work-page hook), the favicon and social card, and captions on all 26 `work.html` gallery figures - re-worded on 2026-09-22 to the scope the user confirmed from their own read-through, which also moved the Urban Moto earplug article and the YLEM Journal cover into the **Words** gallery. Next is user sign-off on the copy, confirmation of the caption names that were read off the artwork, captions for the case-study grids, and deploying the new assets. **Everything to date is live, and the sales funnel is now in planning.** A working static site on a locally vendored Bootstrap 5.3.3, with custom CSS/JS and a live Web3Forms contact page, a **Collins-inspired Case Studies feature** (typographic index + 10 detail pages), the first copy pass out of `memory-bank/todo.md` (homepage closing CTA, a **Workflow** band on `services.html`, the work-page hook), the favicon and social card, and captions on all 26 `work.html` gallery figures - re-worded on 2026-09-22 to the scope the user confirmed, which also moved the Urban Moto earplug article and the YLEM Journal cover into the **Words** gallery. All of it shipped in **`8a7c3ea`** and was verified live. The live work is therefore done; what is in progress is the **sales-funnel redesign**, now planned in `memory-bank/sales-funnel-plan.md` and blocked on the user defining the offer before any Funnel copy is written. Still open around it: user sign-off on the live copy, confirmation of the caption names read off the artwork, and captions for the case-study grids.
## Recent Changes ## Recent Changes
- **2026-09-22** - **Deploy verified from the outside, and everything to date is now public.** The user committed the staged batch as **`8a7c3ea`** ("reworked some verbiage and added captions"), pushed it to `origin/main` and uploaded the repo root by hand, so the icon set, the social card, the full `og:*`/`twitter:*` set, copy pass 1, the 26 captions and the re-voiced blurbs are live for the first time. Verified by probe rather than assumed: all 16 pages return 200 with exactly one `og:image` and two `rel="icon"` links each; `img/favicon.svg` (2.1 KB, `image/svg+xml`), `img/favicon.ico` (15 KB), `img/apple-touch-icon.png` (3 KB) and `img/og-image.png` (176 KB) all return 200 with the right MIME types; `/work.html` serves 26 figures and 26 captions, every re-voiced string, and none of the replaced ones; `/services.html` serves the Workflow band and the food-cart copy; and a crawl of all 61 unique local asset paths the pages reference (images, CSS, JS, fonts) found no 404s. Working tree clean, `HEAD` == `origin/main`. The only caveat is that social scrapers may serve a cached preview of the domain until their caches turn over.
- **2026-09-22** - **Section copy brought in line with the captions, and the last naming questions settled.** Four `work.html` blurbs were re-voiced so nothing contradicts the caption above it: the **Words** intro ("Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out."), the **App Design** blurb (some pieces were "coded end to end", the rest "built to look real long before they ship"), the **Print** blurb (leads with the ads the gallery shows, keeps flyers, postcards, business cards, letterhead and product design as capability) and the **Logos** intro (", and the occasional title slide", so the Dat Art slide reads as deliberate). The Dat Art caption became "Presentation for Motion Labs" with a matching alt; "a pretzel stand" became **"a food cart"** in `work.html` and `services.html`, matching the render (labelled "Gourmet Pasteles and Churros") and the Upscale Food Cart case study. The user confirmed **YLEM stays in both galleries** and that **`2plus5times3.webp` keeps its name** with the caption `(10 + 2) x 5` authoritative. Verified: all seven new strings render and all five old ones are gone, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, galleries re-measured in headless Chrome (Print and App Design `overflow=0` with both arrows disabled, Words 292px with only "next" enabled) and screenshot-checked at 1280px and 390px. **Staged, awaiting the user's commit.** - **2026-09-22** - **Section copy brought in line with the captions, and the last naming questions settled.** Four `work.html` blurbs were re-voiced so nothing contradicts the caption above it: the **Words** intro ("Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out."), the **App Design** blurb (some pieces were "coded end to end", the rest "built to look real long before they ship"), the **Print** blurb (leads with the ads the gallery shows, keeps flyers, postcards, business cards, letterhead and product design as capability) and the **Logos** intro (", and the occasional title slide", so the Dat Art slide reads as deliberate). The Dat Art caption became "Presentation for Motion Labs" with a matching alt; "a pretzel stand" became **"a food cart"** in `work.html` and `services.html`, matching the render (labelled "Gourmet Pasteles and Churros") and the Upscale Food Cart case study. The user confirmed **YLEM stays in both galleries** and that **`2plus5times3.webp` keeps its name** with the caption `(10 + 2) x 5` authoritative. Verified: all seven new strings render and all five old ones are gone, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, galleries re-measured in headless Chrome (Print and App Design `overflow=0` with both arrows disabled, Words 292px with only "next" enabled) and screenshot-checked at 1280px and 390px. **Staged, awaiting the user's commit.**
- **2026-09-22** - **Captions re-worded to the scope the user confirmed, and two pieces moved to Words.** The user read the captions back against the archive and corrected the scope on six of them: **Back That Ass Up** is not a plain identity but the mark for a **political campaign art show** (which is why it is in US-flag colours), **Mehavior** was **UX and UI**, **(10 + 2) x 5** was **designed and coded** end to end, and the three ads - Loren Kincaid, Macchiarini Metalworks, K.C. Engineering - are all plainly **Print Ad** (capital A, as specified in the brief). **Sam's Rules of Money** is "Book editing and illustrations", which the old "Book cover" hid (the user edited the book *and* its illustrations). Two pieces moved into the **Words** gallery, on the rule that a piece belongs to the category of its deliverable, not of the paper it landed on: `writtenearplugs.webp` ("Article, Urban Moto, February 2007") and `printylemcover.webp` ("Editing and cover design" - the user edited the whole magazine, cover included). Print now holds 3 items, all print ads; Words holds 4, ordered book, magazine, article, guide. Nothing else references those two files, so both galleries were the only edits. Verified: 26 figures over 26 distinct images, one caption each, exactly two references to the moved files (both in Words), tags balance and every reference resolves across the 16 pages, no em dashes, and the carousels were measured in a headless browser - Print is now `scrollWidth == clientWidth` with both arrows disabled (matching App Design, so 3 items leaves no dead control) while Words overflows by 292px with only "next" enabled - plus screenshot checks of the Print and Words bands at 1280px and 390px. Build intermediates in `.tmp-captions/` were deleted. **Uncommitted.** - **2026-09-22** - **Captions re-worded to the scope the user confirmed, and two pieces moved to Words.** The user read the captions back against the archive and corrected the scope on six of them: **Back That Ass Up** is not a plain identity but the mark for a **political campaign art show** (which is why it is in US-flag colours), **Mehavior** was **UX and UI**, **(10 + 2) x 5** was **designed and coded** end to end, and the three ads - Loren Kincaid, Macchiarini Metalworks, K.C. Engineering - are all plainly **Print Ad** (capital A, as specified in the brief). **Sam's Rules of Money** is "Book editing and illustrations", which the old "Book cover" hid (the user edited the book *and* its illustrations). Two pieces moved into the **Words** gallery, on the rule that a piece belongs to the category of its deliverable, not of the paper it landed on: `writtenearplugs.webp` ("Article, Urban Moto, February 2007") and `printylemcover.webp` ("Editing and cover design" - the user edited the whole magazine, cover included). Print now holds 3 items, all print ads; Words holds 4, ordered book, magazine, article, guide. Nothing else references those two files, so both galleries were the only edits. Verified: 26 figures over 26 distinct images, one caption each, exactly two references to the moved files (both in Words), tags balance and every reference resolves across the 16 pages, no em dashes, and the carousels were measured in a headless browser - Print is now `scrollWidth == clientWidth` with both arrows disabled (matching App Design, so 3 items leaves no dead control) while Words overflows by 292px with only "next" enabled - plus screenshot checks of the Print and Words bands at 1280px and 390px. Build intermediates in `.tmp-captions/` were deleted. **Uncommitted.**
- **2026-09-22** - **Work galleries captioned, and the earplug piece moved.** All 26 `work.html` figures are now `<figure>` elements carrying a `.carousel__caption` (piece name in semibold ink, format on a muted second line), styled by two new rules in `css/style.css` and always visible rather than hover-only, because hover does not exist on touch. The caption copy was written from the artwork itself after reviewing a labelled contact sheet of all 26 images, which caught a swap in the source set: `writtenearplugs.webp` is the **Urban Moto earplug feature** (page 39, February 2007) and `writtenstructions.webp` is the **Napwell quick start guide**. Per the backlog item, `writtenearplugs.webp` moved out of the Urban Moto case-study grid into the **Print** gallery, and that grid changed from `row-cols-sm-2` to `row-cols-sm-3` so its three remaining ads (K.C. Engineering, Loren Kincaid, Macchiarini) sit in one clean row with specific alts. No caption carries an author byline (see the attribution rule). Verified: tags balance and every reference resolves across the 16 pages, 26 figures over 26 distinct images with one caption each and no duplicates, screenshots of the Logos, Print and Words galleries at 1280px and 390px plus the Urban Moto grid, and a local 200 on every page. Build intermediates in `.tmp-captions/` were deleted. **Uncommitted.** - **2026-09-22** - **Work galleries captioned, and the earplug piece moved.** All 26 `work.html` figures are now `<figure>` elements carrying a `.carousel__caption` (piece name in semibold ink, format on a muted second line), styled by two new rules in `css/style.css` and always visible rather than hover-only, because hover does not exist on touch. The caption copy was written from the artwork itself after reviewing a labelled contact sheet of all 26 images, which caught a swap in the source set: `writtenearplugs.webp` is the **Urban Moto earplug feature** (page 39, February 2007) and `writtenstructions.webp` is the **Napwell quick start guide**. Per the backlog item, `writtenearplugs.webp` moved out of the Urban Moto case-study grid into the **Print** gallery, and that grid changed from `row-cols-sm-2` to `row-cols-sm-3` so its three remaining ads (K.C. Engineering, Loren Kincaid, Macchiarini) sit in one clean row with specific alts. No caption carries an author byline (see the attribution rule). Verified: tags balance and every reference resolves across the 16 pages, 26 figures over 26 distinct images with one caption each and no duplicates, screenshots of the Logos, Print and Words galleries at 1280px and 390px plus the Urban Moto grid, and a local 200 on every page. Build intermediates in `.tmp-captions/` were deleted. **Uncommitted.**
@ -125,11 +126,11 @@
## Next Steps ## Next Steps
> **The full backlog lives in `memory-bank/todo.md`.** This section keeps only the current priorities; new items go into `todo.md` first. > **The full backlog lives in `memory-bank/todo.md`.** This section keeps only the current priorities; new items go into `todo.md` first.
1. Get user sign-off on copy pass 1 (homepage CTA, `services.html` Workflow band, `work.html` hook); refine where it reads wrong. 1. Get user sign-off on the copy that is now live: copy pass 1 (homepage CTA, `services.html` Workflow band, `work.html` hook) plus the captions and the re-voiced `work.html` blurbs; refine wherever it reads wrong.
2. Assets batch: **favicon and Open Graph image are done** (2026-09-22), with the icons and the full `og:*`/`twitter:*` set declared on all 16 pages against `https://2re03.com/`. The only item left is confirming whether a real 2RE03 logo file exists. 2. **Case-study grid captions** - the main remaining content item. 9 of the 10 detail pages hold a single `figure.card-work` beside the copy and Urban Moto holds a 3-up grid of ads, none of them captioned, and `.card-work` has no caption style yet.
3. Per-image captions and more/real gallery work. `work.html` is captioned (2026-09-22) and its blurbs now match the captions; what remains is the case-study grids (9 single-image pages plus Urban Moto's 3-up ad grid, none captioned) and confirming the handful of names read off the artwork (Argent, Drinking About..., D.R.I.V.E., 50 Shades of 2048, '78 Williams, `3dabandoned`, and the unnamed "Sales page"). 3. Confirm the caption names that were read off the artwork (Argent, Drinking About..., D.R.I.V.E., 50 Shades of 2048, '78 Williams, `3dabandoned`, and the unnamed "Sales page").
4. Polish items from `todo.md`: the low-resolution Urban Moto hero, the case-study grid captions, a possible motion/video section (the IKEHU video is not on this machine), and the sales-funnel redesign (which needs the offer defined first). 4. Assets: a real 2RE03 logo, if one exists (the icon set and social card are done **and live** as of 2026-09-22), and more or real gallery work items, which need artwork nobody has supplied yet.
5. Deploy: the batch is **staged** (2026-09-22) with its message pre-filled in `.git/COMMIT_EDITMSG`, waiting on the user to run `git commit` and then upload the repo root by hand. Probed live on 2026-09-22: the published site is byte-identical to the last commit, `img/favicon.svg`, `img/favicon.ico` and `img/og-image.png` all 404, and no page declares `og:image` yet. 5. **Sales-funnel redesign: shape decided, blocked on the offer facts** (2026-09-22). The diagnosis (10 leaks in the current site), the Land -> Recognise -> Believe -> Offer -> Risk reversal -> Convert -> Measure structure, the page-by-page draft and Cline's recommendation are in `memory-bank/sales-funnel-plan.md`; the user accepted the recommendation, so the Offer stage is **one primary offer with a published price band plus a fixed-price diagnostic as the entry step** (decision 34). The fill-in-the-blank copy for `services.html`, `index.html` and `contact.html`, with every remaining `[[slot]]` in one table, is in `memory-bank/offer-draft.md`; as of 2026-09-22 Cline has drafted proposals for all 19 open slots (three offer-name options, a promise, scope bullets derived from `about.html`'s own claims, a "Site Assessment" entry offer, the risk-reversal lines, and ten case-study-specific outcome prompts), leaving six numbers and ten outcome lines bracketed `[[TODO]]` for the user. The next move is the user editing that draft, not code. The remaining Polish items are the low-resolution Urban Moto hero and a possible motion/video section (the IKEHU video is not on this machine).
## Active Decisions & Considerations ## Active Decisions & Considerations
@ -168,6 +169,8 @@
| 30 | `webdatavisart.webp` stays in **Logos** and is captioned as a **presentation** ("Presentation for Motion Labs") rather than a mark, and the Logos intro says so (", and the occasional title slide") | ✅ Done | | 30 | `webdatavisart.webp` stays in **Logos** and is captioned as a **presentation** ("Presentation for Motion Labs") rather than a mark, and the Logos intro says so (", and the occasional title slide") | ✅ Done |
| 31 | A section blurb may claim only what the gallery under it actually shows; wider capability lists live on the service cards, not above a gallery | ✅ Done | | 31 | A section blurb may claim only what the gallery under it actually shows; wider capability lists live on the service cards, not above a gallery | ✅ Done |
| 32 | `2plus5times3.webp` keeps its file name; the caption **(10 + 2) x 5** is treated as authoritative, and neither is treated as a typo | ✅ Done | | 32 | `2plus5times3.webp` keeps its file name; the caption **(10 + 2) x 5** is treated as authoritative, and neither is treated as a typo | ✅ Done |
| 33 | The sales-funnel redesign starts from the **offer**, not the layout: the user opted to define what is sold before any funnel copy or structure is written, so the diagnosis, the stage structure and a 9-item offer sheet live in `memory-bank/sales-funnel-plan.md`, and nothing gets built until the offer facts are supplied | ✅ Done (shape settled, see #34) |
| 34 | The Offer stage is **one primary offer with a published price band, plus a fixed-price diagnostic as the entry step**, with all other capability left as bench depth. Cline recommended this (reasoning in `memory-bank/sales-funnel-plan.md`); the user accepted it on 2026-09-22. Packages (two to four engagements) and consultative/no-price selling are deferred to later stages rather than rejected. The fill-in-the-blank copy lives in `memory-bank/offer-draft.md` | ✅ Decided; awaiting the numbers |
### Open Questions (remaining) ### Open Questions (remaining)
1. **Real logo:** the favicon and the Open Graph image were both built on 2026-09-22, but does a real 2RE03 logo file exist anywhere? Nothing has turned up in the repo or the asset backup. 1. **Real logo:** the favicon and the Open Graph image were both built on 2026-09-22, but does a real 2RE03 logo file exist anywhere? Nothing has turned up in the repo or the asset backup.

129
memory-bank/offer-draft.md Normal file
View file

@ -0,0 +1,129 @@
# Offer Draft - 2RE03
> Fill-in-the-blank copy for the **Offer** stage of `memory-bank/sales-funnel-plan.md`.
> The shape is settled (user-confirmed 2026-09-22): **one primary offer with a published price band, plus a fixed-price diagnostic as the entry step**, with every other capability left as bench depth. What is missing is facts, which only the user has, so every gap below is written as a visible slot in `[[double brackets]]`. **No slot may be filled with an invented number, duration, claim or result** (Ways of Working 3). Nothing here is production copy yet: once the slots are answered, this becomes the copy for `services.html`, `index.html` and `contact.html`. **Progress (2026-09-22): 2 of 21 slots answered, proposals drafted for the other 19.** Six numbers and ten outcome lines are still bracketed, because only the user has them. **Conventions:** `✅` means the user confirmed it; **Proposed** means Cline drafted the wording and the user should edit it freely; `[[TODO: ...]]` marks a fact only the user can supply, and nothing in brackets is final or deployable.
## Slots to answer
| Slot | Feeds | Answer |
|---|---|---|
| `[[primary offer name]]` | `services.html` h2, homepage teaser | **Proposed** in Block A, three options |
| `[[one-sentence promise]]` | `services.html` lead, hero support line | **Proposed** in Block A |
| `[[what's included]]` | `services.html` bullets, 4 to 6 items | **Proposed** in Block A, six bullets taken from `about.html` |
| `[[typical duration]]` | `services.html` facts, homepage teaser | `[[TODO]]` in Blocks A and C |
| `[[price band]]` | `services.html` facts, homepage teaser, contact qualification | `[[TODO]]` in Blocks A, C and D |
| `[[what you supply]]` | `services.html` facts, contact "what to include" | **Proposed** in Block A, needs a check for anything missing |
| `[[revision rounds]]` | `services.html` facts | ✅ **Answered 2026-09-22: 3** |
| `[[ownership terms]]` | `services.html` facts, contact risk reversal | ✅ **Answered 2026-09-22: the client owns the work once the final payment is received** |
| `[[diagnostic name]]` | `services.html` card, homepage teaser, contact CTA | **Proposed** in Block B, "Site Assessment", two alternatives |
| `[[diagnostic price]]` | same as above | `[[TODO]]` in Blocks B and C |
| `[[diagnostic duration]]` | same as above | `[[TODO]]` in Block B |
| `[[diagnostic deliverable]]` | same as above | **Proposed** in Block B, needs your yes before it is offered |
| `[[credit toward project]]` | same as above | `[[TODO]]` in Block B |
| `[[project floor]]` | `services.html`, `contact.html` | `[[TODO]]` in Block D |
| `[[who replies]]` | `contact.html` | ✅ Live copy: "the form goes straight to us" |
| `[[reply time]]` | `contact.html` | ✅ Live copy: "aim to reply within a couple of days" |
| `[[first call agenda]]` | `contact.html` | **Proposed** in Block D, confirm the 30 minutes |
| `[[what you leave with]]` | `contact.html` | **Proposed** in Block D, a promise to confirm |
| `[[results per case study]]` | 10 case-study pages plus the homepage proof strip | **10 tailored prompts** in Block E |
| `[[quotes or names we may publish]]` | proof strip, case studies | **Proposed** in Block E |
| `[[analytics yes or no]]` | every page | **Proposed** in Block E, "yes" recommended |
## Draft copy, in the site's voice
Slots are the only things missing. Word choice outside the slots is a first draft for the user to red-pen, not the user's own words.
### Block A - `services.html`, the primary offer (replaces the current "Web Design" section, same layout)
**Proposed** copy, assembled from what `about.html` already claims plus the revision count the user confirmed. Edit freely.
- Eyebrow: `The offer`
- h2: `The Website Project` - *options for `[[primary offer name]]`: "The Website Project", "A Site, End to End", "Web Design Project". Pick one or replace.*
- Lead: `We find the actual problem, then design and build the site that solves it, so it says what you do clearly and holds up on whatever screen shows up next.`
- Bullets (**proposed**, derived from `about.html`'s "How we work" so nothing new is being claimed):
- `Figuring out the actual problem before anything gets designed`
- `Structure and copy: we write the words if the project needs them`
- `Design: layouts, type, and the pieces the site needs to work`
- `Build: hand-coded, responsive, and checked on real screens`
- `Three rounds of revisions`
- `Launch and handoff: you own the work once the final payment is received`
- Facts line: `Typical project: [[TODO: 4 to 8 weeks]] · From [[TODO: $X]] · You supply photos, existing material, logins, and a decision-maker · 3 rounds of revisions`
- Ownership line: `You own the work once the final payment is received.` (✅ confirmed 2026-09-22)
- Buttons: `Start a project` (primary, as today) and `Not ready for a project?` (anchor to Block B)
Two cautions on the facts line: the duration must be the calendar time actually achieved including the client's review time, and the price must be a number the user would be happy to honour twice in a row.
### Block B - `services.html`, the entry step (dark card, `bg-ink text-cream`, matching the Workflow band's middle card)
**Proposed**, but this one commits the user to delivering a service, so it needs their yes before it is built.
- Eyebrow: `Start smaller`
- h2: `Site Assessment` - *options for `[[diagnostic name]]`: "Site Assessment", "Website Audit", "Design Diagnostic"*
- Lead: `A written assessment of what you have now: what's working, what isn't, what we'd change first, and what a project would take. Yours to keep and act on with or without us.`
- Facts line: `[[TODO: $X]] · [[TODO: e.g. one week]]`
- Credit line: `If you go ahead with the project, [[TODO: the whole fee]] comes off the price.`
### Block C - `index.html`, offer teaser band (sits under the trigger questions, above the work list)
**Proposed:**
- h2: `Here's what working with us looks like.`
- Body: `Most projects run [[TODO: 4 to 8 weeks]] and start at [[TODO: $X]]. If you'd rather test the water first, the Site Assessment is [[TODO: $X]], and it comes off the bill if you hire us.`
- Buttons: `Start a project` (primary) and `See the details` -> `services.html`
### Block D - `contact.html`, risk reversal (extends the existing "Response time" panel, reusing its wording rather than replacing it)
**Proposed.** The live page already says "We read everything that comes in and aim to reply within a couple of days. If it looks like a fit, we'll suggest a quick call", so this extends that panel rather than replacing it.
- h3 or h4: `What happens next`
- Body: `We read it, and aim to reply within a couple of days. If it looks like a fit, the first call runs about [[TODO: 30 minutes]] and covers what you're trying to do, what's in the way, and roughly what it would take. You'll leave it knowing what to build next and what it would cost, whether or not you hire us. If we're not the right studio for it, we'll say so.`
- Second line, qualification: `Our projects start at [[TODO: $X]]. Below that, the Site Assessment is the honest way to start.`
Two things to confirm, because both are promises rather than descriptions: the 30-minute first call, and that a prospect really does leave knowing what to build next and what it would cost. They have to be true every time.
### Block E - the proof stage
`index.html` gains a proof strip and each case-study page gains one outcome line. Both need facts only the user has.
- Homepage proof strip: two or three short lines taken from the outcome lines below, or one or two client quotes.
- Outcome lines, one per case study:
| Case study | What the page already claims | The one line to supply |
|---|---|---|
| Jensen's Red Barn | an antiques shop, the barn's story, and Dorothy's scrapbook | `[[TODO: is it live, since when, and does the shop hear from it?]]` |
| Mask Aid Project | a site, videos and a crowdfunding push | `[[TODO: did the campaign hit its goal, and how much was raised?]]` |
| Mehavior | interface, mark and pitch material for an unbuilt app | `[[TODO: what happened after the pitch: funding, launch, or still in progress?]]` |
| 1 Woman's Art and Magic | two books for Joanna Signer plus the selling site | `[[TODO: where are the books sold, and does the site move them?]]` |
| Sam's Rules | words and layout in one pair of hands, with reader tools | `[[TODO: is it published, and who uses the tools in it?]]` |
| Silver Lining | a mark for a high-end retreat, hired to pull the right clients | `[[TODO: did bookings or enquiries change after the mark landed?]]` |
| Teach Each Other AI | monthly meetup site with a countdown and an archive | `[[TODO: how many sessions archived, and what is attendance like?]]` |
| Upscale Food Cart | a 3D proposal to move a cart upmarket | `[[TODO: did it lead to a build, a new market, or higher prices?]]` |
| Urban Moto | a full editorial pipeline for a motorcycle magazine | `[[TODO: how many issues, how many copies, over how long?]]` |
| Victoria Fuller | a site for the only Bunny with the Playboy logo rights | `[[TODO: anything measurable: traffic, bookings, press?]]` |
Also proposed:
- `[[quotes or names we may publish]]`: the case-study pages already name the clients, so the open question is whether any of them will give a sentence to quote. One real sentence beats three invented adjectives, and "none yet" is fine.
- `[[analytics yes or no]]`: **proposed** = yes to one privacy-friendly script plus a click event on `Start a project`. Without it, nothing above can be judged after launch. Say no and the site stays scripting-free and unmeasured.
What counts as an outcome: a number (traffic, enquiries, sales, signups), a date (launched, shipped, went to print), a before and after (replaced X, cut Y hours a week), or the client's own words. Anything concrete beats anything adjectival. Where there is genuinely nothing measurable yet, the line becomes a scope line instead ("designed and built in six weeks", "three ad campaigns in one print run"), which is still proof and still honest; the projects with numbers sit higher in the ordering on the page.
## How to pick the numbers (advice, not fact)
- **Price band**: take what you would quote today for the last two or three projects of that shape, and publish a rounded range rather than a precise figure. The band exists to filter and to self-select, not to quote.
- **Never publish a number you would resent honouring twice in a row.** If the band makes you flinch, the scope is wrong, not the copy.
- **Diagnostic price**: a fixed fee for one to a few days of your own time, producing something the client keeps and can act on without you. Low enough to be an easy yes, high enough to filter tyre-kickers, and credited against the project if they go ahead, which is what makes it safe to buy.
- **Duration**: the calendar time you actually achieve, including the client's own review time, not the ideal case.
- **Floor**: the smallest project you would take without resenting it. Publishing it is a service rather than a snub.
## Build order once the slots are filled
1. `services.html` Offer stage (Blocks A and B): the biggest change, and the one every other page points at.
2. `index.html`: trigger questions moved up, teaser band (Block C) in, breadth moved down, proof strip (Block E).
3. `contact.html`: risk reversal and qualification (Block D).
4. `case-studies/*.html`: outcome lines plus their captions, so the caption backlog item rides along.
5. `thank-you.html` and the analytics decision, so a submission becomes measurable.
Copy is reviewed before it is built. Each pass is verified the same way as the caption and copy passes: tags balance and every reference resolves across all 16 pages, no em dashes, headless-Chrome measurement of any gallery touched, screenshots at 1280px and 390px, and a live probe after the user deploys.

View file

@ -59,15 +59,11 @@
`memory-bank/todo.md`. On top of that, the work galleries were captioned, those `memory-bank/todo.md`. On top of that, the work galleries were captioned, those
captions were re-worded to the scope the user confirmed, and the section blurbs captions were re-worded to the scope the user confirmed, and the section blurbs
were re-voiced to match, with the earplug article and the YLEM Journal cover were re-voiced to match, with the earplug article and the YLEM Journal cover
re-filed from Print into Words. That whole batch is **staged** as of 2026-09-22 re-filed from Print into Words. That whole batch was committed by the user as **`8a7c3ea`** and uploaded by hand, and the live site was verified from the outside on 2026-09-22 (all four new assets 200 with the right MIME types, all 16 pages serving exactly one `og:image`, all 26 captions live, 61 asset paths with no 404s), so **everything built to date is public**. The current work is the **sales-funnel redesign**: planned in `memory-bank/sales-funnel-plan.md` with its shape decided (decision 34: one primary offer with a published price band plus a fixed-price diagnostic as the entry step) and its fill-in-the-blank copy in `memory-bank/offer-draft.md`, blocked on the offer facts only the user has. Around it: user sign-off on the live copy, the case-study grid captions, a few caption names that were read off the artwork, and the Content/Polish items in `memory-bank/todo.md`.
with its commit message pre-filled, waiting on the user to commit and upload by
hand; the live site is still the previous commit. What remains afterwards is user
sign-off on the copy, the case-study grid captions, a few caption names that were
read off the artwork, the Assets batch, and the Content/Polish items in
`memory-bank/todo.md`.
## What's Left To Build ## What's Left To Build
> The full, current backlog lives in **`memory-bank/todo.md`**; this section keeps only the headline items. > The full, current backlog lives in **`memory-bank/todo.md`**; this section keeps only the headline items.
- **The sales funnel** (`memory-bank/sales-funnel-plan.md`): the site has no offer anywhere, no price or scope signal, no qualification, proof that isn't outcome-shaped, and no measurable conversion path. Blocked on the user supplying the offer facts listed in `memory-bank/offer-draft.md`.
- User review/refinement of copy + visual design. - User review/refinement of copy + visual design.
- Optional real assets: a real 2RE03 logo (the favicon and Open Graph image both - Optional real assets: a real 2RE03 logo (the favicon and Open Graph image both
landed on 2026-09-22). landed on 2026-09-22).
@ -80,9 +76,10 @@ read off the artwork, the Assets batch, and the Content/Polish items in
- The favicon and the Open Graph image both exist (2026-09-22), and every page - The favicon and the Open Graph image both exist (2026-09-22), and every page
declares the icons plus the full `og:*`/`twitter:*` set against declares the icons plus the full `og:*`/`twitter:*` set against
`https://2re03.com/`. Any real 2RE03 logo still does **not** exist. `https://2re03.com/`. Any real 2RE03 logo still does **not** exist.
- The new assets are **not deployed**: as of 2026-09-22 the live site still returns - Deployed and **verified live** on 2026-09-22 (commit `8a7c3ea`): all four icon
404 for `img/favicon.svg`, `img/favicon.ico` and `img/og-image.png`, so social and social assets return 200 and all 16 pages declare exactly one `og:image`.
scrapers will not see the card until the site is next uploaded. Social scrapers may still serve a cached preview of the domain until their
caches turn over, so a share preview is worth re-checking later.
- No IKEHU video is present on this machine, so the possible motion/video section - No IKEHU video is present on this machine, so the possible motion/video section
cannot be built until the file or a URL is supplied. cannot be built until the file or a URL is supplied.
- Case study hero backgrounds are generated JPEGs; **Urban Moto's is low - Case study hero backgrounds are generated JPEGs; **Urban Moto's is low
@ -265,5 +262,9 @@ read off the artwork, the Assets batch, and the Content/Polish items in
- **2026-09-22** - **Brief re-read: the two flagged caption strings settled, and `work.html` now matches the brief character for character.** The user re-sent the caption brief with `work.html` attached, which confirmed all seven items were already in place (political art show, UX and UI, designed and coded, three print ads, the earplug article and the YLEM Journal cover already re-filed into **Words**, Sam's Rules as editing plus illustrations) and settled the two strings that had been left open for them: the ads sub-line is written **"Print Ad"** with a capital A - the user's own rendering, kept verbatim, which makes it the page's only title-case sub-line - and the app is written **(10 + 2) x 5** with spaces around the operator. Both were changed in place; nothing else moved, no gallery changed size, and no other page, script, or asset was touched. Re-verified after the edit: 26 figures over 26 distinct images with one caption each and no duplicates, tags balance and every reference resolves across all 16 pages, no em dashes, and the galleries were **measured again** in a headless Chrome eval rather than assumed - `Print design gallery` stays `scrollWidth == clientWidth` with both arrows disabled and `Words gallery` keeps its 292px overflow with only "next" enabled, which is what the CSS predicts: `.carousel__item` is `flex: 0 0 auto; width: clamp(230px, 78vw, 340px)`, so caption copy cannot influence item width, the step, or the snap. **Uncommitted.** - **2026-09-22** - **Brief re-read: the two flagged caption strings settled, and `work.html` now matches the brief character for character.** The user re-sent the caption brief with `work.html` attached, which confirmed all seven items were already in place (political art show, UX and UI, designed and coded, three print ads, the earplug article and the YLEM Journal cover already re-filed into **Words**, Sam's Rules as editing plus illustrations) and settled the two strings that had been left open for them: the ads sub-line is written **"Print Ad"** with a capital A - the user's own rendering, kept verbatim, which makes it the page's only title-case sub-line - and the app is written **(10 + 2) x 5** with spaces around the operator. Both were changed in place; nothing else moved, no gallery changed size, and no other page, script, or asset was touched. Re-verified after the edit: 26 figures over 26 distinct images with one caption each and no duplicates, tags balance and every reference resolves across all 16 pages, no em dashes, and the galleries were **measured again** in a headless Chrome eval rather than assumed - `Print design gallery` stays `scrollWidth == clientWidth` with both arrows disabled and `Words gallery` keeps its 292px overflow with only "next" enabled, which is what the CSS predicts: `.carousel__item` is `flex: 0 0 auto; width: clamp(230px, 78vw, 340px)`, so caption copy cannot influence item width, the step, or the snap. **Uncommitted.**
- **2026-09-22** - **Section copy brought in line with the captions, and the last naming questions settled.** The pass that closed the gap the caption revision opened. Four `work.html` blurbs were re-voiced so nothing contradicts the caption above it: the **Words** intro is now "Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out." (the old line claimed only writing, while YLEM Journal and Sam's Rules are editing work), the **App Design** blurb says some pieces were "coded end to end" and the rest "built to look real long before they ship" (the old line implied everything stopped at looking real), the **Print** blurb leads with the ads the gallery actually shows and keeps flyers, postcards, business cards, letterhead and product design as capability rather than as a description of the images, and the **Logos** intro adds ", and the occasional title slide" so the Dat Art slide in that gallery reads as deliberate. The Dat Art caption became **"Presentation for Motion Labs"** with a matching alt, since the image is a title slide and not a mark, and **"a pretzel stand" became "a food cart"** in both `work.html` and `services.html`, matching what the render shows (the cart is labelled *Gourmet Pasteles and Churros*) and the Upscale Food Cart case study. Three questions were settled by the user in the same exchange: **YLEM stays in both galleries**, the **`2plus5times3.webp` file name stays as-is** with the caption `(10 + 2) x 5` treated as authoritative, and the **Dat Art** piece stays in Logos. Verified: all seven new strings render and all five replaced strings are gone from both files, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, galleries re-measured in headless Chrome (unchanged: Print and App Design `overflow=0` with both arrows disabled, Words 292px with only "next" enabled) and screenshot-checked at 1280px and 390px for the Logos, Print and Words bands. The external asset backup was also inventoried, which established that **no flyer, postcard, business card or letterhead artwork exists anywhere on this machine**. The working tree was then **staged** with this batch's message pre-filled into `.git/COMMIT_EDITMSG`, awaiting the user's own commit; nothing was committed or pushed. - **2026-09-22** - **Section copy brought in line with the captions, and the last naming questions settled.** The pass that closed the gap the caption revision opened. Four `work.html` blurbs were re-voiced so nothing contradicts the caption above it: the **Words** intro is now "Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out." (the old line claimed only writing, while YLEM Journal and Sam's Rules are editing work), the **App Design** blurb says some pieces were "coded end to end" and the rest "built to look real long before they ship" (the old line implied everything stopped at looking real), the **Print** blurb leads with the ads the gallery actually shows and keeps flyers, postcards, business cards, letterhead and product design as capability rather than as a description of the images, and the **Logos** intro adds ", and the occasional title slide" so the Dat Art slide in that gallery reads as deliberate. The Dat Art caption became **"Presentation for Motion Labs"** with a matching alt, since the image is a title slide and not a mark, and **"a pretzel stand" became "a food cart"** in both `work.html` and `services.html`, matching what the render shows (the cart is labelled *Gourmet Pasteles and Churros*) and the Upscale Food Cart case study. Three questions were settled by the user in the same exchange: **YLEM stays in both galleries**, the **`2plus5times3.webp` file name stays as-is** with the caption `(10 + 2) x 5` treated as authoritative, and the **Dat Art** piece stays in Logos. Verified: all seven new strings render and all five replaced strings are gone from both files, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, galleries re-measured in headless Chrome (unchanged: Print and App Design `overflow=0` with both arrows disabled, Words 292px with only "next" enabled) and screenshot-checked at 1280px and 390px for the Logos, Print and Words bands. The external asset backup was also inventoried, which established that **no flyer, postcard, business card or letterhead artwork exists anywhere on this machine**. The working tree was then **staged** with this batch's message pre-filled into `.git/COMMIT_EDITMSG`; nothing was committed or pushed by Cline.
- **2026-09-22** - **The batch was committed and deployed, and the live site was verified from the outside.** The user committed the staged work as **`8a7c3ea`** ("reworked some verbiage and added captions"), pushed it to `origin/main`, and uploaded the repo root by hand; the working tree is clean and `HEAD` matches `origin/main`. Verified live rather than assumed: `img/favicon.svg` 200 (`image/svg+xml`, 2.1 KB), `img/favicon.ico` 200 (15 KB), `img/apple-touch-icon.png` 200 (3 KB), `img/og-image.png` 200 (176 KB); all 16 pages return 200, each with exactly one `og:image` and two `rel="icon"` links; `/work.html` serves all 26 captions and the re-voiced blurbs ("The gallery shows the ads", "Presentation for Motion Labs", "(10 + 2) x 5", "and the occasional title slide", "coded end to end"), with zero occurrences of the replaced strings; `/services.html` serves the Workflow band and the food-cart copy; the homepage serves the new CTA. The new assets and Open Graph card are therefore **public for the first time**, which closes the Assets batch that had been repo-only since it landed. One caveat recorded: social scrapers may serve a cached preview of the domain until their caches turn over, so a share preview is worth re-checking later.
- **2026-09-22** - **The sales-funnel redesign was planned, and the offer shape was decided.** The backlog item "redesign the site as a sales funnel rather than as a design piece" moved from a one-line idea to a plan. Ten leaks were diagnosed in the current site: no offer anywhere, no price or scope signal, no qualification, proof that is not outcome-shaped, a single conversion path, no risk reversal, homepage ordering that fights the sale, unpositioned breadth, a CTA that asks before it gives, and nothing measured. A stage structure (Land -> Recognise -> Believe -> Offer -> Risk reversal -> Convert -> Measure) and a page-by-page draft went into the new `memory-bank/sales-funnel-plan.md`. Cline recommended **one primary offer with a published price band plus a fixed-price diagnostic as the entry step**; the user accepted, recorded as decision 34, with packaged engagements and consultative selling deferred rather than rejected. The fill-in-the-blank copy for `services.html`, `index.html` and `contact.html` (four blocks plus a proof-stage table for the 10 case studies) went into the new `memory-bank/offer-draft.md`, where every gap is a visible `[[slot]]` and no slot may be filled with an invented fact. **No production file was touched**: the live site is unchanged and the plan is blocked on the user supplying the offer facts.

View file

@ -0,0 +1,87 @@
# Sales Funnel Plan - 2RE03
> Working plan for turning the site from a portfolio that *has* a contact form into
> something that produces qualified enquiries. **Draft, blocked on the offer:** the
> user chose to define the offer first (2026-09-22), so the structure below is
> agreed in principle and none of the copy can be written until the offer sheet at
> the bottom is answered. Nothing here is built yet, and no fact about the company
> may be invented to fill a gap (see `projectbrief.md` -> Ways of Working 3).
## Why
`memory-bank/todo.md` carries "redesign the site as a sales funnel rather than as a
design piece". Today the site is the second thing: the work is presented well, and a
prospect still cannot tell what they would be buying, what it costs, how long it
takes, or what happens after they click "Start a project".
## Diagnosis: where the current site leaks
Read off the pages as they stand on 2026-09-22:
1. **No offer.** `services.html` lists capabilities (Web Design, then "The rest of it"), not engagements. Nothing says what a project *is*: scope, duration, price, or what the client has to supply. The prospect has to invent the engagement, and most won't.
2. **No price or scope signal anywhere on the site.** Not one number, band or "from". An offer without a price reads as "if you have to ask", which is the classic drop-off for small-business enquiries.
3. **No qualification.** Nothing tells a wrong-fit visitor to leave or a right-fit one that they are in the right place: no budget floor, no project minimum, no "what we don't do" on the services side, and nothing about where the work is strongest.
4. **Proof is not outcome-shaped.** The 10 case studies follow problem -> what we did, with no results, no after-state and no client words. The claims on `about.html` ("Real-world mileage", "Own the execution") are unbacked by anything concrete nearby.
5. **One conversion path.** Every CTA on all 16 pages is the same contact form. There is no low-commitment step, so a visitor who is not ready to fill in a form simply leaves.
6. **No risk reversal.** Ownership and handoff, what happens on day one, how revisions work and the response-time promise exist only as fragments on `contact.html`.
7. **Ordering fights the sale.** The homepage leads with work, then with breadth ("Web Design Is Only the Beginning"). Breadth before proof invites the "jack of all trades" doubt instead of answering it, and the trigger questions that create recognition ("A website that's embarrassing you?") sit at the very bottom, after the work list.
8. **Breadth is unpositioned.** "Everything else" is either a strength (one team, no vendor juggling) or a weakness (diluted focus). Today it is a list of five cards.
9. **The CTA asks before it gives.** "Have something that needs making?" is the right instinct, but it arrives only after the visitor has worked out for themselves what a project would look like.
10. **Nothing is measured.** No analytics, no event on CTA clicks, no thank-you step, so none of the above can be tested or improved after launch.
## Proposed funnel
Land -> Recognise -> Believe -> Understand the offer -> Risk reversal -> Convert -> Measure.
| Stage | Job | Where it lives | Status today |
|---|---|---|---|
| Land | Say who we help and what we make, in one line, with the primary CTA | Home hero | Copy is close, promise is vague |
| Recognise | Reflect the visitor's trigger back at them | Home, a band **moved up** from the bottom | Copy exists, wrong position |
| Believe | Outcome-shaped proof | Case studies plus a proof strip on Home | Weakest stage: no results, no quotes |
| Offer | What can be bought, in what shape, for how much | `services.html` restructured, maybe its own page | **Missing entirely** |
| Risk reversal | What happens next, what you own, what it costs to find out | `contact.html` plus an offer band | Fragments only |
| Convert | One primary path plus one low-commitment path, both measurable | `contact.html`, thank-you page | Single path, unmeasured |
| Measure | Know which pages produce enquiries | Analytics plus a conversion event | Nothing |
## Recommendation: one primary offer, priced, plus a paid first step
Cline's view, for the user to accept or overrule. Of the four shapes on the table, the highest-yield one for this studio is **one primary offer carrying a published price band, with a small fixed-price first step in front of it**, and every other capability left as supporting bench depth.
Why that one:
- **The site already says it.** `services.html` labels Web Design "Main event" and everything else "The rest of it", and the galleries are deepest in web work. One primary offer matches the hierarchy that already exists instead of inventing a new one.
- **One offer is provable; four are not.** A packaged-engagements structure needs four sets of outcome lines, four price bands and four proof stories. With 10 case studies, most of them small, four thin offers would dilute the strongest one rather than widen the appeal.
- **A price band is the qualification filter.** It is also the fastest fix for the "if you have to ask" leak, and it filters out the enquiries that cost the most time for the least money.
- **A paid first step converts without committing.** Most studios cannot publish a project price honestly because scope genuinely varies. A fixed-price diagnostic or scoping sprint, credited against the project if it goes ahead, gives the site one number it can publish, gives the prospect a low-risk way to say yes, and turns a free conversation into a paid one.
- **The other two shapes are not wrong, just later.** Consultative (no prices) only works once the pipeline is referral-driven, which is the stage after this one. "Two to four packages" is the right *later* move, once each service has its own results to show. The recommendation is deliberately a spine plus a front door, not a menu.
What it costs the user: they have to be willing to publish one number, or one "from" band, and to define a repeatable first step. If publishing a project price is off the table entirely, then the paid first step becomes the published price by default and the primary offer stays "let's scope it", which is still a funnel rather than a brochure.
## Page-by-page draft (to confirm once the offer exists)
- **`index.html`** - reorder: trigger questions move up under the hero, breadth moves down; add a proof strip (results or client words); add an offer teaser band linking to `services.html`; keep the closing CTA.
- **`services.html`** - rebuild around 2 to 4 named engagements (what's included, duration, price band, what we need from you, what you own), with the current capability grid demoted to "also on the bench" and the Workflow band kept.
- **`about.html`** - back the claims with the same proof the homepage uses; keep "What we won't do", which already does qualification work.
- **`contact.html`** - state what the prospect gets back and when, what the first call covers, and add the secondary low-commitment path; consider two or three qualifying fields (budget band, timeline).
- **`case-studies/*.html`** - add an outcome line to each, which needs facts only the user has.
- **New (probably)** - `thank-you.html` so a submission is measurable, and possibly a dedicated pricing page if the offer sheet yields 3 or more engagements.
- **`css/style.css`** - new components for the proof strip and the offer cards; nothing existing gets reshaped.
- **Measurement** - one analytics snippet plus click events, subject to item 8 of the offer sheet.
## Offer sheet (needed before any copy is written)
1. **The primary offer** in one sentence: we build *what*, for *whom*. Feeds the hero and the offer band.
2. **The engagements**: 2 to 4 named, each with what's included, typical duration, price (fixed, "from", or band), what the client supplies, and how many revision rounds. Feeds `services.html`. If there is only one real offer, say so: one strong offer beats three thin ones.
3. **The floor**: the smallest project worth taking, and any industries or project types to turn down. Feeds qualification.
4. **Outcomes**: for each of the 10 case studies, one result line (traffic, enquiries, launch date, time saved, sales). One sentence each is enough, and this is the single biggest upgrade available to the site.
5. **Proof we may publish**: client quotes, client names, logos, or nothing yet.
6. **After the form**: who replies, how fast, what the first call covers, and what a prospect leaves with even if they never hire us.
7. **The secondary path**: keep "email a question", or add a scheduling link?
8. **Measurement**: is a privacy-friendly analytics script acceptable, or does the site stay scripting-free?
9. **Commercial terms we may state**: file ownership on handoff, deposits and milestones, and whether those may be published.
## Next action
The offer sheet is the blocker. Once items 1 to 4 are answered, the funnel copy gets drafted against them for review, then built in small verified steps using the same harness as the caption and copy passes: tag balance and reference checks across all 16 pages, no em dashes, headless-Chrome measurement of any gallery touched, screenshots at 1280px and 390px, and a live probe after the user deploys.

View file

@ -91,7 +91,7 @@ No build step and no package manager - it is plain static HTML/CSS/JS.
## Deployment ## Deployment
- The site is **published at https://2re03.com/** (hosted by the user). Confirmed 2026-09-22. - The site is **published at https://2re03.com/** (hosted by the user). Confirmed 2026-09-22.
- The host serves **`.html` URLs**: `https://2re03.com/work.html` returns 200 while `https://2re03.com/work` returns 404. Canonical and Open Graph URLs therefore use the `.html` form, with the bare root (`https://2re03.com/`) for the homepage. - The host serves **`.html` URLs**: `https://2re03.com/work.html` returns 200 while `https://2re03.com/work` returns 404. Canonical and Open Graph URLs therefore use the `.html` form, with the bare root (`https://2re03.com/`) for the homepage.
- Deploys are **manual**. As of 2026-09-22 the live site still 404s on `img/favicon.svg`, `img/favicon.ico` and `img/og-image.png`, because the Assets batch had not been uploaded yet. - Deploys are **manual**. The icon set and social card went live on 2026-09-22 (commit `8a7c3ea`, uploaded by the user), and the deploy was verified from the outside: `img/favicon.svg` 200 (`image/svg+xml`, 2.1 KB), `img/favicon.ico` 200 (15 KB), `img/apple-touch-icon.png` 200 (3 KB) and `img/og-image.png` 200 (176 KB), every one of the 16 pages returns 200 with exactly one `og:image` and two `rel="icon"` links, `work.html` serves all 26 captions, `services.html` serves the new Workflow band, and all 61 unique local asset paths the pages reference (images, CSS, JS, fonts) return 200 live with no 404s.
- No build step, so a deploy is a straight copy of the repo root. Uploading the whole folder also puts `memory-bank/` (which now includes the backlog, `memory-bank/todo.md`), `.clinerules/`, and the site files on the server; that is intentional, not accidental. - No build step, so a deploy is a straight copy of the repo root. Uploading the whole folder also puts `memory-bank/` (which now includes the backlog, `memory-bank/todo.md`), `.clinerules/`, and the site files on the server; that is intentional, not accidental.
## Dependencies ## Dependencies

View file

@ -8,7 +8,7 @@ Last updated: 2026-09-22.
## Now ## Now
Nothing queued. All four copy briefs (2026-09-22), the work-caption pass (2026-09-22), the caption revision the user called out from their own read-through (2026-09-22), and the section-copy pass that made the blurbs match those captions (2026-09-22) have all landed; see Done. The next candidates are the Assets and Content sections below, the case-study grid captions, and the deploy. Nothing queued, and everything to date is **live**: the four copy briefs, the work-caption pass, the caption revision, the section-copy pass and the icon/social assets all shipped in `8a7c3ea` (2026-09-22) and were verified from the outside. The next candidates are the case-study grid captions (Content), a real 2RE03 logo (Assets), the caption names that still need confirming, and the Polish items at the bottom.
## Assets ## Assets
@ -27,7 +27,7 @@ Nothing queued. All four copy briefs (2026-09-22), the work-caption pass (2026-0
- [ ] find and add IKEHU video - [ ] find and add IKEHU video
- [ ] Urban Moto case-study hero is low resolution (450px native at its widest); - [ ] Urban Moto case-study hero is low resolution (450px native at its widest);
find or shoot a better crop. find or shoot a better crop.
- [ ] redesign the site as a sales funnel rather than as a design piece - [ ] Redesign the site as a sales funnel rather than as a design piece. **In planning, blocked on the offer facts** (2026-09-22): the diagnosis, the stage structure and the page-by-page draft live in `memory-bank/sales-funnel-plan.md`, the offer shape is settled (decision 34: **one primary offer with a published price band, plus a fixed-price diagnostic as the entry step**), and the fill-in-the-blank copy, with every remaining `[[slot]]` listed in one table, lives in `memory-bank/offer-draft.md`. No copy gets written and no page gets rebuilt until those slots are answered, because they need facts only the user has: the price band and typical duration, what's included, what the client supplies, the project floor, the diagnostic's price and deliverable, and one outcome line per case study.
## Done ## Done
@ -87,7 +87,6 @@ Nothing queued. All four copy briefs (2026-09-22), the work-caption pass (2026-0
start guide**. No author bylines appear in any caption (see the attribution start guide**. No author bylines appear in any caption (see the attribution
rule). **Uncommitted.** rule). **Uncommitted.**
- [x] **2026-09-22** - **Caption revision from the user's read-through, and two pieces re-filed.** Six `work.html` captions were re-worded to the scope the user confirmed: **Back That Ass Up** became "Political art show" (it was a political campaign art show, so the US-flag mark finally makes sense and the alt now says so), **Mehavior** became "UX and UI", **(10 + 2) x 5** became "Designed and coded" (the whole app, not just its interface), and the three ads - Loren Kincaid, Macchiarini Metalworks, K.C. Engineering - all became "Print Ad" (the last was "Tire advert"; the capital A is kept verbatim from the brief, making it the page's only title-case sub-line). **Sam's Rules of Money** became "Book editing and illustrations" - editing the book plus its illustrations, which the old "Book cover" hid. **Two pieces moved from Print to Words**, because that is where the deliverable belongs: `writtenearplugs.webp` ("Article, Urban Moto, February 2007") and `printylemcover.webp` ("Editing and cover design"; the user edited the whole magazine). Print now holds 3 items, all print ads; Words holds 4, ordered book, magazine, article, guide. Verified: 26 figures over 26 distinct images with one caption each and no duplicates, exactly two references to the moved files (both in Words), tags balance and every reference resolves across all 16 pages, no em dashes, and the carousels were **measured** in a headless browser rather than eyeballed - Print is now `scrollWidth == clientWidth` with both arrows disabled (same as the App Design gallery, so a 3-item gallery leaves no dead control) and Words overflows by 292px with only "next" enabled - plus screenshot checks of the Print and Words bands at 1280px and 390px. Build intermediates in `.tmp-captions/` were deleted. **Uncommitted.** - [x] **2026-09-22** - **Caption revision from the user's read-through, and two pieces re-filed.** Six `work.html` captions were re-worded to the scope the user confirmed: **Back That Ass Up** became "Political art show" (it was a political campaign art show, so the US-flag mark finally makes sense and the alt now says so), **Mehavior** became "UX and UI", **(10 + 2) x 5** became "Designed and coded" (the whole app, not just its interface), and the three ads - Loren Kincaid, Macchiarini Metalworks, K.C. Engineering - all became "Print Ad" (the last was "Tire advert"; the capital A is kept verbatim from the brief, making it the page's only title-case sub-line). **Sam's Rules of Money** became "Book editing and illustrations" - editing the book plus its illustrations, which the old "Book cover" hid. **Two pieces moved from Print to Words**, because that is where the deliverable belongs: `writtenearplugs.webp` ("Article, Urban Moto, February 2007") and `printylemcover.webp` ("Editing and cover design"; the user edited the whole magazine). Print now holds 3 items, all print ads; Words holds 4, ordered book, magazine, article, guide. Verified: 26 figures over 26 distinct images with one caption each and no duplicates, exactly two references to the moved files (both in Words), tags balance and every reference resolves across all 16 pages, no em dashes, and the carousels were **measured** in a headless browser rather than eyeballed - Print is now `scrollWidth == clientWidth` with both arrows disabled (same as the App Design gallery, so a 3-item gallery leaves no dead control) and Words overflows by 292px with only "next" enabled - plus screenshot checks of the Print and Words bands at 1280px and 390px. Build intermediates in `.tmp-captions/` were deleted. **Uncommitted.**
- **2026-09-22** - **Section copy brought in line with the captions, and the last three naming questions settled.** Four blurbs on `work.html` were re-voiced so nothing contradicts the caption it sits above: the **Words** intro now reads "Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out." (the old line claimed only writing, while YLEM Journal and Sam's Rules are editing work), the **App Design** blurb now says some pieces were "coded end to end" (the old line implied everything stopped at looking real), the **Print** blurb leads with the ads the gallery actually shows and keeps flyers, postcards, business cards, letterhead and product design as capability, and the **Logos** intro adds ", and the occasional title slide" so the Dat Art slide in that gallery reads as deliberate. The Dat Art caption became **"Presentation for Motion Labs"** with a matching alt, and the 3D copy on `work.html` and `services.html` now says **food cart** instead of pretzel stand (the render is labelled "Gourmet Pasteles and Churros" and the case study is Upscale Food Cart). The user also confirmed that **YLEM is fine in both galleries** and that **`2plus5times3.webp` keeps its name**, with the caption `(10 + 2) x 5` treated as authoritative. Verified: all seven new strings render and all five replaced strings are gone from both files, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, and headless-Chrome measurement confirms the copy did not disturb the galleries (Print and App Design at `overflow=0` with both arrows disabled, Words at 292px with only "next" enabled), with 1280px and 390px screenshots of the Logos, Print and Words bands. Also checked the external asset backup: no flyer, postcard, business card or letterhead artwork exists anywhere on this machine, which is why the Print copy is scoped to the ads. **Staged, awaiting the user's commit.**
- [x] **2026-09-22** - **Brief re-read: `work.html` now matches the caption brief character for character.** The user re-sent the brief with the file attached, which confirmed every item was already in place (political art show, UX and UI, designed and coded, three print ads, the two pieces already in Words, Sam's Rules as editing plus illustrations) and settled the two strings that had been flagged as open: the ads sub-line is **"Print Ad"** with a capital A, and the app is named **(10 + 2) x 5** with spaces. Both changed in place. Re-verified after the edit: 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, and the galleries were measured again in a headless browser - `Print design gallery` stays `scrollWidth == clientWidth` with both arrows disabled and `Words gallery` keeps its 292px overflow with only "next" enabled, so wider caption text changes nothing (`.carousel__item` is `flex: 0 0 auto; width: clamp(230px, 78vw, 340px)`). **Uncommitted.** - [x] **2026-09-22** - **Brief re-read: `work.html` now matches the caption brief character for character.** The user re-sent the brief with the file attached, which confirmed every item was already in place (political art show, UX and UI, designed and coded, three print ads, the two pieces already in Words, Sam's Rules as editing plus illustrations) and settled the two strings that had been flagged as open: the ads sub-line is **"Print Ad"** with a capital A, and the app is named **(10 + 2) x 5** with spaces. Both changed in place. Re-verified after the edit: 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, and the galleries were measured again in a headless browser - `Print design gallery` stays `scrollWidth == clientWidth` with both arrows disabled and `Words gallery` keeps its 292px overflow with only "next" enabled, so wider caption text changes nothing (`.carousel__item` is `flex: 0 0 auto; width: clamp(230px, 78vw, 340px)`). **Uncommitted.**
- [x] **2026-09-22** - **Section copy brought in line with the captions, and the last three naming questions settled.** Four blurbs on `work.html` were re-voiced so nothing contradicts the caption it sits above: the **Words** intro now reads "Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out." (the old line claimed only writing, while YLEM Journal and Sam's Rules are editing work), the **App Design** blurb now says some pieces were "coded end to end" (the old line implied everything stopped at looking real), the **Print** blurb leads with the ads the gallery actually shows and keeps flyers, postcards, business cards, letterhead and product design as capability, and the **Logos** intro adds ", and the occasional title slide" so the Dat Art slide in that gallery reads as deliberate. The Dat Art caption became **"Presentation for Motion Labs"** with a matching alt, and the 3D copy on `work.html` and `services.html` now says **food cart** instead of pretzel stand (the render is labelled "Gourmet Pasteles and Churros" and the case study is Upscale Food Cart). The user also confirmed that **YLEM is fine in both galleries** and that **`2plus5times3.webp` keeps its name**, with the caption `(10 + 2) x 5` treated as authoritative. Verified: all seven new strings render and all five replaced strings are gone from both files, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, and headless-Chrome measurement confirms the copy did not disturb the galleries (Print and App Design at `overflow=0` with both arrows disabled, Words at 292px with only "next" enabled), with 1280px and 390px screenshots of the Logos, Print and Words bands. Also checked the external asset backup: no flyer, postcard, business card or letterhead artwork exists anywhere on this machine, which is why the Print copy is scoped to the ads.
- [x] **2026-09-22** - **The batch was committed and deployed.** The user committed the staged work as **`8a7c3ea`** and uploaded the repo root by hand, so the icon set, the social card and all of the `og:*`/`twitter:*` tags are **live for the first time**, along with copy pass 1, the 26 captions and the re-voiced blurbs. Verified from the outside: all four new assets return 200 with the right MIME types and sizes, all 16 pages return 200 with exactly one `og:image` each, `/work.html` serves all 26 captions and none of the replaced strings, `/services.html` serves the Workflow band, and the homepage serves the new CTA. Working tree clean, `HEAD` == `origin/main`.