diff --git a/ks-research/story-images/src/assets-gen/cover-3d.png b/ks-research/story-images/src/assets-gen/cover-3d.png new file mode 100644 index 0000000..81670d6 Binary files /dev/null and b/ks-research/story-images/src/assets-gen/cover-3d.png differ diff --git a/ks-research/story-images/src/assets-gen/cover-flat.png b/ks-research/story-images/src/assets-gen/cover-flat.png new file mode 100644 index 0000000..9fb86fb Binary files /dev/null and b/ks-research/story-images/src/assets-gen/cover-flat.png differ diff --git a/ks-research/story-images/src/assets-gen/re01-top.png b/ks-research/story-images/src/assets-gen/re01-top.png new file mode 100644 index 0000000..43fcb7d Binary files /dev/null and b/ks-research/story-images/src/assets-gen/re01-top.png differ diff --git a/ks-research/story-images/src/assets-gen/re01-tryit.png b/ks-research/story-images/src/assets-gen/re01-tryit.png new file mode 100644 index 0000000..caa3521 Binary files /dev/null and b/ks-research/story-images/src/assets-gen/re01-tryit.png differ diff --git a/ks-research/story-images/src/assets-gen/re01.json b/ks-research/story-images/src/assets-gen/re01.json new file mode 100644 index 0000000..3ab39e8 --- /dev/null +++ b/ks-research/story-images/src/assets-gen/re01.json @@ -0,0 +1,15 @@ +{ + "url": "https://aibook.fun/read/recipe/RE-01", + "top": { + "x": 0, + "y": 223.203125, + "width": 616, + "height": 386.96875 + }, + "tryit": { + "x": 0, + "y": 2002.140625, + "width": 616, + "height": 287.125 + } +} \ No newline at end of file diff --git a/ks-research/story-images/src/assets-gen/screen-laptop.png b/ks-research/story-images/src/assets-gen/screen-laptop.png index 4df672f..659a82b 100644 Binary files a/ks-research/story-images/src/assets-gen/screen-laptop.png and b/ks-research/story-images/src/assets-gen/screen-laptop.png differ diff --git a/ks-research/story-images/src/assets-gen/screen-phone.png b/ks-research/story-images/src/assets-gen/screen-phone.png index 8033b0f..7c97044 100644 Binary files a/ks-research/story-images/src/assets-gen/screen-phone.png and b/ks-research/story-images/src/assets-gen/screen-phone.png differ diff --git a/ks-research/story-images/src/assets-gen/screens.json b/ks-research/story-images/src/assets-gen/screens.json index 1db1163..a0d9402 100644 --- a/ks-research/story-images/src/assets-gen/screens.json +++ b/ks-research/story-images/src/assets-gen/screens.json @@ -4,14 +4,14 @@ "vh": 700, "essay": [ 328, - 95.21875, - 201.921875, + 95.40625, + 198.921875, 29 ], "workflow": [ 357, - 364.09375, - 200.046875, + 364.28125, + 200.109375, 37.625 ] }, @@ -20,14 +20,14 @@ "vh": 844, "tryit": [ 61, - 114.8125, + 115.28125, 48.3125, 15 ], "updated": [ 61, - 769.78125, - 170.75, + 794.046875, + 170.765625, 19 ] } diff --git a/ks-research/story-images/src/assets/README.md b/ks-research/story-images/src/assets/README.md index 5134131..f3f54fe 100644 --- a/ks-research/story-images/src/assets/README.md +++ b/ks-research/story-images/src/assets/README.md @@ -5,9 +5,10 @@ Images whose slots are filled lose the `-PLACEHOLDER` suffix. | File name (any of .jpg/.png/.webp) | Used in | Minimum size | |---|---|---| -| cover | 01b welcome (final front cover) | 1600 px tall, web version of the final cover | | retreat-venue | 07b Retreat | 1360 × 765, landscape | | site-orlando, site-north-denver, site-villa-park | 08c Academy sites | 800 × 600 each, landscape | | reader-1, reader-2, reader-3 | 13b early reader quotes | 400 × 400, square | -| author-1, author-2 (add more in build.py) | 14b authors | 800 × 800, square | +| author-1, author-2, author-3 | 14b authors (Real Estate & Finance, Fractional C-Suite, Technology & RAAI) | 800 × 800, square | | team-thy, team-lfg, team-ceo, team-gtm, team-osinachi-patrick, team-academy-lead | 14b team | 800 × 800, square | + +The book cover is not a photo slot: it is rendered from the landing page's `Book3D.jsx` by `render_cover.py` into `src/assets-gen/`. diff --git a/ks-research/story-images/src/build.py b/ks-research/story-images/src/build.py index 14808f2..8844827 100644 --- a/ks-research/story-images/src/build.py +++ b/ks-research/story-images/src/build.py @@ -45,6 +45,8 @@ def slot(src, label, size, cls='', style=''): return (f'
{ICONS["camera"]}' f'{label}{size}
') +COVER_3D = '../assets-gen/cover-3d.png' # rendered from the landing page (render_cover.py) +COVER_FLAT = '../assets-gen/cover-flat.png' pages = [] # dicts: name, body, css, sel, w, h(optional), dpr def page(name, body, css='', w=680, h=None, extra_css='', px_h=None): pages.append(dict(name=name, body=body, css=css, w=w, h=h, extra_css=extra_css, px_h=px_h)) @@ -74,7 +76,7 @@ add_header('01') page('01b-welcome-cover-icons', f'''
-
{slot("cover", "Book cover goes here", "Final cover · owner supplies", "cover")}
+
Cover mockup

Welcome

{TITLE}

@@ -88,11 +90,10 @@ page('01b-welcome-cover-icons', f'''
{icon("updated", "ico big")}

Library updated often

''', css=''' -.wel{display:flex;gap:34px;align-items:center;padding:6px 6px 26px} -.bookwrap{flex:none;padding:6px 14px 14px 4px} -.book{width:184px;height:258px;border-radius:3px 8px 8px 3px;position:relative;box-shadow:10px 12px 0 -3px #efe9db,10px 12px 0 -2px #d6cdba,0 26px 40px -18px rgba(18,63,52,.5)} -.book .slot{position:absolute;inset:0;border-radius:3px 8px 8px 3px} -.book .slot .ph b{font-size:15px} +.wel{display:flex;gap:30px;align-items:center;padding:0 6px 22px} +.bookwrap{flex:none;margin:0;width:196px;text-align:center} +.bookwrap img{width:196px;display:block} +.bookwrap figcaption{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:-14px} .wtxt h2{font-family:var(--display);font-weight:900;font-size:50px;letter-spacing:-.03em;line-height:1;color:var(--pine-deep)} .wtxt .t{font-family:var(--display);font-weight:600;font-size:22px;letter-spacing:-.02em;line-height:1.2;margin:14px 0 12px} .wtxt .s{font-size:16px;line-height:1.5;color:var(--muted);max-width:25rem} @@ -183,67 +184,40 @@ page('04b-workflow-recipe-diagram', f'''
.co h4{font-weight:700;font-size:16px;line-height:1.25} .co p{font-size:14px;line-height:1.42;color:var(--muted);margin-top:2px} ''') -CHAPTERS = ['Real Estate', 'Financial Advisors', 'Fractional C-Suite', 'Higher Education', 'Communities', 'Technology'] -page('04c-chapter-tiles-DRAFT', '

Chapters

' + ''.join( - f'
{i:02d}

{c}

{icon("book")}
' for i, c in enumerate(CHAPTERS, 1)) + '
', css=''' +# Published on the landing page: marketing-site/components/Contents.jsx ("The founding library") +CHAPTERS = [('Real Estate', 'Market briefs & listings, without leaking client data'), + ('Financial Advisors', 'Portfolio summaries that stay compliant & reviewed'), + ('Fractional C-Suite', 'Board updates & plans with real escalation paths'), + ('Higher Education', 'Course & research workflows with academic integrity'), + ('Communities', 'Moderation & programming that respects members'), + ('Technology', 'Agent patterns, evals & the responsible defaults')] +page('04c-chapter-tiles', '

The founding library

' + ''.join( + f'
{i:02d}

{c}

{d}

' for i, (c, d) in enumerate(CHAPTERS, 1)) + '
', css=''' .tg{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px} -.t{padding:18px 18px 20px;position:relative;min-height:118px;display:flex;flex-direction:column} -.t .n{font-family:var(--mono);font-size:13px;color:var(--muted);letter-spacing:.08em} -.t h3{font-family:var(--display);font-weight:600;font-size:22px;letter-spacing:-.02em;line-height:1.12;margin-top:auto;padding-top:22px} -.t .ico{position:absolute;right:16px;top:16px;width:22px;height:22px;opacity:.8} +.t{padding:16px 16px 18px;display:flex;flex-direction:column} +.t .n{font-family:var(--mono);font-size:13px;color:var(--pine);letter-spacing:.08em} +.t h3{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.02em;line-height:1.12;margin:10px 0 6px} +.t p{font-size:14px;line-height:1.4;color:var(--muted)} ''') # ---------------------------------------------------------------- 05 try one workflow add_header('05') -CHECK = ['Use the included sample_listings.csv (no live client file).', - 'Produce the market-1pager brief.', - 'Walk the human checklist.', - 'Mark complete when you have a brief you would send after review.'] -page('05b-sample-workflow-try-it', f'''
+page('05b-sample-workflow-try-it', '''
-
aibook.fun
-
-
-
RE-01 · v1.2 · ~15 min · ≈ $0.03Real Estate
-
-

Draft a property-market brief with an AI agent without leaking client data.

-

Safeguards

-
{ICONS["shield"]}Redaction runs on your machine. Raw client data never reaches the model.
-
{ICONS["shield"]}A human checklist is required before the brief is shared.
-
-

Try-it

-

About 15 minutes

-
    {''.join(f'
  • {c}
  • ' for c in CHECK)}
-
◷ cost to try ≈ $0.03Mark complete
-
-
-
-
+
aibook.fun/read/recipe/RE-01
+ +
Problem · Actors · Setup · Safeguards · Method · Evidence
+
-

Sample workflow RE-01, shown in the AiBook.fun reader.

-
''', extra_css='', css=''' -body{background:#fff} -.win{background:#fff;border:1px solid var(--line-2);border-radius:14px;overflow:hidden;box-shadow:var(--sh-lg)} +

Screenshots of sample workflow RE-01 at aibook.fun/read/recipe/RE-01

+
''', css=''' +.win{background:var(--paper);border:1px solid var(--line-2);border-radius:14px;overflow:hidden;box-shadow:var(--sh-lg)} .bar{display:flex;align-items:center;gap:7px;padding:10px 14px;background:#f1eee7;border-bottom:1px solid var(--line)} .bar i{width:11px;height:11px;border-radius:999px;background:#d8d1c4;display:block} .bar .url{margin-left:14px;flex:1;background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 14px;font-family:var(--mono);font-size:13px;color:var(--muted)} -.scr{padding:20px;background:var(--paper)} -.recipe{box-shadow:var(--sh-md);border-radius:16px} -.recipe-top{padding:14px 18px} -.recipe-id{font-size:13px} -.recipe-vert{font-size:12px} -.recipe-body{padding:22px 20px 22px} -.recipe-title{font-size:23px;margin-bottom:16px} -.xrow{display:grid;grid-template-columns:96px 1fr;gap:14px;padding:14px 0;border-top:1px dashed var(--line-2)} -.xrow .k{font-family:var(--mono);font-size:12.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--pine);padding-top:3px;font-weight:500} -.guard{font-size:15px;padding:5px 0;color:var(--muted);gap:9px;line-height:1.45} -.guard svg{width:18px;height:18px;color:var(--pine);flex:none;margin-top:1px} -.mins{font-weight:700;font-size:16px;margin-bottom:8px} -.cl li{display:flex;gap:11px;align-items:flex-start;font-size:15px;line-height:1.45;padding:5px 0} -.cl .box{width:18px;height:18px;border:1.6px solid var(--pine);border-radius:5px;flex:none;margin-top:2px;background:#fff} -.acts{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap} -.chip{font-size:13px} -.btn{font-size:15px;padding:10px 18px} +.win img{display:block;width:614px} +.gap{padding:10px 0;text-align:center;background:linear-gradient(transparent calc(50% - 1px),var(--line-2) calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px))} +.gap span{font-family:var(--mono);font-size:12.5px;color:var(--muted);background:var(--paper);padding:2px 10px;letter-spacing:.02em} .foot-note{text-align:center} ''') page('05c-button-try-the-workflow', f'''
@@ -265,7 +239,7 @@ def three_ways(paperback=True): rows = ''.join(f'
  • {p}{t}' + (f'{s}' if s else '') + '
  • ' for p, t, s, f in cloud_items) if paperback: - rows += f'
  • {ICONS["book"]}Signed paperback and eBookPrice on the reward
  • ' + rows += f'
  • Signed paperback and eBookPrice on the reward
  • ' cloud_deliv = ('
  • Library access: within about 14 days of a successful campaign
  • eBook: January 2027
  • ' + ('
  • Signed paperback: February 2027
  • ' if paperback else '')) inc = f'
    • {icon("seat")}Your seat
    • {icon("book")}The eBook
    • {icon("library")}12 months of AiBook.fun
    ' @@ -287,7 +261,7 @@ def three_ways(paperback=True):

    Price on the reward

    -

    Cloud

    Do it yourself, online

    +

    Cloud

    Do it yourself, online

    Choose one

      {rows}

    When

      {cloud_deliv}
    @@ -312,7 +286,9 @@ TW_CSS = ''' .prices li{display:grid;grid-template-columns:58px 1fr;gap:8px;align-items:baseline;padding:7px 8px;border-radius:10px;font-size:14px;line-height:1.35} .prices li+li{margin-top:4px} .prices b{font-family:var(--display);font-weight:900;font-size:24px;letter-spacing:-.03em;color:var(--ink)} -.prices b.np{align-self:start;color:var(--muted);width:22px;height:22px;margin:1px 0 0 4px} +.prices b.np{align-self:start;width:30px;margin:0 0 0 6px}.prices b.np img{width:30px;display:block} +.ch{display:flex;align-items:flex-start;justify-content:space-between;gap:10px} +.ch img{width:46px;border-radius:2px 4px 4px 2px;box-shadow:0 6px 12px -6px rgba(18,63,52,.5);margin:4px 0 8px} .prices small{display:block;font-size:13px;color:var(--muted)} .prices li.feat{background:var(--pine);color:#eaf1ec} .prices li.feat b{color:#fff} @@ -405,7 +381,7 @@ page('09b-aibook-fun-device-mockup', f'''
    Last updated
    -

    Mockup of the AiBook.fun reader, showing the sample Real Estate chapter.

    +

    Screenshots of the AiBook.fun reader (sample Real Estate chapter) in device frames.

    \ No newline at end of file diff --git a/ks-research/story-images/src/pages/04c-chapter-tiles.html b/ks-research/story-images/src/pages/04c-chapter-tiles.html new file mode 100644 index 0000000..3d58f68 --- /dev/null +++ b/ks-research/story-images/src/pages/04c-chapter-tiles.html @@ -0,0 +1,30 @@ + +

    The founding library

    01

    Real Estate

    Market briefs & listings, without leaking client data

    02

    Financial Advisors

    Portfolio summaries that stay compliant & reviewed

    03

    Fractional C-Suite

    Board updates & plans with real escalation paths

    04

    Higher Education

    Course & research workflows with academic integrity

    05

    Communities

    Moderation & programming that respects members

    06

    Technology

    Agent patterns, evals & the responsible defaults

    + \ No newline at end of file diff --git a/ks-research/story-images/src/pages/05b-sample-workflow-try-it.html b/ks-research/story-images/src/pages/05b-sample-workflow-try-it.html index 2e2866a..1b531aa 100644 --- a/ks-research/story-images/src/pages/05b-sample-workflow-try-it.html +++ b/ks-research/story-images/src/pages/05b-sample-workflow-try-it.html @@ -1,50 +1,21 @@ -
    -
    aibook.fun
    -
    -
    -
    RE-01 · v1.2 · ~15 min · ≈ $0.03Real Estate
    -
    -

    Draft a property-market brief with an AI agent without leaking client data.

    -

    Safeguards

    -
    Redaction runs on your machine. Raw client data never reaches the model.
    -
    A human checklist is required before the brief is shared.
    -
    -

    Try-it

    -

    About 15 minutes

    -
    • Use the included sample_listings.csv (no live client file).
    • Produce the market-1pager brief.
    • Walk the human checklist.
    • Mark complete when you have a brief you would send after review.
    -
    ◷ cost to try ≈ $0.03Mark complete
    -
    -
    -
    -
    +
    aibook.fun/read/recipe/RE-01
    + +
    Problem · Actors · Setup · Safeguards · Method · Evidence
    +
    -

    Sample workflow RE-01, shown in the AiBook.fun reader.

    +

    Screenshots of sample workflow RE-01 at aibook.fun/read/recipe/RE-01