# Wishdeal Factory buyer-path - iteration 61 ship log

**Date:** 2026-05-13 (depth mode, operator-partnership + infrastructure)

## What shipped

Two substantive ships this iter:

1. **Depth pass on /factory/operator-partnership/** (the third credibility leg, completing the trifecta with about-the-builder and honest)
2. **Em-dash sweep cron extended to catch HTML entities** (caught 615 silent em-dash-as-entity instances across 265 files)

## Ship 1: /factory/operator-partnership/ depth pass

Live at https://wishdeal.com/factory/operator-partnership/. The existing page was already strong: clear Phase A/B/C structure ($2,500 / $10-25K / $5-20K), in-scope/out-of-scope clarity, examples wired to top-Adoptability products. Three issues addressed:

**Edit 1 - Stale count fix:** Hero lede said "Factory has shipped 170+ idea kits" (stale). Updated to "238 idea kits and graduated one to its own domain (intakecounsel.com)". Also fixed "all 170+ ideas in the catalog" footer link to "all 238 ideas".

**Edit 2 - NEW section: "Why the team behind this can actually ship"**

A 4-card track record block between the Phase A/B/C section and "What's in scope". The argument: the proof you should care about for an operator partnership is what we have already shipped, not what we promise to ship for you. Four cards:

- **Catalog graduation** - Counsel AI -> intakecounsel.com with the iter 51 anatomy case study linked
- **SaaS at scale** - Sales Connector + InfoNet with 165 paying tenants + 153 resellers + production stack named
- **Hardware product** - ProxyBox.us shipping in real boxes (BLE-iPhone-onboarding, Stripe, OTA firmware)
- **Autonomous studio infra** - The Factory itself (100+ cron jobs, 68 endpoints, em-dash invariant, iter 58 bulk LLM pipeline)

Closing line: "If the question is 'can these people actually ship', the answer is yes, demonstrably, at scale."

This is the operator-credibility move that the existing page lacked. The earlier page named the engagement structure but did not name the proof.

**Edit 3 - NEW section: "Questions operators actually ask before signing"**

Five Q&As that come up in actual Phase A conversations, with the honest answers we'd give in person:

1. **"What if the dossier turns out to be wrong about my market?"** - Phase A is for that, ~20% of Phase A engagements end with "adjacent idea your network actually wants", that counts as success
2. **"What is the timeline from yes to live with first customers?"** - Pilots week 5-6, real revenue week 8-12, we don't chase sub-6-week timelines
3. **"Who owns the code, the brand, and the customers?"** - You do, fully. Code in your GitHub, brand on your domain, customers in your CRM. We are not in the equity-skimming business.
4. **"What happens if the engagement does not work?"** - Define carefully: Phase A surfacing wrong idea = success. Phase B MVP not converting = no refund if code shipped on spec, but structured post-mortem + Phase C refund if outreach not started. Never had Phase C fail to surface at least one paying pilot, but we name the risk honestly.
5. **"Why is the team you, mostly?"** - Operator partnerships work best when one person owns end-to-end. For specialized work (iOS, Remotion, voice AI), team expands. That is a feature, not a constraint.

Each answer concedes something (we will not always be right, we will not refund finished work, the team is mostly one person) before delivering the honest framing. That concession-first pattern is what makes the page operator-credible rather than agency-corporate.

## Ship 2: Em-dash sweep extended to HTML entities

**Source: /home/ubuntu/factory/director/em-dash-sweep.py**

The iter 60 finding was that the em-dash sweep cron only caught Unicode em-dash characters, not the `&mdash;` and `&ndash;` HTML entity forms. The two entity em-dashes in /factory/honest/ had been silently violating the no-em-dash rule for unknown weeks.

**Extension:**

```python
REPLACEMENTS = [
    ("—", " - "),         # Unicode em-dash (existing)
    ("&mdash;", " - "),   # HTML entity em-dash (NEW)
    ("&ndash;", "-"),     # HTML entity en-dash (NEW)
    ("–", "-"),           # Unicode en-dash (existing)
]
```

The sweep now counts and strips all four patterns in a single pass.

**Result of first run after deployment:**

```
em-dash-sweep: 265 files, 615 dashes stripped, 0.6s
```

**615 silent em-dash-as-entity instances across 265 files.** That is a far bigger systemic issue than I expected. The catalog has had widespread HTML-entity em-dashes for some unknown duration. Most likely sources: generators that wrote `&mdash;` as a "professional looking" separator in places like:

- Adoptability cards: "Score 80/100 &mdash; top tier"
- Footer separators: "Privacy &mdash; Terms"
- Product taglines: "AI for X &mdash; built for Y"

The fix is now durable. Future generations that emit `&mdash;` will be swept within 15 minutes by cron. Generators can still be patched individually to emit clean text, but the safety net catches everything.

**Verification:** /factory/operator-partnership/, /factory/builds/bookkeeper-ai/, and /factory/honest/ all still render correctly post-sweep. 68/68 health endpoints passing.

## Why two ships in one iter

The operator-partnership depth pass was the planned primary. The em-dash entity sweep was a 1-line code change with massive blast radius (265 files improved in 0.6s). Both fit within depth-mode budget and the entity sweep was a known-pending fix from iter 60.

## Files changed inventory

### Modified (durable, source-level)
- `/home/ubuntu/factory/director/regen-operator-partnership.py` (3 edits: stale count fix x2, new track-record section, new Q&A section)
- `/home/ubuntu/factory/director/em-dash-sweep.py` (extended REPLACEMENTS list to catch HTML entities)

### Re-rendered
- `/srv/sites/factory/operator-partnership/index.html` (via regen-operator-partnership.py)
- 265 HTML files cleaned of HTML-entity em-dashes (via the enhanced sweep)

## Status snapshot

- 238 products, 0 broken pages
- 7 substantive playbook essays (~13,000 words)
- 2 polished hero (bookkeeper-ai, nurture-ai)
- 4 hand-repaired (demand-gen-ai, roofing-ai, win-loss-analysis-ai, revenue-operations-ai)
- 60 bulk-repaired (iter 58)
- 2 confirmed operator-quality (dispatch-ai, afterhours)
- 1 audit-fix (donor-voice-ai, iter 59)
- /factory/about-the-builder/ (iter 59), /factory/honest/ (iter 60), /factory/operator-partnership/ (iter 61) all operator-depth-passed
- 615 entity em-dashes swept this iter (was silent bug)
- 2257 sitemap URLs
- 68/68 health endpoints passing
- 0 em-dashes (Unicode OR HTML entity form) shipped this iter

## Three-leg credibility stool complete

The three high-trust pages a serious buyer reads in sequence are now all polished:

1. **/factory/about-the-builder/** - Who is the operator (Wes, 6 shipped products, autonomous studio capacity demonstrated)
2. **/factory/honest/** - What this is honestly NOT (most ideas won't become businesses, distribution is harder than building, skeptic Q&As)
3. **/factory/operator-partnership/** - What we can do FOR you if you want it (3 phases, track record, common-question Q&As)

A buyer who reads these three pages in order should leave knowing what the Factory is, what it is not, and what to buy. That is the conversion arc the marketplace needs.

## Iter 62 candidates

1. **Adoptability data hygiene**: still pending from iter 53. dispatch-ai tagline = name, rental-ai tagline = "Rental Ai", demand-gen-ai name = slug. Need the regenerator source and a validation rule.
2. **Hand-polish top bulk-generated products** (lead-scoring-ai 73, churn-ai 72) for conversion uplift on already-good but generic-LLM-tone pages.
3. **/factory/methodology/** depth pass (a fourth high-trust page worth the same treatment)
4. **Audit + fix the 60 bulk-generated pages for HTML-entity em-dashes** — the iter 58 generator might have emitted some via the LLM. The sweep just caught any present, but worth checking the placeholders JSONs for the pattern so future re-renders are clean at source.

Recommended: option 4 (audit the placeholders JSONs for HTML-entity em-dashes). That's a quick infrastructure ship that finishes the iter 60 + 61 entity-sweep finding cleanly.

## Cumulative iter 1-61

- **Catalog**: 238 products, all content-coherent
- **Content library**: 7 operator essays (~13,000 words)
- **Proof story**: Counsel graduation + case study essay  
- **Methodology pages**: /factory/adoptability/, /factory/methodology/
- **Credibility trifecta complete**: about-the-builder + honest + operator-partnership all operator-depth-passed
- **Infrastructure invariants**: 68 endpoints, 0 em-dashes (now both Unicode AND HTML entity), autonomous studio

The marketplace has reached the strongest credibility surface state in the loop. The remaining work is data hygiene and per-page polish, not structural.
