From 0fba3c8175220a9cda02c34864338c09ad5e6af0 Mon Sep 17 00:00:00 2001 From: pat Date: Mon, 31 Aug 2026 07:33:17 +0000 Subject: [PATCH] feat(reader): add sample Real Estate chapter and nested recipes --- marketing-site/data/sample-chapter.js | 226 ++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 marketing-site/data/sample-chapter.js diff --git a/marketing-site/data/sample-chapter.js b/marketing-site/data/sample-chapter.js new file mode 100644 index 0000000..1833e1d --- /dev/null +++ b/marketing-site/data/sample-chapter.js @@ -0,0 +1,226 @@ +/** + * Sample chapter + nested recipes for the reading demo. + * Imported by pages under /read. Not a CMS. + */ + +export const LIBRARY = [ + { + num: "01", + name: "Real Estate", + slug: "real-estate", + href: "/read/real-estate", + desc: "Market briefs and listings, without leaking client data", + status: "ready", + }, + { + num: "02", + name: "Financial Advisors", + slug: "financial-advisors", + desc: "Portfolio summaries that stay compliant and reviewed", + status: "coming", + }, + { + num: "03", + name: "Fractional C-Suite", + slug: "fractional-c-suite", + desc: "Board updates and plans with real escalation paths", + status: "coming", + }, + { + num: "04", + name: "Higher Ed", + slug: "higher-ed", + desc: "Course and research workflows with academic integrity", + status: "coming", + }, + { + num: "05", + name: "Communities", + slug: "communities", + desc: "Moderation and programming that respects members", + status: "coming", + }, + { + num: "06", + name: "Technology", + slug: "technology", + desc: "Agent patterns, evals, and the responsible defaults", + status: "coming", + }, +]; + +const RE04 = { + id: "RE-04", + anchor: "re-04", + version: "1.2", + time: "~15 min", + cost: "≈ $0.03", + vertical: "Real Estate", + title: "Draft a property-market brief with an AI agent without leaking client data.", + problem: + "You need a neighborhood market brief for a client meeting this week. The listing sheet and client notes cannot go into a public model.", + problemJob: + "Job: turn messy local data into a credible one-pager in minutes, safely.", + actors: [ + "Listing agent runs it.", + "Client receives the brief.", + "Model may draft and classify. A human must review before send.", + ], + setup: [ + "Tools: local redaction script (brief CLI), Claude or your usual model.", + "Sample files: sample_listings.csv, market-1pager template.", + "Cost: about $0.03 on the sample run (2,140 tokens).", + ], + safeguards: [ + "Redaction runs on your machine. Raw client data never reaches the model.", + "A human checklist is required before the brief is shared. The checklist is part of the recipe.", + "Stop if identifiers remain after the strip report. Do not prompt until owner_name, phone, and exact_address are gone.", + ], + method: [ + { + text: "Strip identifiers from the source data locally (a provided script does this).", + }, + { + text: "Prompt the agent with the anonymized sample and a fixed brief template.", + term: "re-04", + }, + { + text: "Review the draft against the checklist before anything leaves your machine.", + }, + ], + evidence: [ + "A one-pager brief on Maple Heights (sample), ready for a meeting once a human signs the checklist.", + "Sample metrics from that run: median $420/sqft, 22 days on market, 1.8 months of inventory.", + ], + tryit: { + minutes: 15, + sample: "Use the included sample_listings.csv (no live client file).", + produce: "Produce the market-1pager brief and walk the human checklist.", + done: "Mark complete when you have a brief you would send after review. Completing this is the activation demo.", + href: "/samples/sample_listings.csv", + hrefLabel: "sample_listings.csv", + chip: "cost to try ≈ $0.03", + }, + shareBlurb: + "Ran RE-04 on sample comps — Maple Heights median $420/sqft, 22 DOM.", + author: "Founding library · sample", + sources: "Sample MLS packet (non-confidential); market-1pager template shipped with the recipe.", + lastUpdated: "31 Aug 2026", +}; + +const RE05 = { + id: "RE-05", + anchor: "re-05", + version: "1.0", + time: "~12 min", + cost: "≈ $0.02", + vertical: "Real Estate", + title: "Rewrite a listing description from public comps without pasting the client address book.", + problem: + "You need listing copy that sounds like this house, not every house on the street. The CRM holds owner notes and the showing list. Those do not go into a public model.", + problemJob: + "Job: draft 180-word listing copy from public facts only, then edit it yourself.", + actors: [ + "Listing agent runs it.", + "The public listing receives the copy.", + "Model drafts. A human edits, files, and posts to MLS.", + ], + setup: [ + "Tools: listing-copy CLI, listing-voice template, Claude or your usual model.", + "Sample files: sample_comps.json (public comps only).", + "Cost: about $0.02 on the sample run (1,280 tokens).", + ], + safeguards: [ + "Prompt only with public listing facts. No CRM export, no showing list, no owner notes.", + "A human edits the draft before it hits MLS. Do not auto-post.", + "Stop if a private note, phone, or exact owner name appears in the draft.", + ], + method: [ + { + text: "Export public comps for the block. Leave the CRM closed.", + }, + { + text: "Run listing-copy against the sample comps and the house-voice template.", + term: "re-05", + }, + { + text: "Edit the draft. Cut anything that could only have come from a private note.", + }, + ], + evidence: [ + "A 184-word listing draft, public facts only, reading grade 8.", + "Comps on the block closed between $398 and $441/sqft in 60 days. The draft prices to that range without naming a client.", + ], + tryit: { + minutes: 12, + sample: "Use the included sample_comps.json (public comps, no address book).", + produce: "Produce a ~180-word listing description and a human edit pass.", + done: "Mark complete when the draft has no private fields. Completing this is the activation demo.", + href: "/samples/sample_comps.json", + hrefLabel: "sample_comps.json", + chip: "cost to try ≈ $0.02", + }, + shareBlurb: + "Ran RE-05 on sample comps — 184-word listing draft, public facts only.", + author: "Founding library · sample", + sources: "Public comps sample packet; listing-voice template shipped with the recipe.", + lastUpdated: "31 Aug 2026", +}; + +export const RECIPES = [RE04, RE05]; + +export const RECIPES_BY_ID = { + "RE-04": RE04, + "RE-05": RE05, +}; + +export const CHAPTER = { + slug: "real-estate", + vertical: "Real Estate", + edition: "2026", + authors: "Founding library · sample", + title: "Work the listing without leaking the client", + promise: + "In this chapter you run two jobs a realtor actually has this week, on sample data, without putting a client file in a public model.", + lastUpdated: "31 Aug 2026", + skip: [ + { id: "RE-04", href: "#re-04", title: "Market brief" }, + { id: "RE-05", href: "#re-05", title: "Listing copy" }, + ], + stakes: { + heading: "The stakes", + paragraphs: [ + "A listing that stalls because the market brief is late is a lost weekend. A listing that leaks because you pasted the client sheet into a public model is a lost license. Real estate work runs on both clocks: the showing at 4pm, and the file that must never leave the office.", + "The failure is not that AI sits unused. It is a one-pager that is late, generic, or built from a client name that should not have been in the prompt. Buyers notice fluff. Brokers notice a privacy incident. Neither is recoverable in the same week.", + ], + }, + constraints: { + heading: "Constraints you cannot ignore", + paragraphs: [ + "You already work in MLS exports, a CRM, and a phone that rings during the write-up. Done is a brief the client can read in a meeting, with numbers you can stand behind, reviewed by a human. Public models are useful for draft and classify. They are not a filing cabinet.", + "Owner names, phones, exact addresses, and showing lists stay on your machine. Comps, medians, and days on market can travel, once identifiers are stripped. If a field could pick one household out of the block, it does not go in the prompt.", + ], + }, + practice: { + heading: "How we work here", + paragraphs: [ + "Redact locally. Prompt with a sample or a stripped file. Review against a checklist. Share the artifact, not the workflow text. The first job this week is the neighborhood market brief. Run it on sample comps before you touch a live listing.", + ], + }, + between: { + heading: "The brief is half the meeting", + paragraphs: [ + "The brief gets you into the room with numbers. The other half is the listing copy: public comps, a description that does not sound like every other house on the street, and an address book that never belongs in the prompt. Same rule. Different job.", + ], + }, + further: [ + { id: "RE-04", href: "#re-04", title: "Draft a property-market brief without leaking client data" }, + { id: "RE-05", href: "#re-05", title: "Rewrite a listing description from public comps" }, + { id: "RE-06", title: "Offer-response notes from public remarks (later)", coming: true }, + ], + sources: [ + "Sample MLS packet shipped with this chapter (non-confidential).", + "market-1pager and listing-voice templates in the recipe kit.", + "Local redaction fields: owner_name, phone, exact_address.", + ], +};