Your data already has relationships. Your spreadsheet doesn’t know about them.
Relationsheet keeps the grid your team can already use and puts a real relational database underneath it. Then it gives that base four ways out — forms and apps for the people outside it, automations and scripts for the work nobody wants, and documents written from the records themselves.
No card. No trial clock.
Project management, accounting, forms, apps,
automations and documents are in the base
product — not sold back to you as modules.
Linked tables
Relations, lookups and rollups built into the grid — not bolted on with a lookup column.
02Forms & apps
Publish a form or a permissioned app so people outside the base can put data in, safely.
03Automations & scripts
React to how a value changed, and compute what a formula can't in a sandboxed script.
04Documents
Merge linked records into a real Word document — by hand, or automatically when a row changes.
Built in, not bolted on
Pick an account. The last two columns were never stored.
They are a count and a sum computed across the relations at the moment you select a row. That is the difference between a lookup column and a relational database: you stop maintaining the totals, because nothing is maintaining them now.
One base · three tables · pick an account and the relations drawsynthetic data
Accounts
6 records| Account | Tier | Open | Linked |
|---|---|---|---|
| Halvorsen Millwork | Enterprise | 2 | $134,000 |
| Cordell Freight | Enterprise | 3 | $188,500 |
| Ardent Diagnostics | Team | 1 | $72,000 |
| Peakline Utilities | Team | 2 | $89,500 |
| Verrow Studios | Starter | 1 | $14,750 |
| Brightsill Foods | Team | 2 | $49,750 |
Open = COUNT(Projects → Account) where Status ≠ Delivered
Linked = SUM(Invoices → Account, Amount)
Projects
2 of 12| Project | Account | Status |
|---|---|---|
| Plant floor rollout | Halvorsen Millwork | Active |
| Finishing line retool | Halvorsen Millwork | Planning |
| Depot network audit | Cordell Freight | Active |
| Driver intake redesign | Cordell Freight | Blocked |
| Lab sample tracking | Ardent Diagnostics | Active |
| Accreditation evidence | Ardent Diagnostics | Delivered |
| Outage response drill | Peakline Utilities | Active |
| Meter data migration | Peakline Utilities | Planning |
| Post house scheduling | Verrow Studios | Active |
| Cold chain compliance | Brightsill Foods | Blocked |
| Depot 4 fit-out | Cordell Freight | Planning |
| Supplier scorecards | Brightsill Foods | Active |
Invoices
3 of 13| Number | Issued | Amount |
|---|---|---|
| INV-000118 | May 1 | $62,000 |
| INV-000126 | Jul 1 | $48,000 |
| INV-000131 | Jul 18 | $24,000 |
| INV-000104 | Apr 2 | $96,000 |
| INV-000122 | Jun 12 | $74,000 |
| INV-000129 | Jul 9 | $18,500 |
| INV-000115 | Jun 20 | $34,000 |
| INV-000109 | May 30 | $38,000 |
| INV-000124 | Jun 28 | $58,500 |
| INV-000133 | Jul 21 | $31,000 |
| INV-000128 | Jul 5 | $14,750 |
| INV-000120 | Jun 8 | $27,500 |
| INV-000134 | Jul 22 | $22,250 |
Halvorsen Millwork: 2 open projects, $134,000 linked across 3 invoices.
What this replaces.
Nobody chose to run operations across five tools. It arrived one reasonable decision at a time, and now reconciling it is a standing item on somebody’s Friday.
A spreadsheet nobody may sort, because three tabs reference its row order.
In another tool, with the same project names typed again — and one of them is misspelled.
Downloaded monthly, reconciled by hand, out of date by the meeting.
Writes to a third place. Someone copies it across on Fridays.
Where the actual truth lives, unsearchable, in chat.
A column that points instead of repeats.
This is the move everything else rests on, and it takes one click. A text column holding a retyped account name becomes a relation. Nothing about the grid changes — but a lookup can now pull the tier through, and a rollup can total every invoice on the other side of the link. Those columns were impossible a second ago.
Projects
Account · text| Project | Account | Nothing to compute from | |
|---|---|---|---|
| Plant floor rollout | Halvorsen Millwork | — | |
| Finishing line retool | Halvorsen Millwork | — | |
| Depot network audit | Cordell Freight | — | |
| Driver intake redesign | Cordell Freight | — | |
| Lab sample tracking | Ardent Diagnostics | — | |
| Accreditation evidence | Ardent Diagnostics | — | |
The account name is retyped on every row. Rename one and the rest drift out of sync.
Account is a plain text column. No derived columns are available.
The part your customers touch
Let the outside world in, without letting it in.
A base is only useful if the people who generate the data can reach it. Publish any view as a public form — conditional logic, file uploads, calculated fields, save-and-resume — and a submission writes a typed, correctly-linked row, with a parent and its children in one transaction. The person filling it in has no account and never sees the base.
When a form is not enough, build an app: a published surface over the same base with its own users, its own roles, and a canvas you lay out yourself. Contractors see their jobs, clients see their tickets, and nobody sees a spreadsheet.
Requests · inside the base
0 rows| Summary | Account | Amount |
|---|---|---|
| Nothing yet. Submit the form and the row arrives here with its relation already set. | ||
A submission can write a parent row and its children in one transaction, so a request that arrives with five line items lands as one linked record, not five loose ones.
Nine readings of the same rows.
A view is a way of looking, not a copy. The analyst keeps the grid, delivery gets a board, the plan becomes a timeline with dependencies and critical path. Switch below — the twelve project records never move.
All nine ship. The four picked out are live below.
| Project | Account | Lead | Due | Budget |
|---|---|---|---|---|
| Plant floor rollout | → Halvorsen Millwork | A. Rivera | Aug 28 | $148,000 |
| Finishing line retool | → Halvorsen Millwork | M. Chen | Nov 20 | $96,000 |
| Depot network audit | → Cordell Freight | J. Okafor | Sep 30 | $210,000 |
| Driver intake redesign | → Cordell Freight | D. Adeyemi | Aug 14 | $54,000 |
| Lab sample tracking | → Ardent Diagnostics | M. Chen | Oct 9 | $82,000 |
| Accreditation evidence | → Ardent Diagnostics | S. Kowalski | May 29 | $38,000 |
| Outage response drill | → Peakline Utilities | T. Bergström | Sep 11 | $127,500 |
| Meter data migration | → Peakline Utilities | A. Rivera | Jan 15 | $164,000 |
| Post house scheduling | → Verrow Studios | D. Adeyemi | Sep 4 | $29,500 |
| Cold chain compliance | → Brightsill Foods | S. Kowalski | Aug 21 | $73,000 |
| Depot 4 fit-out | → Cordell Freight | T. Bergström | Feb 26 | $188,000 |
| Supplier scorecards | → Brightsill Foods | J. Okafor | Oct 30 | $44,500 |
Grid view. The same 12 project records — no data was copied or moved.
Bring your formulas
211 functions, and they cross sheets.
Math, statistics, text, logic, date, financial and the lookup family — VLOOKUP, XLOOKUP, INDEX/MATCH, IFS, TEXTJOIN — with references that reach another sheet by name. Type into the cell. It runs the product’s own engine, so what comes back is what Relationsheet gives back, error codes included.
| A · Number | B · Account | C · Amount | D · Status | |
|---|---|---|---|---|
| 1 | INV-000118 | Halvorsen Millwork | $62,000 | Paid |
| 2 | INV-000126 | Halvorsen Millwork | $48,000 | Sent |
| 3 | INV-000131 | Halvorsen Millwork | $24,000 | Draft |
| 4 | INV-000104 | Cordell Freight | $96,000 | Paid |
| 5 | INV-000122 | Cordell Freight | $74,000 | Sent |
| rows 1–13 · a second sheet, Projects, is referenceable by name | ||||
The work nobody wants
It reacts to how a value changed, not just that it did.
Crossed a threshold, became empty, moved from one status to another — 13 trigger kinds and 38 node kinds on one canvas, with branches, loops, approvals and per-node retries. A won deal creates the invoice; a delivered project bills itself.
And where a formula runs out, there is scripting: a sandboxed language with 71 documented builtins and a step budget — no network, no DOM, no eval. It runs as a column type, from the console, or as a step inside an automation, and what it is allowed to write is enforced on the server rather than by the editor.
When a project is delivered
waiting| Invoices → Peakline Utilities | Project | Amount |
|---|---|---|
| INV-000124 | → Outage response drill | $58,500 |
| INV-000133 | → Outage response drill | $31,000 |
| rollup · SUM(Amount) | $89,500 | |
Paperwork, from the records
The document is the data, laid out.
Write a template once with tokens, conditionals and a repeat block over a relation, and every record can produce its own statement, quote, work order or contract — with the linked rows already in it. Documents export to Word, carry drawn signatures through an approval, and an automation can generate one the moment a row changes.
Edit the template on the left. The letter re-renders through the product’s own merge engine, the same one the document builder uses.
Template
editableCordell Freight · generated
merged liveDear J. Okafor, Re: account Cordell Freight (Enterprise) Our records show 3 open project(s) against your account and a linked balance of $188,500. Of that, $92,500 is still outstanding across the invoices below. INV-000104 Apr 2 $96,000 Paid INV-000122 Jun 12 $74,000 Sent INV-000129 Jul 9 $18,500 Sent Yours, Accounts, Relationsheet
Every value in that letter came from the linked rows — the balance is a rollup, the invoice lines are the relation, and the outstanding paragraph appears only because a condition in the template was met. Pick a different account and the same template writes a different document. Generated documents export to Word, carry drawn signatures through an approval, and an automation can produce one the moment a row changes.
No modules, no upsell path
Everything on this list is one product.
Elsewhere the project layer is an add-on, the reporting layer is an add-on, and the form builder is priced per response. Splitting them apart was always a pricing decision, never a technical one.
A relational core
Relation columns with one-to-one, one-to-many and many-to-many cardinality; lookups that pull a field through a link; rollups that aggregate across one. An ER view shows how the tables connect.
Nine ways to read the same rows
Grid, board, timeline with dependencies and critical path, calendar, gallery, form, pivot, dashboard and report — switching a view moves nothing and copies nothing.
211 functions, including across sheets
Math, statistics, text, logic, date, financial and the lookup family. References reach other sheets by name: =SUM(Projects!E1:E12).
Project management
Dependencies, critical path, boards with swimlanes and WIP limits, and a timeline you can drag to reschedule — all reading the same records the rest of the base uses.
Accounting and ledger
Currency columns, typed money, cross-sheet totals, and invoices that roll up to the account and the project that own them — with the ledger reading the same rows as the plan.
Forms that write straight in
Publish a view as a public form, or build one in the studio with conditional logic, file uploads, calculated fields and save-and-resume. A submission can write a parent row and its children in one transaction.
Automations and approvals
13 trigger kinds and 38 node kinds on a visual canvas, with transition conditions that fire on how a value changed. Sequential and parallel approvals with quorum and drawn signatures.
Governance below the UI
Sheet, row and column grants for people or groups, with conditional rules on a cell's value. Enforced by Postgres row-level security, not hidden in the client, with a tamper-evident audit trail.
Hiding a column is not what protects it.
Access is decided in Postgres, below the interface, by row-level security. Grants apply to a whole sheet, to specific rows, or to specific columns, for a person or a group — and a rule can depend on the value in a cell, so somebody gets exactly the rows for their own region and nothing else. Columns can be hidden outright or returned redacted, and every change is recorded with a per-cell diff in a tamper-evident log.
It is the same machinery that makes the forms and apps above safe to hand out: published surfaces are not trusted clients, they are constrained ones.
Or start from a base someone already wired.
45 solution templates across 17 categories, each arriving with its tables linked, its lookups and rollups computing, and enough seed rows to see how it is meant to work. You can capture one of your own bases as a template too.
- Construction punch list
- Brewery batch production
- Insurance claims
- Grant tracker
- AP & AR ledger
- Field service dispatch
- Recruiting pipeline
- IT asset register
- Manufacturing work orders
- Property management
- Veterinary clinic
- Podcast production
+ 33 more, from OKRs and grant tracking to restaurant reservations and fleet maintenance.
No layer here is a separate purchase.
Elsewhere the project module, the reporting module and the form builder are separate purchases stacked on top of the seat. Here they are one product. A plan buys collaboration, administrative control and scale — and paid plans are opening shortly, so today everything runs in the free workspace.
Free
For individuals and small trials.
- One workspace
- The whole product — relations, all nine views, formulas, forms, apps, automations, documents
- Import CSV, Excel, JSON or SQL DDL
- Export to CSV, Excel or Word
Team
For teams building a shared source of truth.
- Everything in Free
- Realtime collaboration & sharing
- Roles, groups & audit trail
- REST API & webhooks
Business
For governed, cross-department deployments.
- Everything in Team
- Row & column permissions
- Conditional / attribute-based access
- Priority support & onboarding
Reasonable objections.
Is this actually a database, or a spreadsheet with a lookup column?
A database. Rows are records with typed columns, links are stored in their own table, and access is decided in Postgres by row-level security rather than by the interface. The grid is how you work with it, not what it is.
What do I have to buy separately?
No layer on this page is its own product. Elsewhere the project module, the reporting module and the form builder are separate purchases stacked on top of the seat; here they are one thing. Plans differ by collaboration, administrative control and scale — and paid plans are opening shortly, so today everything runs in the free workspace.
Do my spreadsheet formulas still work?
Largely. 211 functions ship across math, statistics, text, logic, date, financial and lookup families, including VLOOKUP, XLOOKUP, INDEX/MATCH, IFS and TEXTJOIN — plus references that cross sheets by name.
How do I get my existing data in?
Import CSV, Excel or JSON, or point the SQL importer at existing DDL and it will plan the tables and relations for you. Export any view back out to CSV, Excel or Word at any time.
Can people see only their own rows?
Yes. Grants apply to a whole sheet, specific rows or specific columns, for a person or a group, and a rule can depend on the value in a cell — for example, only rows in a member's own region. Columns can be hidden or redacted.
Can I try it without setting anything up?
Yes. Start free, with no card. Bring a CSV and it becomes a typed table you can start linking, point the SQL importer at existing DDL and it plans the tables and relations for you, or open one of the pre-wired templates and work backwards from a finished base.
Enter the value once. Let the links do the rest.
Free forever for one workspace. Import CSV, Excel, JSON, or point it at SQL DDL.
Export back out to CSV, Excel or Word whenever you like — it is your data.