Inspiration
This project has a personal meaning for one of our team members, and that experience became the product spec. When autism enters a family's life, the questions come at 2am, the answers online are contradictory or terrifying, private advocates charge $150–300/hour, and waitlists for specialists stretch for months. The gap between "I have a question" and "I found trustworthy help" is where families burn out — and it's exactly the kind of gap technology is supposed to close. We believe AI's job here is simple to state: bring calm, grounded help to people at their most overwhelmed moment, and improve the day-to-day quality of life of families who rarely get to be anyone's priority.
That's also why Autie is a ground-up rework of an earlier project. The original autie.chat (Angular 15, Dialogflow NLU intents, Firebase Functions, the ChatGPT API, and legacy Places calls) was retired entirely — not one line of its backend survived. For this hackathon we redesigned the product and rebuilt it as an agentic architecture: a Python agent on Google's Agent Development Kit with Gemini on the Gemini Enterprise Agent Platform (formerly Vertex AI), a new Angular app, a new knowledge base, a new safety layer, and an entirely new business model. The old app answered intents; the new one reasons, retrieves, cites, calls tools, and knows when to hand you to a human.
What it does
- Answers with receipts. A custom RAG pipeline over curated, licensed public-health and educational sources (Firestore vector search, 768-d Gemini embeddings). The model cites sources by name; the backend appends links verbatim from tool payloads, so citations can't be hallucinated.
- Finds real local help. Google Maps Places integration for therapists, schools, and support groups — live data, not model memory.
- Knows its limits. A deterministic crisis layer shows verified crisis resources (988) regardless of what the model does; employment guidance refuses to map diagnosis → job type (a stereotype trap we designed out on principle); the app repeats everywhere that it is not a clinician.
- Chat with a human expert. Subscribers can escalate to a real person — and the expert sees them only as a pseudonym ("Amber Fox 42"). Privacy isn't a policy page; it's the schema: the expert-facing API never carries identity.
- A real product, not a demo. Anonymous-first auth, cross-device history, AI-searchable conversations, photo/PDF attachments (Gemini multimodal), browser voice input, a $19.95/mo Stripe subscription with live entitlement push, a Telegram channel, 30-day auto-deleting conversations, and delete-my-data.
How we built it
FastAPI + Google ADK agent on Cloud Run (scale-to-zero), Gemini on the Gemini Enterprise Agent Platform, Firestore for sessions/RAG/entitlements with TTL policies, Firebase Auth (anonymous → linked accounts, custom claims for roles), Firebase Hosting + Angular (signals, standalone components), Stripe webhooks with hand-verified HMAC signatures, and SSE token streaming end to end. Everything is engineered for near-zero idle cost — scale-to-zero compute, Firestore vector search instead of managed vector DBs with cost floors, per-user rate limits — because a community product has to survive on a community budget.
Challenges we ran into
- Streaming through managed infrastructure. Firebase Hosting's rewrite layer silently buffers SSE — long answers looked frozen. Diagnosis took a timed A/B; the fix was calling Cloud Run directly with strict CORS.
- Safety you can't prompt away. We refused to leave crisis handling to the model: a deterministic pre-check shows verified resources every time, and cited URLs are appended by code, never retyped by the model.
- Pseudonymous human escalation. Designing expert chat so a human can genuinely help without ever learning who they're helping — stable aliases, whitelist serialization, and a documented break-glass path for emergencies.
- One product, every screen. A calm desktop layout doesn't translate to a phone by shrinking: dialogs became full-screen sheets, the chat gained a slide-in panel, input behaviors had to adapt per device, and each pass on a real phone surfaced issues no desktop browser ever showed. Responsive design turned out to be product design, not a CSS afterthought.
Accomplishments that we're proud of
- It's live. autie.chat is deployed and serving — not a localhost demo. The first real subscriptions went through the complete checkout-to-entitlement pipeline with zero human touch.
- The pseudonymity boundary held up to audit. We ran a full-scope security review before submission: no high- or medium-confidence findings, and the expert-facing API provably never carries user identity.
- 143 automated tests gate every deploy, covering safety, payments, attachments, expert threads, and the Telegram channel.
- Honest paperwork. The Terms of Service and Privacy Policy were written from what the code actually does — every claim in them is one the system keeps, including documented data retention and delete-my-data.
What we learned
That the hard part of "AI for vulnerable users" isn't the model — it's the edges: what the system does when someone types something frightening, what a human helper is allowed to see, what a citation is allowed to be, and what a subscription page truthfully promises. Gemini made the core conversation almost easy; the engineering went into making it safe to trust.
What's next for Autie
Structured service cards, a curated services directory with community feedback, WhatsApp/SMS channels, corpus growth with eval-gated retrieval, and onboarding more human experts — because the measure of this project isn't tokens generated; it's nights made a little less overwhelming.
Built With
- adk
- angular-framework
- cloud-build
- cloud-run
- fastapi
- firebase-auth
- firebase-hosting
- firestore
- gcp
- gemini
- gemini-enterprise-agent-platform
- google-agent-development-kit
- google-cloud
- google-maps-places-api
- python
- rag
- secret-manager
- server-sent-events
- sse
- stripe
- telegram-bot-api
- typescript
- vector-search
- vertex-ai
- web-speech-api
Log in or sign up for Devpost to join the conversation.