-
-
Atria welcomes a resident: pick a language, accept the privacy notice, then ask the building's rules in plain words.
-
Every command one tap away inside Telegram: help, reports, privacy, language, signup.
-
The resident picks the language before any data is processed. Spanish or English.
-
Privacy notice on demand: what Atria stores, why, and how to exercise data rights.
-
A bylaw question answered with Article 11 cited, so the resident can verify it.
-
Asked again, Atria holds the same answer and the same source. No drift.
-
Not in the bylaws: Atria refuses to guess and escalates to the administrator.
-
One sentence, two tickets. Gemini split the report into folios #0032 and #0033.
-
The resident checks status by folio, without asking a human.
-
A data-rights request detected in plain conversation, logged as folio S-0014.
Inspiration
In Mexico, most condominium buildings are run by a neighbor who took the job because nobody else would. They hold a full-time job elsewhere and administer the building on top of it, from a WhatsApp group with 20 to 60 residents. The same question about pets arrives fifteen times. A broken elevator is reported in a thread that has scrolled away by morning. A new resident asks what the rules say about renovations, and someone has to go find the document again.
The pain is not accounting — there is software for that. The pain is the volume of interruptions, and nobody had put an agent in front of it.
What it does
Atria is a Telegram agent that absorbs the building's communication load. Residents write to Atria; the administrator only sees what genuinely needs a human decision.
For residents:
- Answers questions from the building's own bylaws, citing the article. If the answer is not in the document, it escalates to the administrator instead of inventing one.
- Files reports as tickets with a sequential folio, and classifies urgency by the condition described, not by the object mentioned — "the elevator is stuck with someone inside" and "the elevator button is scratched" are not the same report.
- Reports ticket status by folio, and lets the resident cancel.
- Handles data-protection (ARCO) rights from the chat under Mexican law (LFPDPPP). Opting out takes effect immediately.
- Replies in the resident's language — Mexican Spanish by default, with English available: the privacy notice, signup and bylaw answers are fully translated, including the cited article. The resident chooses before the privacy notice is shown.
For the administrator, from the same bot:
/tickets— move reports through their lifecycle; the resident is notified automatically./pendientes— answer the questions Atria escalated./verificar— approve residents waiting for unit verification.
There is no separate web console, and that is the point. The AI is not behind the counter helping the administrator work — the AI is the counter. The incumbents in this market (ComunidadFeliz, Neivor) put AI in back-office analytics behind a human operator. Atria puts it in front of the residents.
How the AI runs the operation
Every resident message goes through Gemini on Vertex AI. Nothing reaches the administrator that the agent could resolve on its own.
| Decision made by the model | Model |
|---|---|
| Answering bylaw questions grounded in the building's own rules, with the article cited | gemini-2.5-flash |
| Deciding whether an answer exists in the documents at all, or must be escalated to a human | gemini-2.5-flash |
| Classifying a report's urgency from the described condition | gemini-2.5-flash |
| Detecting a data-protection request inside free-form conversation | gemini-2.5-flash |
| Turning a raw bylaw document into a structured, queryable index | gemini-2.5-pro |
Two product rules constrain it. Cite the source, never improvise: every bylaw answer quotes its article, and an unanswerable question is escalated, not guessed. Human in the loop for anything consequential: the agent informs, records and reminds; decisions with legal or monetary effect belong to the administrator.
How we built it
Google Cloud end to end: Vertex AI for inference, Cloud Run for the service, Firestore for buildings, units, residents, tickets and conversations isolated per building, and Cloud Storage. Node and TypeScript in a small monorepo. Authentication to Vertex AI uses Application Default Credentials, so there is no API key in the codebase to leak.
The same code runs both ways: long polling in local development, and a webhook in production when it detects it is running on Cloud Run.
Access control is deliberate. The building link routes but does not authenticate. Anyone holding it can read public information; anything personal — a resident's own reports, their unit — requires the administrator to verify them first. Unit links carry a use quota and an expiry.
Challenges we ran into
Latency was the first user-facing problem. The reasoning budget was capped at 512 tokens after measuring the tradeoff, which brought the slowest answers down from 13 seconds to 5.
Cold starts were the second. Cloud Run scaling to zero meant the first message after an idle period was slow — precisely the first impression a resident gets. The service now runs with a minimum instance.
A quota race condition on unit tokens: two residents redeeming the same invitation at the same moment. It has its own regression suite.
And the failure mode that cost the most time: with long polling, a stopped bot does not error — it goes silent. Three debugging rounds were lost to that before it was written down in the README.
Accomplishments that we're proud of
Ten automated regression suites, including negative controls — a false fact planted in the conversation history is not repeated back, and insisting after an escalation does not turn an unanswerable question into an answered one. They cover the agent's reference questions, signup through both paths, the full ticket cycle, ARCO detection, memory, folio queries, concurrency, and the guarantee that every announced command exists and every command is announced.
Privacy shipped, not planned. The privacy notice comes before any data is processed, consent is stored with a timestamp, and a resident can exercise their data rights from the chat with the opt-out taking effect immediately. This is a product built in a jurisdiction with a real data-protection law, and it behaves like it.
What we learned
Grounding beats fluency. The hardest product decision was not making the agent smarter — it was making it refuse. An agent that answers a bylaw question it cannot source is worse than useless in a building, because the administrator inherits the consequence. Escalating is a feature.
Inference is cheaper than the industry assumes. Serving one building costs $1.50–8 USD per month, which puts inference at 4–12% of revenue. AI-native companies today report gross margins around 50–60% because inference is a variable cost that scales with use. Ours does not dominate the cost structure, and that is what makes the unit economics work.
And reporting a zero is better than manufacturing a number. Our revenue for the competition window is $0. We considered every framing that would have made that look better, and none of them survived the question a judge would ask next.
Business model and honest numbers
Subscription per building: $599 / $999 / $1,999 MXN per month for up to 20 / 60 / 150 units. The buyer is the administrator; the residents use it and do not pay.
Contribution margin today is ~88–95%, with a target gross margin at scale of ~78–85% once human support is loaded in.
Revenue during the competition window is $0, and we report it as $0. The rules count revenue from arms-length customers. Our one committed pilot customer — the administrator of a 12-unit building, on the $599 plan — has a tie to the team, so that payment was never going to count on that line, and the subscription has not been created yet in any case.
What this makes possible for people outside the team
Honestly: today Atria has created no jobs and no income for anyone outside Spiralis. Zero users, zero arms-length revenue, and we are not going to dress an intention as an outcome.
What the economics make possible is specific. Professional building administration is priced out of small buildings because it is human attention sold by the hour — an administrator can carry a handful of buildings before quality drops. Atria absorbs the routine load, which is the part that scales badly. An administrator using it can serve more buildings at the same quality, and buildings that could never afford one become customers worth having. That is the opportunity: not headcount at Spiralis, but a viable practice for administrators who cannot reach this segment today. For the volunteer neighbor, the return is hours.
What's next for Atria
The immediate step is the pilot building: onboarding its residents so Atria carries a real building's daily traffic. The administrator has agreed to the plan and the price; the subscription and the residents come next.
Beyond that, the same building model — a volunteer neighbor administering with no tools — exists across Colombia, Chile, Argentina and Peru: same language, same messaging culture, same pain. Expansion is the same product, not a new one.
Built With
- cloud-run
- cloud-storage
- firestore
- gemini
- google-cloud
- node.js
- telegram
- telegram-bot-api
- typescript
- vertex-ai
Log in or sign up for Devpost to join the conversation.