About template
BlockWho is behind the product, in the order buyers and candidates check: the belief, how you got here, the numbers, how you work, the people and the next step.
pnpm dlx shadcn@latest add https://caliperui.site/r/about-template.jsonAbout Halden
Finance teams should review, not search
We started Halden after watching good accountants spend the first week of every month matching bank lines by hand. We build the tool we wanted then.
- finance teams close with Halden
- 1,900
- median close, down from 6.4
- 1.8 days
- matched in the last twelve months
- €41bn
- people in Lisbon and London
- 14
How we got here
Joana and Tom met at a freight company where the close took nine days. They wrote the first matching rules in a spreadsheet, then in a script, then in what became Halden.
We are funded by our customers and a small seed round, and we intend to stay independent. Every feature starts with a finance team that asked for it.
- 2022First rules in a spreadsheetBuilt for one freight company's close.
- 2023Halden opens to ten teamsXero and QuickBooks in both directions.
- 2024Lisbon officeCustomer team and engineering under one roof.
- 2026NetSuite two-way syncOur most requested feature, three years running.
How we work
The habits we hire for and hold each other to.
A person answers
Support is the people who build the product. No tiers, no bots, a reply within a working day.
Never guess with money
Halden suggests; people approve. Large entries always wait for a human.
Write it down
Decisions, incidents and pricing changes are public in our changelog and status page.
Small on purpose
Fourteen people, one product. We hire slowly and keep teams small enough to sit at one table.
Team
The people behind your close
Write to any of us directly. A person answers.
Priya Raman
Co-founder · owns the matching enginepriya@halden.appRafael Abreu
Head of support · answers in under 2hhelp@halden.appKiara Murayama
Security · SOC 2, DPAs, pen testssecurity@halden.appTomás Ferreira
Accountant in residence · CPAtomas@halden.app
14 people in Lisbon and London. We are hiring a second support lead.
Work with us
We are hiring a second support lead.
Lisbon or London · four days a week in the office
When to use #
Use it for
- An about or company page.
- A careers page that leads with how the team works.
Skip it when
- The product pitch; use the landing template.
Installation #
pnpm dlx shadcn@latest add https://caliperui.site/r/about-template.json
Adds its 9 files to components/ui/, each with its own stylesheet, and installs their packages. No account needed. The first part also adds Caliper UI’s tokens; import them once as in Installation.
Usage #
This is the code behind the preview above.
import { AboutTemplate } from "@/components/ui/about-template" import { BlockEm } from "@/components/ui/block-concept" const nav = (current: string) => [ { label: "Product", href: "#product" }, { label: "Customers", href: "#customers" }, { label: "Blog", href: "#blog" }, { label: "About", href: "#about" }, { label: "Contact", href: "#contact" }, ].map((link) => ({ ...link, current: link.label.toLowerCase() === current })); const signIn = { label: "Sign in", href: "#" }; const frame = "h-[720px] w-full overflow-auto rounded-[14px] shadow-[0_0_0_1px_var(--border)]"; const wait = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms)); export function AboutDemo() { return ( <div className={frame}> <AboutTemplate brand="Halden" nav={nav("about")} signIn={signIn} primary={heroes.primary!} intro={{ eyebrow: "About Halden", title: <>Finance teams should <BlockEm>review</BlockEm>, not search</>, lead: "We started Halden after watching good accountants spend the first week of every month matching bank lines by hand. We build the tool we wanted then." }} stats={[ { value: "1,900", label: "finance teams close with Halden" }, { value: "1.8 days", label: "median close, down from 6.4" }, { value: "€41bn", label: "matched in the last twelve months" }, { value: "14", label: "people in Lisbon and London" }, ]} story={{ title: "How we got here", body: ( <> <p>Joana and Tom met at a freight company where the close took nine days. They wrote the first matching rules in a spreadsheet, then in a script, then in what became Halden.</p> <p>We are funded by our customers and a small seed round, and we intend to stay independent. Every feature starts with a finance team that asked for it.</p> </> ), milestones: [ { year: "2022", title: "First rules in a spreadsheet", detail: "Built for one freight company's close." }, { year: "2023", title: "Halden opens to ten teams", detail: "Xero and QuickBooks in both directions." }, { year: "2024", title: "Lisbon office", detail: "Customer team and engineering under one roof." }, { year: "2026", title: "NetSuite two-way sync", detail: "Our most requested feature, three years running." }, ], }} values={[ { title: "A person answers", detail: "Support is the people who build the product. No tiers, no bots, a reply within a working day." }, { title: "Never guess with money", detail: "Halden suggests; people approve. Large entries always wait for a human." }, { title: "Write it down", detail: "Decisions, incidents and pricing changes are public in our changelog and status page." }, { title: "Small on purpose", detail: "Fourteen people, one product. We hire slowly and keep teams small enough to sit at one table." }, ]} team={team} cta={{ ...ctas, eyebrow: "Work with us", title: "We are hiring a second support lead.", primary: { label: "See open roles", href: "#careers" }, reassurance: "Lisbon or London · four days a week in the office" }} footer={footers} /> </div> ); }
API reference #
AboutTemplate
component
Accessibility #
It is built on native elements and keeps aria-labelledby, aria-label and aria-hidden in step with state.
No custom key handling; Tab and the native activation keys do the work.
Motion #
It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.