Ask your engineering data anything.We answer from metrics.
A chat agent that classifies your question before it fetches anything. Insight questions answer from anonymized aggregates. No raw ticket read.
The problem
Every AI chat built on top of your engineering data has the same architecture problem. To answer 'what's our velocity,' it reaches into Jira, pulls raw tickets, stuffs them into a prompt, and sends them to a third-party LLM. That works. It also creates an audit-trail problem that security reviewers reject.
- Your ticket bodies end up in model-provider retention windows.
- Your RAG store becomes a reconstruction risk via embedding inversion.
- Your logs - model, app, observability - each hold a copy under a different retention policy.
How it works
Step by step.Nothing behind a curtain.
Insight
'What's our velocity,' 'how many bugs did we close last sprint.' We answer from derived metrics. Nothing about your raw tickets leaves the metrics store.
Current state
'What's the status of TICKET-123.' We hit the live tool API.
Hybrid
Both. Classify, route, answer.
Insight gate
When an insight question is classified, the insight gate at routes/agent.js:86-120 prevents raw-data fetch. The response is composed from TaskTrackerMetrics, DeveloperMetrics, SprintHistory and ComponentHistory - all anonymized, all hashed.
What you get
Specific.Not marketing-department specific.
- Three-class intent routing on every prompt: insight / current / hybrid. Plus a greeting short-circuit.
- Insight gate: insight questions answer from derived aggregates. No raw ticket fetch.
- SSE streaming on chat and on sprint-plan follow-ups.
- Data-first routing: read-only lookups (searchIssues, listItems) are re-routed to stored Knowledge when available, so we don't hammer your tool API.
- Provider choice: Azure OpenAI by default (gpt-4o, text-embedding-3-large), or bring your own Ollama (llama3.1:latest, nomic-embed-text). Toggle with LLM_PROVIDER.
- Function-calling mode (feature-flagged, optional). Single-pass OpenAI tool_calls loop, runs cross-platform calls in parallel via a sub-agent queue. Flip USE_FUNCTION_CALLING=true to enable.
Built right
Reasoning over metrics, not raw text.
The agents work off derived signals - counts, hashes, vectors - never the body of your tickets. You get cross-tool reasoning without handing an LLM your IP. The full pipeline, provider options and retention story are best walked through live on a call.
Get the architecture deep-dive on a callWorks with
Ask anything. We answer without reading.
Private by default. Specific by design. Free for 2 users, forever.