Under Construction
Pardon our dust as we build out our docs. Check back soon for the full walkthrough on your first FinFam View!
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:
And more.
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.
The View format supports sections to give your Views structure.
Other features include:
These types create user-editable form fields:
| Type | Description | Python Type |
|---|---|---|
amount | Currency or numeric input | float |
percent | Percentage input (stored as decimal, e.g., 0.05 for 5%) | float |
count | Integer input | int |
text | Short text input | str |
textarea | Longer text input | str |
select <list_name> | Dropdown selection from a named list in the choices sheet | str |
yesno | Yes/No checkbox | bool |
These types are non-interactive and used for presentation:
| Type | Description |
|---|---|
content | Rich Markdown content for explanations, tips, and guidance |
image | Display an image embedded in the spreadsheet |
action <subtype> | Call-to-action button rendered in the results section |
| Type | Description |
|---|---|
begin_group | Start a collapsible section |
end_group | End a collapsible section |
Modifiers follow the type name, separated by spaces. Multiple modifiers can be combined.
| Modifier | Effect |
|---|---|
output | Marks a field as an output displayed in the results section |
calculate | Field has a formula-driven value and is not user-editable |
hide | Field is hidden from the user but still evaluated |
expert | Field 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 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.
The type column uses action <subtype> syntax, similar to select <list_name>:
action linkaction contactaction sviewStandard modifiers can follow the subtype: action link expert.
| Subtype | Target | Rendering |
|---|---|---|
link | External URL | Button opening a new tab with an external-link icon |
contact | URL (Calendly, mailto:, etc.) | Button with a calendar icon |
sview | Internal View path (e.g., /heyfinfam/views/rent-calc) | Button with internal navigation |
| Column | Meaning |
|---|---|
type | action link, action contact, or action sview |
name | Unique identifier |
default | Target URL or path. Supports formulas (empty string = inactive). |
label | Button text shown to the user |
parameters | Optional styling: style=primary, style=outline, style=subtle, icon=\uD83C\uDFE0 |
hint | Tooltip text |
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 |rate is 0.08, buy_action has a URL, so the CTA is “Get Pre-Approved”.rate is -0.08, buy_action is empty, rent_action has a URL, so the CTA is “Search Rentals”.rate is 0.02, both links are empty, consult has a URL, so the CTA is “Talk to Advisor”.The conditionality lives entirely in the formula engine.
Any Excel logic works: IF, IFS, AND, OR, nested conditions, references to any field.
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.
Use the parameters column to control CTA appearance:
| Parameter | Values | Default |
|---|---|---|
style | primary, outline, subtle | primary |
icon | Any emoji | Subtype-dependent |
Example: style=outline icon=\uD83C\uDFE0
Check back later for full documentation on additional features.