💼 Property Dossier ▸ README.md
updated 2026-07-15

Property Investment Dossier — Stream C

Offer: AI-assisted, human-verified investment dossier for a specific property listing. Price: €299 per property (bundle: 3 for €749; on-site inspection add-on: €499 Berlin / €899 + travel Paris). Turnaround: 48 hours. Market: Expat/international buyers in Berlin & Paris who can’t independently read the local market.

Why €299 (from the €249-349 band)

Files

File What it is
sample-dossier.html The real Paris dossier (April 2026 private client), fully anonymized and rebranded — now 9 pages including a new Comparables & True Price/m² page (page 6). On-site inspection pages carry “optional add-on” chips. SAMPLE watermark, CTA bar, OG/Twitter meta, favicon.
index.html Landing page on the Unicorn.Land design system. Includes source-forwarding script (?source= survives into the Tally link and the sample detour), OG/Twitter meta, favicon, capacity line, VAT note placeholder, Impressum/privacy/terms footer links, testimonial slot. Full Tally intake spec (incl. conditional Stripe thank-you pages and the withdrawal checkbox Q13b) is in the HTML comment at the bottom.
impressum.html Combined Impressum + Datenschutzerklärung + short Terms (scope, delivery, guarantee, EU withdrawal handling). Contains [BRACKETED] placeholders — fill in Morning Action 0 before deploy.
og-image.png 1200×630 link-preview image (dark card, holographic dot, “€299 · delivered in 48 hours”). Deploy alongside the HTML; meta tags point at unicorn.land/property-dossier/og-image.png.
favicon.svg Copied from design-system/brand/.
fonts/ Self-hosted Outfit + JetBrains Mono variable woff2 (latin + latin-ext). All three HTML pages @font-face these — zero external font requests, so the Datenschutz “no Google” claim is true. Deploy this directory alongside the HTML.
DELIVERY-PIPELINE.md Intake → self-serve payment (Berlin/Paris) → agent research pass → Joshua review/verdict → render → delivery. Joshua time ~90-105 min/dossier.
OUTREACH.md Named communities, partnership pitch (now Day 1-2), LinkedIn + X drafts added, 5+ copy-paste drafts (EN/DE/FR), payment/delivery email templates with withdrawal wording, 2-week sequencing.

Nothing has been deployed, posted, sent, or purchased. No accounts were created.

Expert-council feedback: what was applied

All must-fix items were applied. The only judgment call: the trust-quote block now holds a placeholder for the real client testimonial (Morning Action 1) rather than shipping Joshua quoting himself — Joshua’s quote moved into the trust bullet list. If the client says yes to publication but doesn’t send a quote, see the fallback in Action 1.


MORNING ACTIONS (Joshua only — in order)

0. Entity & VAT decision (15 min — BEFORE Stripe, blocks Actions 3 and 6)

Recommendation: bill through MIA UG if it can claim Kleinunternehmer status — check MIA’s prior-year turnover (likely near zero). If yes: invoice “€299 — no VAT charged per §19 UStG”, and in impressum.html + the index.html price card use the Kleinunternehmer sentence (both have inline comments marking the exact spot). If no (or you’d rather bill personally with VAT): price stays €299 incl. 19% USt (net ≈ €251 — add a net column to the DELIVERY-PIPELINE rate table so the €/hr math stays honest).

Paris caveat — read before the first Paris sale (10 min): dossiers on a specific French property are plausibly “services connected with immovable property” (Art. 47 VAT Directive / §3a Abs. 3 Nr. 1 UStG; Art. 31a of the Implementing Regulation explicitly lists valuation and expert services on a specific property). If that classification stuck, place of supply = France and French VAT would be due regardless of German Kleinunternehmer status. Two cheap mitigations, both already prepared: 1. The terms page and invoices frame the deliverable as “independent market research and general investment analysis” — never “valuation/expertise of the property,” and no formal valuation opinion is given (substance matters, but the wording supports the market-research classification; keep invoice line items matching it). 2. Register for the EU OSS scheme via BZSt online portal (free, ~20 min) so B2C services taxable in another member state can be reported there if it ever comes to that. Decide eyes-open; this is a note from your researchers, not tax advice.

Then: fill the four [BRACKETED] placeholders in impressum.html (entity name, address, VAT line) and pick the VAT sentence in the index.html price card (marked VAT LINE).

1. Message the Paris client — HARD GATE before any deploy/posting (5 min)

The sample is a €935k, 7th-arr., top-floor, Eiffel-view purchase — a small identifiable set. Explicit consent is a blocking gate, not a courtesy. Ask for both things at once:

“Hey — I’m turning the dossier I did for your Paris place into a service. I’ve anonymized yours as the public sample: no name, no street, no photos, figures rounded (draft attached / link). Two asks: (1) are you comfortable with this version being public? (2) would you give me 1-2 sentences on what it was worth to you, attributed only as ‘Private client, Paris’?”

2. Create the intake form (20 min)

  1. tally.so → sign in with ops@unicorn.land → “Create form.”
  2. Copy the questions verbatim from the HTML comment at the bottom of index.html — including Q4 as LONG TEXT (not URL-type) so bundle buyers can paste 2-3 listing links, Q12’s optional-with-purpose help text and the required Q13b withdrawal checkbox (it’s the legal basis for delivering inside the 14-day withdrawal window).
  3. Set up the conditional thank-you pages (spec in the same comment): Berlin/Paris → embedded Stripe link + bundle-buyer reply line, “Other” → 2-hour-SLA message. (Do Action 3 first if Tally wants the links now.) Note the CAPACITY TOGGLE copy in the same comment — that’s the 2-minute edit you make when 2 dossiers are in flight.
  4. Add hidden field source; enable email notifications to ops@unicorn.land.
  5. Copy the share URL → find-replace REPLACE_WITH_TALLY_URL in index.html. One step: the placeholder sits directly in the href of the single data-intake-link anchor (price-card CTA), so one find-replace fixes the link and the source-forwarding hook together. The nav/hero CTAs intentionally point at #order.
  6. Test source tracking: open index.html?source=test locally — the price-card CTA and the sample links must carry ?source=test. Submit a test intake and confirm Q14 filled.
  1. Stripe → Product catalog: Property Investment Dossier €299 one-time; Dossier Bundle (3 properties) €749. Use the entity from Action 0; set the tax/VAT treatment accordingly.
  2. Create a Payment Link for each; enable address collection; confirmation message: “Payment received — your 48-hour dossier clock has started. Check your inbox.”
  3. Paste the links into the Tally thank-you pages (Action 2.3) and into the “Payment email” template in OUTREACH.md (replace [STRIPE-LINK]) — that email is now only for city = “Other” intakes.

4. Set up the call scheduler (5 min, optional today)

Cal.com free tier → 15-minute event “Dossier walkthrough” → paste into the delivery-email template in OUTREACH.md ([CAL-LINK]).

5. Deploy the pages (10 min — only after Actions 0-2 are done)

Pre-deploy check from overnight/property-dossier/:

grep -n 'REPLACE_WITH_TALLY_URL\|REPLACE_WITH_CLIENT_TESTIMONIAL\|\[ENTITY\|\[STREET\|\[NUMBER\|HRB \[\|\[IF \|href="#" data-intake-link\|fonts.googleapis' index.html impressum.html sample-dossier.html

must return nothing (the only remaining href="#" targets are the intentional #order anchors; the [IF ...] brackets in impressum.html must be resolved per the Action 0 entity decision — UG keeps the Registergericht/HRB/Geschäftsführer lines with the real HRB number, personal billing deletes them). Then, from a normal (non-overnight) session: copy index.html, sample-dossier.html, impressum.html, og-image.png, favicon.svg, and the fonts/ directory (self-hosted Outfit + JetBrains Mono — the pages make zero external requests) into .deploy/property-dossier/ on a branch, PR, merge. Replace [SAMPLE-LINK] / [SITE-LINK] in OUTREACH.md with live URLs. Verify the OG preview (paste the URL into a LinkedIn draft — don’t post yet) and that DevTools Network shows no fonts.googleapis.com request.

6. Day-1 outreach (30 min)

Per OUTREACH.md sequencing — note the order changed: 1. LinkedIn post — Draft 1b is written, first-person, ?source=linkedin baked in. 2. X opener — Draft 1c, ?source=x. 3. 3-5 partnership emails — same day: Guthmann (Draft 5a) and Adrian Leeds Group (Draft 5b) are pre-written and send-ready in OUTREACH.md — just research the right inbox and paste. Draft 5 is the template for the other targets. This is the channel with buyers transacting this month — it no longer waits for week 2. 4. Request membership in the FB groups + start the Message Paris join (approvals take days). 5. Toytown post (Draft 1).

Open questions for Joshua