An AI work assistant that gets smarter the more you use it.
Unlike generic AI chatbots, Aura remembers your context across sessions, understands your industry and role, proactively suggests the right tool for what you're doing, and improves its recommendations over time based on your behavior.
Most AI tools treat every session as a blank slate. Aura is built around the opposite idea.
| Generic AI chat | Aura |
|---|---|
| Starts from scratch every session | Remembers your colleagues, projects, and preferences across sessions |
| One-size-fits-all responses | Adapts to your industry and role (law, medicine, tech, student, ...) |
| You have to know what to ask | Detects your intent mid-conversation and surfaces the right Skill |
| Recommendations never change | Learns from your behavior β what you click, complete, and copy |
Extracts facts, preferences, and goals from every conversation and stores them in a vector database (pgvector). Recalls the most relevant memories before each response β so Aura remembers your manager's name, your project deadline, and that you prefer bullet-point answers.
Structured task workflows optimized for specific professions:
- Legal: contract review, case summary, legal research memo
- Medical: clinical note, patient education sheet, differential checklist
- Product / Dev: meeting notes, weekly report, bug triage, OKR review
- Students: essay outline, exam prep, literature summary
Each Skill has a curated prompt template, typed input fields, and example outputs β no prompt engineering required.
A 5-stage RecSys pipeline surfaces the right Skills before you even type:
Context (profile: industry / role / pain-points)
β Recall skill_role_mapping priority + universal skills
β Coarse Rank max 2 per category (diversity control)
β Fine Rank profile_matchΓ0.40 + CTRΓ0.25 + affinityΓ0.25 + recencyΓ0.10
β Re-rank pinned skills injection + cool-down filter
Impression and click events are tracked in skill_signals, so the rankings improve as usage data accumulates.
While you type, Aura runs a parallel pipeline to detect whether you need a Skill:
Message
β Hard rules explicit keyword match β instant trigger
β Embedding recall cosine similarity against all skill embeddings (top-5)
β Fine rank semantic_simΓ0.40 + profileΓ0.20 + qualityΓ0.25 + affinityΓ0.15
β Confidence threshold (< 0.55 β no trigger, no interruption)
Skill embeddings are pre-computed at startup and cached in memory, so latency impact per message is a single embedding call.
A lightweight background agent infers and updates your profile (industry, role, pain points) from each conversation with confidence accumulation. The profile feeds every ranking and personalization layer.
After each response, a background agent generates 3 follow-up suggestions β at least one follow-up question and one Skill action β tailored to the current conversation.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FastAPI Backend β
β β
β POST /chat β
β ββ Intent detection (embedding recall, System 2) β
β ββ Context builder (profile + memory recall) β
β ββ LLM call (DeepSeek / Claude via β
β β LiteLLM, streaming SSE) β
β ββ Background tasks: β
β memory extraction β pgvector β
β profile update β
β suggestion generation β
β β
β GET /api/recommendations (System 1 pipeline) β
β POST /api/recommendations/events (signal tracking) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PostgreSQL + pgvector β
β users Β· conversations Β· messages β
β user_memories (vector) β
β industry_skills Β· skill_role_mapping β
β skill_signals Β· user_skill_affinity β
β user_skills Β· user_suggestions Β· skill_executions β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β React + TypeScript frontend β
β SSE streaming Β· Skill cards Β· Skill panel β
β Profile page Β· Suggestion bar β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
LLM support: any model accessible via LiteLLM (Doubao, DeepSeek, Claude, GPT-4, etc.)
Prerequisites: Python 3.11+, Node.js 18+, PostgreSQL 15+ with pgvector, uv
# 1. Clone
git clone https://github.com/cc17/aura.git && cd aura
# 2. Configure
cp .env.example .env
# Edit .env: set AURA_ARK_API_KEY, AURA_DATABASE_URL, AURA_SECRET_KEY
# 3. Install & migrate
uv venv --python 3.12 && uv pip install -e ".[dev]"
cd frontend && npm install && cd ..
# 4. Run
uv run uvicorn backend.main:app --reload # http://localhost:8000
cd frontend && npm run dev # http://localhost:5173See docs/SETUP.md for database setup with Docker.
| Layer | Technology |
|---|---|
| Backend | FastAPI, SQLAlchemy 2 async, Pydantic |
| LLM | LiteLLM (Doubao / DeepSeek / Claude / any OpenAI-compatible) |
| Database | PostgreSQL 16 + pgvector |
| Auth | JWT (python-jose + bcrypt) |
| Frontend | React 18, TypeScript, Vite |
| Embeddings | Configurable via AURA_EMBEDDING_MODEL (optional) |
- System 1: 5-stage home screen recommendation (recall β coarse rank β fine rank β re-rank)
- System 2: In-conversation intent detection via embedding recall, replacing brittle keyword matching
- Impression/click tracking with
skill_signals; quality signals (completion, adoption, abandonment) feed fine ranking SkillSignalModel+UserSkillAffinityModelORM;GET /api/recommendations+POST /api/recommendations/events
- 24+ Skills across 7 industries (legal, medical, corporate law, tech, student, etc.)
- Skill Marketplace UI: browse, add, pin, and manage your Skill library
- Industry Γ role onboarding with dynamic chip selectors
skill_role_mapping: many-to-many priority mapping (essential / recommended / optional)
- Free / Pro / Max tiers with daily/monthly quota enforcement
- Quota banner, upgrade flow, pricing modal
- Conversation history limited to 30 days on Free tier
- Long-term memory extraction β pgvector storage β similarity recall
- Async profile updater with confidence accumulation
- Post-response suggestion bar (questions + Skill shortcuts)
- Personal profile page: view and edit profile fields, delete memories
- JWT auth (register / login), user onboarding (3-question flow)
- Industry Skills framework:
industry_skillstable, Skill executor (SSE streaming) - Profile injected into system prompt for contextual responses
- PostgreSQL migration from SQLite, pgvector extension
- Phase 11B β Daily cron to aggregate
skill_metrics_daily(pre-computed CTR / completion / adoption rates) - Phase 11C/D β Affinity score update from conversation signals; recommendation cool-down logic
- Phase 13 β Admin dashboard: skill performance metrics, user funnel, A/B experiment support
- Phase 14 β Collaborative filtering recall (users-like-you)
- Phase 15 β Payment integration (Alipay / WeChat Pay)
Pull requests are welcome. For large changes, please open an issue first to discuss the direction.
uv run pytest tests/ -v # run testsMIT