Context follows attention, not the whole DOM
Other approaches serialize the entire page or guess what matters. askable captures exactly the element the user is looking at — one attribute, one focus target.
Put data-askable on any meaningful element, observe once, then pass
askable.toPromptContext() at the AI boundary. The assistant gets the user's exact
visual focus — not a guess, the real thing.
Other approaches serialize the entire page or guess what matters. askable captures exactly the element the user is looking at — one attribute, one focus target.
The same object that renders a row or card becomes model-ready context. No separate data pipeline, no prompt templates, no mapping layer.
Works anywhere a user points, clicks, or hovers. React, Vue, Svelte, or plain HTML — same one-attribute pattern.
Live demo
Click a KPI card or account row. The context panel updates in real time — that's what goes into your model.
| Company | MRR | Plan | Status |
|---|
hover or click an element above…
waiting for focus…
How it works
No giant framework. No invasive serialization. Let the model borrow the user's focus.
Add data-askable wherever your UI already has meaning: rows, charts, KPIs, inputs, cards, timeline items.
<div data-askable='{"metric":"MRR","value":"$128K"}'>
...
</div>
Call askable.observe(document) once. askable tracks click, hover, or focus and adapts as the DOM changes.
askable.observe(document, {
events: ['click']
});
At the AI boundary, send askable.toPromptContext(). The assistant now knows what the user is actually looking at.
const context = askable.toPromptContext(); // → "User is focused on: metric: MRR, value: $128K"
Packages
One core library. Thin adapters for every framework. Same mental model everywhere.
useAskable() hook and <Askable> component for React 17+.Integrations
toPromptContext() returns a plain string. Pass it to any LLM framework or API — no adapter needed.
useCopilotReadable(). The LLM sees what the user selected.Drop data-askable on your most important element. Working context in under five minutes.