💼 Property Dossier ▸ STATUS.md
updated 2026-07-23
Stream C — Property Investment Dossier — STATUS
Final pass complete 2026-07-15 ~00:20. Launch-ready. Nothing deployed, sent, posted, or purchased. No accounts created.
What was built
A complete sell-and-deliver kit for a €299 / 48-hour AI-assisted, human-verified property investment dossier for expat buyers in Berlin & Paris (bundle: 3 for €749; on-site add-on €499/€899):
- Landing page (
index.html) — Unicorn.Land design system, hero → problem → 8-section dossier contents → real-sample band → €299 price card with unified guarantee → trust/bio → how-it-works → FAQ → legal footer. Full Tally intake spec (14 questions, conditional Stripe thank-you pages, withdrawal checkbox Q13b, capacity-toggle copy) lives in an HTML comment at the bottom. Source-forwarding script carries?source=into the intake link and the sample. - Sample dossier (
sample-dossier.html) — the real April 2026 Paris dossier (€935k, 7th arr.), anonymized, 9 pages incl. a comparables/true-price page, SAMPLE bar, print-ready, now with a closing CTA band after the verdict. - Legal (
impressum.html) — Impressum (incl. UG register-data conditional), GDPR privacy notice (now literally true: zero external requests), short terms with unified guarantee, Widerrufsbelehrung + Muster-Widerrufsformular. - Self-hosted fonts (
fonts/) — Outfit + JetBrains Mono variable woff2 (latin + latin-ext, ~90 KB total); Google Fonts imports deleted from all three pages. - Delivery pipeline (
DELIVERY-PIPELINE.md) — intake → self-serve payment → kickoff email + checks (incl. listing-count-vs-product and capacity toggle) → agent research pass → Joshua review/verdict (the product) → render → delivery. ~90-105 min Joshua per dossier. - Outreach kit (
OUTREACH.md) — named Berlin/Paris expat channels, 2-week sequencing, 9 drafts (EN/DE/FR forum, LinkedIn, X, FB) all with?source=slugs baked in, partnership template + send-ready Guthmann (5a) and Adrian Leeds (5b) emails, payment / kickoff / delivery email templates with the withdrawal + guarantee wording. - Assets —
og-image.png(1200×630),favicon.svg.
Council scores (R1 → R2)
R1 per-persona scores were not persisted to this stream (orchestrator context); all R1 must-fixes were applied before round 2. Round-2 average: 7.9/10.
| Persona | R2 score | R2 must-fixes | Status after final pass |
|---|---|---|---|
| BRANSON | 8.0 | Bundle buyers can only submit 1 listing; capacity promise contradicts self-serve flow; guarantee says 3 different things | Q4 → long-text multi-link + thank-you bundle line + Stage 2 listing-count check; capacity toggle documented (Tally thank-you edit) + FAQ/price-note softened to match reality; one guarantee sentence now verbatim in index.html, impressum.html#agb, and the delivery email |
| MACKENZIE | 7.5 | Google Fonts = IP transfer contradicting the Datenschutz; UG register fields missing from Impressum; no Muster-Widerrufsformular, no durable-medium confirmation | Fonts self-hosted (all 3 pages, zero external requests — no Datenschutz copy change needed); Registergericht Charlottenburg / HRB [NUMBER] / Geschäftsführer conditional block added + HRB/[IF in the pre-deploy grep; model withdrawal form appended to #agb; order-confirmation/kickoff email template added for EVERY paying client and wired into Stage 2 step 1 |
| VEGA | 8.0 | Money CTA can ship dead (href="#"); ?source= in only 2 of 7 drafts; Guthmann/Leeds emails not actually drafted; no capacity gate |
Anchor now href="REPLACE_WITH_TALLY_URL" — one find-replace fixes link + tracking, and the grep gate catches href="#" data-intake-link; every draft link now carries its slug inline (toytown/reddit-* / fb / de / fr / partner-[firm]); Drafts 5a + 5b written send-ready; capacity toggle in Tally spec + DELIVERY-PIPELINE Stage 2 step 3 |
| SHADE | 8.0 | Same dead-CTA risk; impressum.html declares Outfit but never loads it; sample has no CTA at the end; no-sample fallback under-specified | CTA fixed (see VEGA); impressum.html got the self-hosted @font-face (better than the requested Google import); dark closing CTA band added after page 9 (screen-only, print-hidden, picked up by the source-forwarding script — verified: index.html?source=test#order); README Action 1 now has the exact 5-item no-sample edit list incl. a pre-written trust-bullet variant and outreach line |
All R2 must-fixes: applied tonight (none skipped)
- One-step money CTA — placeholder moved into the
href; forwarding script keepsdata-intake-linkas its selector; pre-deploy grep extended (href="#" data-intake-link,fonts.googleapis,[NUMBER,[IF). Verified by rendering with?source=test. - Fonts self-hosted — 4 variable woff2 files downloaded to
fonts/; @import deleted fromindex.html+sample-dossier.html; @font-face added to all three pages. Verified: zerogoogleapis/gstaticreferences; headless render shows real Outfit. - Guarantee unified — one sentence verbatim in the price card,
impressum.html#agb, the delivery email, and (bonus) the kickoff email: “If your dossier doesn’t surface at least one material fact you didn’t know — a comp, a risk, a cost, a negotiation lever — tell us within 7 days and we refund you in full.” - Bundle purchase path — Q4 is long-text (“paste all 2-3 listing links, one per line”), thank-you page tells bundle buyers to reply with missing links, kickoff email has a bundle paragraph, Stage 2 checks listing count vs. product paid.
- Capacity honesty — FAQ + price note now say “we tell you before work starts — next window or instant full refund”; documented 2-minute Tally thank-you toggle (exact copy provided) in the intake spec and Stage 2 step 3.
- Widerruf compliance — Muster-Widerrufsformular in #agb; kickoff email restates the express-request sentence + links the terms on a durable medium (§ 312f BGB / Art. 8(7) CRD).
- Impressum UG fields — Registergericht Amtsgericht Charlottenburg · HRB [NUMBER] · Geschäftsführer conditional, delete-if-personal, gated by the grep.
- Outreach tracking + Day-1 emails —
?source=slug baked into every draft; Guthmann opener leads with “Your Ortsteil market reports are literally cited in our dossiers”; Leeds opener leads with the anglophone-Paris angle and the 7th-arr. sample. - Sample closing CTA — dark stone band, rainbow top border, “€299, 48 hours” button to
index.html#order; forwarding script upgraded to place the query before the#fragment(was a latent bug: would have producedindex.html#order?source=…).
Unresolved (needs Joshua — cannot be done by an agent tonight)
- Entity/VAT decision (Action 0) — MIA UG Kleinunternehmer vs. personal billing; drives the Impressum brackets, the price-card VAT line, and Stripe tax settings. Paris/Art. 47 VAT note and OSS option written up in README.
- Paris client consent (Action 1) — HARD GATE for deploying the sample; message drafted, fallbacks pre-decided (incl. the exact no-sample edit list).
- Tally form, Stripe products/links, Cal.com link — account actions, human-only.
- Real HRB number, street address, testimonial text.
- Deploy + all posting/sending (hard rule: human-only).
- Open questions (low stakes): guarantee wording final sign-off; skim sample page 6 comp rows; OSS registration now vs. on first French sale.
Month-one revenue math
- Funnel: Day 1 = LinkedIn post + X thread + 5 partnership emails (2 pre-written); Days 1-5 = Toytown/Reddit value post + FB groups as approvals land. Realistic reach: 1,500-4,000 sample reads in week 1-2 (the sample is the lead magnet; zero paywall).
- Conversion path: sample read → intake (Tally) → self-serve Stripe. At 0.5-1% read→intake and ~60% intake→pay: 4-8 paid dossiers in month one, plus a plausible 1 bundle from a finalist-comparing buyer.
- Revenue: floor 4 × €299 = €1,196 · base 6 × €299 + 1 × €749 = €2,543 · capacity ceiling is never the constraint in month one (2/48h ≈ 20+/month possible).
- Joshua time: ~90-105 min/dossier → effective €170-200/hr gross (bundle improves it via shared district research). ~8-14 hrs total at base case.
- Costs: ~€0 fixed (Tally free tier, Cal.com free, Cloudflare Pages existing, fonts self-hosted); Stripe ≈ €4.50/dossier. If VAT applies (no Kleinunternehmer), net/dossier ≈ €251.
- Not counted: partnership channel maturing (€50 referral / €199 trade price economics), on-site add-ons (€499/€899), price rise to €349 after 3 testimonials.
MORNING ACTIONS (final list — full details + copy in README.md)
- Action 0 — Entity & VAT decision; fill Impressum brackets + resolve the two
[IF …]blocks + pick the VAT sentence in the price card (15 min) - Action 1 — Message the Paris client (consent + testimonial) — HARD GATE for the sample (5 min; fallbacks pre-written)
- Action 2 — Create the Tally intake form from the spec in index.html (Q4 = long text!),
incl. conditional thank-you pages; find-replace
REPLACE_WITH_TALLY_URL(one step); test?source=test(20 min) - Action 3 — Stripe products + Payment Links (€299 / €749), paste into Tally thank-you pages and the OUTREACH payment email (10 min)
- Action 4 — Cal.com 15-min “Dossier walkthrough” link → delivery email template (5 min, optional today)
- Action 5 — Run the pre-deploy grep (must return nothing), deploy the 5 files +
fonts/to.deploy/property-dossier/from a normal session, fill[SAMPLE-LINK]/[SITE-LINK]in OUTREACH.md, check OG preview + nofonts.googleapis.comin DevTools (10 min) - Action 6 — Day-1 outreach: LinkedIn (1b) → X (1c) → partnership emails (5a Guthmann + 5b Leeds send-ready, + 1-3 from Draft 5) → request FB group memberships → Toytown (30 min)
- Standing — at 2 dossiers in flight, flip the Tally capacity toggle (2 min; copy in the index.html intake-spec comment)