Skip to content

View Reference

Under Construction

Pardon our dust as we build out our docs. Check back soon for the full walkthrough on your first FinFam View!

Views are FinFam’s way to share your financial knowledge at scale. They let you build powerful, interactive web applications using nothing but a spreadsheet—think “spreadsheets as apps.”

Views combine the power of an informational blog post with an interactive financial calculator, offering users direct answers to real financial questions. In line with the emphasis on financial accuracy and trust, Views are built in spreadsheet format, canonically XLSX. This means you can build views in:

  • Google Sheets
  • Microsoft Excel
  • Apple Numbers
  • LibreOffice Calc

And more.

Why Views?

Open Source by Default: Published Views can be open-sourced, allowing financial models to be reviewable, forkable, and improvable by the community. Users can check the math, eliminating the black box feeling often associated with financial planning.

Subscribe and Upgrade: When users save a View to their planning space, they stay subscribed to the original. When you update your View, subscribers get notified and can upgrade with one click while preserving their personal values.

Scale Your Expertise: This workflow scales expert knowledge using interaction models proven by App Stores, GitHub, and Wikipedia.

What follows is a reference for the View format. For a step-by-step guide on how to create your first View, see Creating your first FinFam View.

View Structure

The View format supports sections to give your Views structure.

Other features include:

  • Result fields
  • Output fields
  • Expert fields
  • Action fields (CTAs)
  • Defaults
    • Static defaults
    • Calculated defaults
    • Space-based defaults

Field Types

Input Types

These types create user-editable form fields:

TypeDescriptionPython Type
amountCurrency or numeric inputfloat
percentPercentage input (stored as decimal, e.g., 0.05 for 5%)float
countInteger inputint
textShort text inputstr
textareaLonger text inputstr
select <list_name>Dropdown selection from a named list in the choices sheetstr
yesnoYes/No checkboxbool

Display Types

These types are non-interactive and used for presentation:

TypeDescription
contentRich Markdown content for explanations, tips, and guidance
imageDisplay an image embedded in the spreadsheet
action <subtype>Call-to-action button rendered in the results section

Structural Types

TypeDescription
begin_groupStart a collapsible section
end_groupEnd a collapsible section

Type Modifiers

Modifiers follow the type name, separated by spaces. Multiple modifiers can be combined.

ModifierEffect
outputMarks a field as an output displayed in the results section
calculateField has a formula-driven value and is not user-editable
hideField is hidden from the user but still evaluated
expertField is only visible when the user enables expert mode

Example: amount output makes an amount field that displays as a result. percent expert makes a percentage input only visible in expert mode.

Action Fields

Action fields turn your View’s recommendation into a clickable call-to-action (CTA). When the math says “buy,” the View surfaces a link to do it.

Syntax

The type column uses action <subtype> syntax, similar to select <list_name>:

action link
action contact
action sview

Standard modifiers can follow the subtype: action link expert.

Subtypes

SubtypeTargetRendering
linkExternal URLButton opening a new tab with an external-link icon
contactURL (Calendly, mailto:, etc.)Button with a calendar icon
sviewInternal View path (e.g., /heyfinfam/views/rent-calc)Button with internal navigation

Column Mapping

ColumnMeaning
typeaction link, action contact, or action sview
nameUnique identifier
defaultTarget URL or path. Supports formulas (empty string = inactive).
labelButton text shown to the user
parametersOptional styling: style=primary, style=outline, style=subtle, icon=\uD83C\uDFE0
hintTooltip text

First-Non-Empty-Wins Rule

The frontend scans all action fields in document order. The first one whose computed value is non-empty becomes the page’s CTA. All others are ignored.

This means you express priority through row ordering in the calc sheet:

| type | name | default | label |
|----------------|----------------|----------------------------------------------------|-----------------------------------|
| action link | buy_action | =IF(rate > 0.05, "https://preapproval.com", "") | Get Pre-Approved for a Mortgage |
| action link | rent_action | =IF(rate < -0.05, "https://apartments.com", "") | Search Rental Listings |
| action contact | consult | =IF(ABS(rate)<=0.05, "https://calendly.com/a", "")| Talk to a Financial Advisor |
  • If rate is 0.08, buy_action has a URL, so the CTA is “Get Pre-Approved”.
  • If rate is -0.08, buy_action is empty, rent_action has a URL, so the CTA is “Search Rentals”.
  • If rate is 0.02, both links are empty, consult has a URL, so the CTA is “Talk to Advisor”.
  • If all are empty, no CTA is shown.

The conditionality lives entirely in the formula engine. Any Excel logic works: IF, IFS, AND, OR, nested conditions, references to any field.

Where the CTA Renders

The CTA appears in the results section, below the output fields. If no action evaluates to non-empty, nothing is shown.

Action fields placed in non-results sections are still scanned for the CTA. The row’s position in the calc sheet determines its priority, not which group it belongs to.

Styling

Use the parameters column to control CTA appearance:

ParameterValuesDefault
styleprimary, outline, subtleprimary
iconAny emojiSubtype-dependent

Example: style=outline icon=\uD83C\uDFE0

Check back later for full documentation on additional features.