Add chapter outline data and recipe short titles
This commit is contained in:
@@ -56,6 +56,7 @@ const RE04 = {
|
||||
time: "~15 min",
|
||||
cost: "≈ $0.03",
|
||||
vertical: "Real Estate",
|
||||
shortTitle: "Market brief",
|
||||
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.",
|
||||
@@ -115,6 +116,7 @@ const RE05 = {
|
||||
time: "~12 min",
|
||||
cost: "≈ $0.02",
|
||||
vertical: "Real Estate",
|
||||
shortTitle: "Listing copy",
|
||||
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.",
|
||||
@@ -188,6 +190,7 @@ export const CHAPTER = {
|
||||
{ id: "RE-05", href: "#re-05", title: "Listing copy" },
|
||||
],
|
||||
stakes: {
|
||||
id: "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.",
|
||||
@@ -195,6 +198,7 @@ export const CHAPTER = {
|
||||
],
|
||||
},
|
||||
constraints: {
|
||||
id: "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.",
|
||||
@@ -202,12 +206,14 @@ export const CHAPTER = {
|
||||
],
|
||||
},
|
||||
practice: {
|
||||
id: "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: {
|
||||
id: "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.",
|
||||
@@ -224,3 +230,33 @@ export const CHAPTER = {
|
||||
"Local redaction fields: owner_name, phone, exact_address.",
|
||||
],
|
||||
};
|
||||
|
||||
/** Outline groups for the chapter map. Headings come from the essay objects. */
|
||||
export function buildOutline(chapter, recipes) {
|
||||
return [
|
||||
{
|
||||
label: "Essay",
|
||||
items: [chapter.stakes, chapter.constraints, chapter.practice, chapter.between].map((s) => ({
|
||||
id: s.id,
|
||||
label: s.heading,
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: "Workflows",
|
||||
items: recipes.map((r) => ({
|
||||
id: r.anchor,
|
||||
recipeId: r.id,
|
||||
label: r.id + " · " + r.shortTitle,
|
||||
time: r.time,
|
||||
shortTitle: r.shortTitle,
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: "End",
|
||||
items: [
|
||||
{ id: "further", label: "Further workflows" },
|
||||
{ id: "sources", label: "Sources" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user