Architecture Evaluation Plan
Status: Active
Date: 2026-04-16
Evaluation Goal
Choose the lightest architecture that can reliably generate:
- high-quality one-pagers from Brainforge markdown assets
- polished multi-page PDFs when pagination and layout matter
- outputs that fit the current GitHub-backed Platform asset workflow
- layouts that stay recognizably inside Brainforge’s existing Figma print system
Evaluation Criteria
Every architecture should be scored against these Brainforge-specific criteria:
- Authoring fit - Works well with existing markdown and design-ready copy.
- Template reuse - Supports reusable archetypes like one-pager, service two-pager, case study, and leave-behind.
- Brand fidelity - Handles typography, spacing, color, imagery, and layout predictably.
- Figma fidelity - Can reproduce the current print-first layout language used in the
Sales AssetsFigma file. - Pagination quality - Handles headers, footers, page breaks, and multi-page flow.
- Platform fit - Fits Brainforge’s Node and Platform workflow with minimal operational sprawl.
- Publish fit - Can publish cleanly into the existing GitHub-backed asset library.
- Iteration speed - Fast for GTM, Sales Engineering, and design to refine.
- Complexity - Low operational and implementation burden relative to value.
Shortlist
Option A: HTML templates + Puppeteer
Shape: markdown/structured source -> HTML template -> Puppeteer PDF render
Why test it:
- Best baseline fit for the current repo and team skill set.
- Preserves HTML/CSS flexibility for branded layouts.
- Likely the fastest path to a working first archetype.
What to validate:
- one-pager visual quality
- image handling and fonts
- multi-page page breaks
- PDF generation speed and deployment shape
Initial view: Most likely default recommendation.
Option B: HTML templates + Gotenberg
Shape: markdown/structured source -> HTML template -> Gotenberg render service
Why test it:
- Good comparison against app-embedded rendering.
- Useful if Brainforge wants a clean document-conversion service boundary.
What to validate:
- service overhead versus direct Puppeteer
- local/dev/deploy ergonomics
- output parity with Option A
Initial view: Strong fallback if Brainforge prefers rendering as infrastructure.
Option C: HTML templates + page-aware print layer
Shape: markdown/structured source -> HTML template + Paged.js or Vivliostyle -> PDF render
Why test it:
- Best candidate when multi-page polish becomes a real requirement.
- Keeps the HTML-first baseline while improving paged-media behavior.
What to validate:
- control of page breaks, running headers, and footnotes
- complexity overhead versus baseline HTML rendering
- whether the added layout quality is noticeable on Brainforge asset types
Initial view: Likely a second-step enhancement, not the first implementation.
Option D: React PDF
Shape: structured source -> React document components -> PDF
Why test it:
- Useful as a contrast option if Brainforge wants document rendering fully inside a React component model.
What to validate:
- whether authoring friction increases
- whether design iteration is faster or slower than HTML/CSS
- how much reuse is possible across web preview and PDF output
Initial view: Worth contrasting, but not the leading fit.
Deprioritized For Now
Typst
Reason to defer:
- strong system, but introduces a separate authoring language too early
pdfme
Reason to defer:
- more attractive for structured forms than polished narrative marketing assets
Recommended Test Order
- Build one real Brainforge one-pager in Option A.
- Build the same asset in Option B only if service-bound rendering needs validation.
- Build one multi-page leave-behind in Option C if pagination quality is not good enough in Option A.
- Use Option D only as a contrast path if the team wants to pressure-test component-authored documents.
Suggested Test Inputs
knowledge/sales/marketing-assets/design-ready-copy/insurance-broker-lead-intake-2pager.mdknowledge/sales/agents/service-assets/insurance-workflow-automation-one-pager.mdknowledge/clients/lmnt/resources/lmnt_bi_tool_recommendation.mdknowledge/sales/marketing-assets/case-studies/Amazon_BI_Analytics_CaseStudy.md
These cover single-page, multi-page, comparison-heavy, and proof-oriented document shapes.
Selected Evaluation Fixtures
Use these as the first concrete fixtures for the spike:
Fixture 1: One-pager source
knowledge/sales/agents/service-assets/insurance-workflow-automation-one-pager.md
Why this is a good first fixture:
- already structured around a one-pager flow
- includes explicit top-section storytelling, stats, benefits, CTA, and footer
- pressure-tests whether the renderer can normalize narrative markdown plus design guidance
Fixture 2: Multi-page service asset
knowledge/sales/marketing-assets/design-ready-copy/insurance-broker-lead-intake-2pager.md
Why this is a good second fixture:
- already aligned to the current design-ready-copy workflow
- has clear section boundaries and copy-only content
- pressure-tests pagination, section rhythm, and designer handoff expectations
Fixture 3: Comparison input
knowledge/clients/lmnt/resources/lmnt_bi_tool_recommendation.md
Why this is a good third fixture:
- contains a real executive recommendation plus a comparison matrix
- pressure-tests whether the renderer can handle comparison-heavy layouts inside the existing print system
- maps naturally to the Figma comparison and pricing family rather than generic narrative pages
Fixture 4: Case study input
Preferred first pass:
knowledge/sales/marketing-assets/case-studies/Amazon_BI_Analytics_CaseStudy.md
Optional contrast fixture:
knowledge/sales/marketing-assets/case-studies/UrbanStems_BI_Cleanup_CaseStudy.md
Why these are useful:
Amazon_BI_Analytics_CaseStudy.mdincludes frontmatter, stable section boundaries, metrics, project metadata, and image placeholder patternsUrbanStems_BI_Cleanup_CaseStudy.mdis a strong BI-governance contrast if Brainforge wants a second case-study proof shape after the first implementation
Initial Section Contract
The first renderer should not try to support arbitrary markdown. It should normalize source docs into a small section contract that covers Brainforge’s current archetypes.
Core fields
documentType-one-pager,two-pager,comparison,case-study, orleave-behindtitlesubtitleaudiencectacontactBlock
Reusable sections
hero: Headline, subheadline, optional visual intent, optional key metrics.stats: Array of short metric cards with value, label, and optional note.valueProposition: Short narrative section describing the transformation.benefits: Bullet or card list of outcome-oriented benefits.process: Ordered steps or phases.deliverables: Included outputs or capabilities.audienceFit: Who the document is for.caseStudyHighlight: Short proof block, quote, or result summary.results: Metrics or outcome summary for case-study-style documents.comparison: Curated comparison matrix or recommendation table with typed rows and columns.footer: Brand and contact information.
Normalization rule for the first spike
For the first prototype, map source markdown into this contract with a thin adapter per archetype instead of trying to invent a universal parser. That keeps the spike small and lets Brainforge learn which section shapes are actually stable.
Template implication
The first branded HTML template should support:
- one strong hero band
- 2 to 4 metric cards
- alternating narrative and list sections
- an optional comparison table with constrained columns
- optional proof or case-study band
- consistent CTA and footer treatment
It should also be compared directly against the current Figma compositions rather than evaluated in isolation.
Figma-Derived Constraints
The template spike should assume the following constraints are first-class requirements, not polish items:
- Fixed portrait page geometry (
2550 x 3300in the current design system). - Consistent inner content frame (
x=100,width=2350). - Reusable header/footer system instead of per-page ad hoc layout.
- Deterministic multi-page boundaries for assets such as
FAQs (1/2)andEvent Data Modeling - Page 1/Page 2. - Reusable component families for:
- hero/header
- footer / CTA banner
- successes metrics
- service cards
- roadmap steps
- FAQ rows
- pricing / comparison tables
Implication: Option A should not be prototyped as a generic markdown-to-print stylesheet. It should be prototyped as structured content mapped into a small set of fixed-layout HTML components.
Benchmark Families
The first spike should judge fidelity against these Figma families, even when the source copy comes from repo markdown fixtures:
- General one-pager benchmark:
General Services - V1 - Mar 2025 - Offerings / deep-dive benchmark:
Service Offerings - V1 - Mar 2026 - Pricing benchmark:
Pricing Page - V1 - May 2025 - FAQ benchmark:
FAQs (1/2)andFAQs (2/2) - Multi-page roadmap benchmark:
Event Data Modeling - Page 1andEvent Data Modeling - Page 2
These are useful because they cover the main asset families Brainforge appears to actually ship, not just the markdown inputs that happen to exist in-repo.
First Spike Recommendation
The first implementation should be intentionally narrow:
- Build inside
apps/platform, not a separate service. - Support four fixtures:
insurance-workflow-automation-one-pager.mdinsurance-broker-lead-intake-2pager.mdlmnt_bi_tool_recommendation.mdAmazon_BI_Analytics_CaseStudy.md
- Use one handwritten adapter per fixture.
- Keep the comparison matrix and case-study metadata typed and curated rather than adding generic markdown parsing.
- Render fixed-layout HTML first, then export PDF through a server-side Chromium boundary.
- Review output directly against the mapped Figma families.
The implementation details for that spike live in implementation-spike-plan.md.
Expected Outcome
At the end of the evaluation, Brainforge should have:
- one recommended baseline architecture
- one clear escalation path for higher-end pagination needs
- a documented implementation path tied to existing repo surfaces
- confidence that the baseline can stretch across narrative, comparison, and proof-oriented asset families before the team invests in a larger renderer
Last updated: 2026-04-16