Case study
How GatherDwell was built
GatherDwell is a free property management app for landlords and property managers. Anton designed, architected, built, and launched it himself, as a passion project outside his day job.
What it does
Landlords keep their whole portfolio in one place: properties, tenants and leases, rent, expenses, and reports, with CSV import and export and a built-in help center. An AI assistant answers questions about their own data and can add records for them, and a public API and an MCP server let them work from their own tools, including Claude and ChatGPT.
How it works
LandlordsThe appNext.js on Vercel, sign-in with Clerk
Claude or ChatGPTMCP serverClerk sign-in, a preview before any delete
Scripts and ZapierREST APIOpenAPI, revocable keys
Prisma and TursoOne database, each account isolated
The AI assistant
- A landlord asks a question, or asks to add something
- The agent looks up only the records it needs, in up to four rounds
- The model answers through OpenRouter; new records wait for a yes
- The app: Next.js on Vercel, with Prisma on Turso, a hosted SQLite database, and sign-in through Clerk (Google or email, with two-factor authentication). Each account's data is isolated from every other account.
- The AI assistant: a tool-calling agent with a retrieval (RAG) pipeline. It looks up only the records a question needs (properties, leases, payments, expenses, financial summaries) and searches the help center's articles, in up to four rounds of lookups, then answers through a model on OpenRouter.
- Adding records by conversation: the assistant can only propose them. The app, not the model, lists what it prepared, and nothing is saved until the landlord replies yes.
- The MCP server: adds GatherDwell to Claude or ChatGPT as a connector, with sign-in through Clerk. It adds records in batches, all or none, and deletes take two steps: a preview of exactly what will go, then a confirmation.
- The API: a REST API with an OpenAPI description and revocable API keys, for scripts and tools like Zapier.
Decisions that shaped it
- Free, with no paid tiers. It's a passion project, and optional donations help cover hosting.
- Every number comes from the data. The assistant must take every amount, date, and count from a lookup, and is told never to invent breakdowns.
- The landlord stays in control. The model can't save or delete anything on its own: the app asks for a yes, and MCP deletes show a preview first.
- Send the model as little as possible. Lookups return only the records a question needs, never the whole account.
- Make automation safe. Batch adds are all or nothing: every row is checked first, and nothing is saved if any row has a problem.
- Treat tenant data with care. Each account is isolated, the assistant is rate limited, and privacy practices follow PIPEDA, Canada's privacy law.
How it came together
- March 14, 2026: day one. The app, reports with CSV exports, the rent roll, recurring expenses, a mobile layout, and the AI assistant, across the first 29 commits.
- March 15: CSV import, a help center with 29 articles, and a security review.
- May 2026: sharper lookups for the assistant, and guards against invented numbers.
- September 2026: adding records by conversation, the MCP server, and the public API.
- October 2026: a new layout, with the assistant in a panel beside the work.
Where it is now
Live at gatherdwell.ca, and free to use on phone, tablet, and desktop.