Home / Ops / More in this area
Updated Jun 28, 2026 · Affirmology_PDFReportV2_BuildSpec_v1.md
Drafted 2026-06-27. Companion to Affirmology_PDFReportV2_Architecture_v1.md (the flow) and Affirmology_AhHaMoves_Registry_v1.md (the reading craft). This spec is what an implementer (Claude Code, in the repo, running through the live pipeline) follows to build v2. No em dashes anywhere. All reading and chart-interpretation content comes from the agent council, never improvised. "Subconscious Operating System" framing. Sol = Soledad Gabriela Ballard.
Affirmology_PDFReportV2.1_RevisionBrief_v1.md (read it). v2 was too brief and under-designed; v2.1 mandates deeper, explanatory, persuasive sections, the locked emerald-and-gold brand system, real logo and Oracle art, the quadrant Blueprint page, and no blank pages.The current generator returns one JSON object slotted into the template by string replacement. v2 keeps that mechanism and adds fields. Marketing and methodology fields are brand copy and may be largely static or lightly personalized. Reading and chart fields are council-sourced.
New or changed fields (names indicative):
- cover_title, cover_teaser_line
- invitation_paragraphs (relief frame, personalized lightly with name and one core signature)
- why_it_works_paragraphs (Subconscious Operating System, the bypass, predictive brain, the bridge; mostly brand copy)
- blueprint_glance: structured chart facts for the visual page (HD type, authority, profile, defined centers, channels, incarnation cross; astrology luminaries, angles, key asteroids; Gene Keys four prime gifts; Vedic Moon Nakshatra and current Dasha lord; numerology core numbers) plus convergence_callout (the cross-system agreement line)
- reading_chapters: array, each with theme_title, recognition (pattern-first), shadow_named, chart_sources (the placements as proof), gift_or_reframe, optional body_anchor / family_anchor / timing_note, and which registry moves were used
- soul_song_bridge (replaces and reframes the old build notes)
- path_forward: the three steps plus teaser_cards (title, one veiled line each)
- closing_anchor_line
Keep the existing rules: chart-only facts, omit rather than fabricate, no em dashes, no corporate-therapy vocab, lines end on a noun or verb, Josh Parini prose register.
The reading chapters and the chart interpretations must be produced by the council pipeline, the same online system that makes the reading audio, not by the PDF generator improvising. Approach: 1. Council salience pass scores the chart (Loud x Activated x Juicy x Wanted, enduring plus emerging only, no progressions) and returns a ranked menu of themes with a one-line why each. 2. Council generates each chapter for the top themes, grounded in the corpus, using the registry moves (pattern-first, name the shadow, then the gift; contradiction-naming, give the felt sense a noun, family and body and timing anchors where the chart supplies them). 3. A second council agent reviews each chapter for recognition quality (does it earn "how did it know," is every claim chart-true, is the shadow named with tenderness, no padding on quiet domains) and can send it back for a rewrite. This is the cross-check that produces gold. 4. The PDF generator consumes the approved reading the way it consumes the finished script today (passed in, not invented).
Make this repeatable and deterministic enough to run unattended for the cohort and, later, for every demo user.
Build our own branded SVG components driven by the chart JSON, not screenshots from third-party tools. WeasyPrint renders inline SVG and PNG, so this is achievable in the existing engine. - Human Design bodygraph: the geometry is fixed (nine centers, thirty six channels). Build one SVG template, then color the defined centers and channels per person from the chart's defined set, in the brand palette. Undefined stays outline only. - Astrology wheel: an SVG ring of twelve sign segments with house cusps and planet glyphs placed by ecliptic longitude. All computable from the chart longitudes the engine already has. Include the key asteroids and angles we read (Chiron, Lilith, the nodes, MC and IC). - Gene Keys: a simple custom motif for the four Prime Gifts (Life's Work, Evolution, Radiance, Purpose) with gate.line labels. Optionally show the Activation Sequence as a small path. - Vedic: a compact strip with the Moon Nakshatra (name and symbol) and the current Mahadasha lord. Optionally a South Indian square chart (a fixed grid, easy to render). - Numerology: a clean stack or grid of the core numbers (Life Path, Expression, Soul Urge, Birthday). Design them as reusable components in our brand palette and glyph set so they render correctly and consistently for any chart. For the content-first phase, use labeled placeholder boxes in these slots, then drop the SVG components in during the visual phase.
The audio is the "Origin Soul Song," so the written companion can echo "Origin." Options: - "Your Origin Report" (clean, ties to the Soul Song, reads as a keepsake) - "The Origin Blueprint" (with "for {Name}" beneath) - "Your Cosmic Blueprint" (plainest, most descriptive) - "Field Notes on You" (warmer, more literary) - "The Recognition Report" (leans on our recognition thesis; note "The Recognition" is also a studio spec name)
CHOSEN (Jeff 2026-06-27): "Your Origin Report," with the brandmark above and "for {Name}" below.
Teasing subtext options for the cover (one line, motivates them to read on): - "Five systems, built in different centuries, agree on one thing about you." (CHOSEN cover line, Jeff 2026-06-27) - "This is the map underneath the voice you just heard." - "You were never broken. You were running on instructions that were never yours. Here are yours." - "Most of this you already know. You have just never seen it written down."
Every generated PDF passes these gates before it is allowed to deliver. Any failure triggers an automatic regenerate of the offending part (up to a retry cap), then a human-review hold if it still fails. Nothing broken ships.
1. Schema gate: all required fields present, no empty reading chapters, no empty sections.
2. Chart-fact gate: every placement, gate, line, sign, house, and number cited appears in the chart JSON. No fabricated data.
3. Style gate: zero em dashes; banned corporate-therapy vocabulary absent; lines do not trail on filler.
4. Recognition gate (council): the second-agent review confirms each chapter earns recognition, names the shadow with care, and does not pad quiet domains.
5. Render gate: PDF renders, no page overflow that orphans a heading, no broken or missing sections, expected images present (or intended placeholders present), page count within target.
6. Delivery gate: only a PDF that passes 1 through 5 is attached to the next-morning email and text and linked on the landing page.
This is the PDF analog of the existing scripts/audio_qc.py that already gates audio. Mirror that architecture.
Phase 1 (content and prose): extend the schema, add the marketing and reading sections to the template, wire the council reading and the salience pass, move the prose fill to Opus, stand up the QC gates. Render test PDFs for Jeff, Colin, Josh through the live pipeline. Reading chapters real, chart page as placeholders. Phase 2 (visual): build the branded SVG chart components, drop in the hero and closing images (from Jeff) and the locked teaser cards, add a brand typeface if desired. Re-render and QC.
affirmology-studio/affirmology-agent/src/affirmology/agents/sacred_audio_report.pyaffirmology-studio/affirmology-agent/templates/sacred_audio_report.htmlaffirmology-studio/ (same system that generates the reading audio)scripts/pdf_qc.py analog to scripts/audio_qc.pyaffirmology-studio/api/pipeline.py, affirmology-studio/api/jobs.pyaffirmology-agent/tests/; run pytest after chart-touching changes.Note: Colin needs birth data in the system if it is not already present; Jeff, Josh Parini, and Sol already have chart outputs under affirmology-agent/out/.