Ask x0 assistant (agentic_query)
In-portal Q&A for technical, pricing, and data questions. Every ask is a support query with a Q-XXXX Crockford id (same scheme as support-queries.md / resolve.in.ecotegral.com).
Who can use it
| Audience | Gate |
|---|---|
| Staff | Mission Control → Ask x0 (/admin/ops/ask/) — always |
| Customers | Option agentic_query, min tier Standard (also Professional / Enterprise) |
Lite / Free see an upgrade prompt on /ask/. Staff can still attach a customer as context.
Topics
| Topic | Context fed to the assistant |
|---|---|
| Technical | Public KB, Excel / add-in / OData / freshness docs, simulator blurb (Professional+) |
| Pricing & plans | Live PricingTier catalogue + options_available |
| My data | Plan, orgs, cache metadata (table, row counts, sync times) — never row payloads |
Logging
SupportQuery.kind = agent,query_idlikeQ-A3FK- Customer / staff question + assistant answer as
SupportQueryMessage(systemrole) AgentQueryRun: topic, model, latency, errors, turn count- Follow-ups stay on the same Q-XXXX thread
- Talk to a human sets status
pending_staffand emails duty staff
LLM
OpenAI-compatible chat completions:
X0_AGENT_BASE_URL=http://miro:11343/v1
X0_AGENT_MODEL=qwen
X0_AGENT_API_KEY=
X0_AGENT_TIMEOUT=60
If X0_AGENT_BASE_URL is empty (or the call fails), x0 uses retrieval over the same context (keyword overlap). Tests and canoe installs work without a model.
URLs
| Who | Path |
|---|---|
| Customer | /ask/ |
| Customer thread | /queries/Q-XXXX/ |
| Escalate | POST /ask/Q-XXXX/escalate/ |
| Staff | /admin/ops/ask/ |
| Staff queue | Admin → Queries, filter kind = Ask x0 |
Seed
python manage.py migrate
python manage.py seed_options
python manage.py seed_roadmap
Related
- Documentation index · Glossary
- support-queries.md
- email-forms.md — Excel tax-invoice email (common Ask x0 topic)
- excel-desktop.md · odata.md
- customer-options.md
- pricing.md