Almanac
Open source · Self-hosted · Google-native

Property operations for teams already running on Google Drive.

Almanac turns the Google Sheet and Drive folders you already use into a property command center. It surfaces what needs attention, answers from your real records with citations, and never moves your files into another system.

No migration
Drive and Sheets stay the source of truth
Source-grounded
Every answer cites the record it came from
Self-hosted
Local demo first, your own cloud when ready
AlmanacTodayHousesSearchDocuments
Needs attention3 items this week
St. Paul lease expiresin 86 days
Lease
Dummy exterior photo for 161 Loch Lomand Drive
161 Loch Lomand DriveAvery Johnson · $2,450
Mia Chen lives at 22 Verona Court.Source: master spreadsheet row

The work property teams repeat every week, in one place.

Most small teams already have a system — a master spreadsheet and a pile of Drive folders. Almanac makes that system fast to use instead of replacing it.

Stay ahead

See what needs attention

Lease renewals, upcoming move-ins, and vacancies are pulled from your master spreadsheet and ranked by urgency, so nothing time-sensitive slips past you.

Trust the answer

Answers it can't fake

Ask about any property and get an answer drawn only from your indexed records. Every claim links to its source, and anything it can't ground, it refuses to invent.

Get work done

Documents from your own templates

Fill your existing Google Docs templates with property data, review the draft, then open the live doc or a printable view. Your original templates are never edited.

Every record starts with the property, not a folder tree.

The demo portfolio uses safe sample records and dummy exterior photos, so you can inspect the whole workflow without touching real tenant, owner, or financial data.

Dummy exterior photo for 161 Loch Lomand DriveOccupied

161 Loch Lomand Drive

Avery Johnson

Rent
$2,450
Lease
Dec 31, 2026
Dummy exterior photo for 22 Verona CourtOccupied

22 Verona Court

Mia Chen

Rent
$2,850
Lease
Mar 14, 2027
Dummy exterior photo for 48 St. Paul StreetRenewal soon

48 St. Paul Street

Jordan Lee

Rent
$2,300
Lease
Aug 31, 2026
Dummy exterior photo for 9 Wood CourtVacant

9 Wood Court

Turnover

Rent
$0
Lease
Vacant
Dummy exterior photo for 77 Estates LaneOccupied

77 Estates Lane

Olivia Martin

Rent
$3,150
Lease
Jan 31, 2027

Your files never leave Google Drive.

The whole point of Almanac is to give your existing setup a front end — not to ask you to trust a new document vault.

An index, not a second vaultAlmanac stores spreadsheet rows and Drive metadata in a local cache it can rebuild any time. It never becomes a duplicate copy of your documents.
Drive and Sheets stay the source of truthFiles live in your Google Drive exactly as they do today. Open any record and you jump straight back to the real file.
Test before you connect anything realStart on seeded dummy data, then point at a single safe Drive folder. Connect live tenant and owner records only when you are ready.
For builders

Set it up with your AI coding assistant.

Almanac ships with a handoff guide written for coding assistants like Claude and Codex. Clone the repo, hand your assistant the guide, and let it stand up the local demo and walk you through connecting Google — no migration project, no vendor lock-in.

Read the handoff guide

Start with a local demo. Connect live records only when ready.

Bring your own Google, login provider, database, and host. Nothing here requires a paid account to try.

Run the local demo with SQLite and seeded sample records — no Google account needed.
Deploy privately to your own Vercel, Postgres, and login provider.
Connect your Google Drive, Docs, and Sheets from the settings page.
Sync a safe test folder before pointing Almanac at live records.

Run it locally, then decide what to connect.

Inspect the whole product on dummy data before anyone grants Google access or uploads a single real business record.

Local demogit clone https://github.com/natebking/almanacnpm installcp .env.example .envnpm run db:initnpm run dev