Name | null-lens JSON |
Version |
1.0.1
JSON |
| download |
home_page | None |
Summary | The missing protocol between user requests and AI actions β standardized intent parsing for every AI system. |
upload_time | 2025-10-12 23:25:00 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
ai
intent
parser
standardization
sdk
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# β Null Lens
**The missing protocol between user requests and AI actions.**
Standardized intent parsing for every AI system.
Converts any input into a deterministic schema β **[Motive] [Scope] [Priority]**.
---
## π§© What it does
Null Lens turns unstructured natural-language input into a fixed three-line intent block:
```
[Motive] β what the user wants to achieve
[Scope] β where the request applies (context or domain)
[Priority] β what must be done first or resolved
````
One ambiguous paragraph in β three structured fields out.
---
## π Python SDK
```bash
pip install null-lens
```
**Usage**
```python
from null_lens import NullLens
lens = NullLens(api_key="your_api_key_here")
result = lens.parse("Summarize Q4 strategy across LATAM markets.")
print(result)
```
**Response**
```
[Motive] Summarize strategic direction for Q4
[Scope] LATAM markets
[Priority] Identify key actions for planning cycle
```
---
## β‘ JavaScript / TypeScript SDK
```bash
npm install null-lens
```
**Usage**
```js
import { NullLens } from "null-lens";
const lens = new NullLens(process.env.NULL_LENS_API_KEY);
const result = await lens.parse("Summarize Q4 strategy across LATAM markets.");
console.log(result);
```
**Response**
```
[Motive] Summarize strategic direction for Q4
[Scope] LATAM markets
[Priority] Identify key actions for planning cycle
```
---
### Get your API key
Youβll need an API key to use Lens.
β [https://null-core.ai](https://null-core.ai) β sign up β get **100 free queries instantly.**
No credit card. No approval delay.
```bash
export NULL_LENS_API_KEY="your_api_key_here"
# or on Windows PowerShell
setx NULL_LENS_API_KEY "your_api_key_here"
```
---
## π§ Why it matters
AI systems donβt fail at inference β they fail at **interpretation.**
Lens removes ambiguity before reasoning begins.
**Without Lens**
* Prompt retries
* Context drift
* RAG scaffolding debt
**With Lens**
* Stable input schema
* Consistent reasoning
* Deterministic orchestration
---
## π API Access
**Endpoint**
```
POST https://null-core.ai/api/lens
```
**Headers**
```
Authorization: Bearer <API_KEY>
Content-Type: application/json
```
**Body**
```json
{
"messages": [
{
"role": "user",
"content": "Summarize the latency impact of our RAG pipeline for 100k qps"
}
]
}
```
**Response**
```json
{
"object": "chat.completion",
"org_id": "xxxx-xxxx-xxxx",
"response": "[Motive] Identify latency impact of RAG pipeline\n[Scope] RAG pipeline, 100k QPS scenario\n[Priority] Optimize for performance stability"
}
```
---
## π§© Parsing Helpers
**JavaScript**
```js
function parseLensResponse(responseText) {
const lines = responseText.split(/\r?\n/).map(l => l.trim()).filter(Boolean);
const find = (prefix) => {
const line = lines.find(l => l.toLowerCase().startsWith(prefix));
return line ? line.split(']').slice(1).join(']').trim() : null;
};
return {
motive: find('[motive]'),
scope: find('[scope]'),
priority: find('[priority]')
};
}
```
**Python**
```python
def parse_lens_response(text):
lines = [l.strip() for l in text.splitlines() if l.strip()]
def find(prefix):
for l in lines:
if l.lower().startswith(prefix):
return l.split(']', 1)[1].strip()
return None
return {
"motive": find("[motive]"),
"scope": find("[scope]"),
"priority": find("[priority]")
}
```
---
## π§© Example cURL
```bash
curl -X POST https://null-core.ai/api/lens \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"We migrated API to v2 and uptime dropped β logs show auth timeouts. Root cause & mitigation before Friday?"}]}'
```
---
## π§ Best Practices
* **One call per semantic input** β send full text in `messages[0].content`.
* **Persist outputs** β store Motive / Scope / Priority as fields in your DB.
* **Cache identical inputs** β identical input β identical output.
* **Use Lens before RAG / agents** β treat its output as your canonical intent layer.
* **Test with messy inputs** β long emails, transcripts, logs; the schema holds.
---
## π Security & Compliance
* Stateless β no inputs stored or retained.
* You manage your own API keys.
* Rotate keys if compromised.
* Donβt send confidential or PII data unless necessary.
* Provided *as-is*, without warranties; you own compliance and handling.
---
## β FAQ
**Q:** Is Lens stateful?
**A:** No β each call is independent. Inputs are transient and not stored.
**Q:** Is the output deterministic?
**A:** Yes. Same input β same 3-line output. Determinism by design.
**Q:** Will the format ever change?
**A:** Never. The `[Motive] / [Scope] / [Priority]` schema is permanent.
**Q:** Average latency?
**A:** ~1β5 s per call, depending on region and load.
**Q:** Enterprise pricing?
**A:** Contact **[support@null-core.ai](mailto:support@null-core.ai)** for volume or dedicated environments.
---
## π©Ά License
MIT License β see [LICENSE](LICENSE)
---
**API-first. Stateless. Deterministic.**
Every call, every time.
Raw data
{
"_id": null,
"home_page": null,
"name": "null-lens",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "AI, intent, parser, standardization, sdk",
"author": null,
"author_email": "Null Technologies <support@null-core.ai>",
"download_url": "https://files.pythonhosted.org/packages/be/ef/6147a8d9f539ceb933bed6becd96ada97bbf4b84ce4d9804a604054ff5d4/null_lens-1.0.1.tar.gz",
"platform": null,
"description": "# \u27c1 Null Lens\r\n\r\n**The missing protocol between user requests and AI actions.** \r\nStandardized intent parsing for every AI system. \r\nConverts any input into a deterministic schema \u2014 **[Motive] [Scope] [Priority]**.\r\n\r\n---\r\n\r\n## \ud83e\udde9 What it does\r\n\r\nNull Lens turns unstructured natural-language input into a fixed three-line intent block:\r\n\r\n```\r\n[Motive] \u2014 what the user wants to achieve\r\n[Scope] \u2014 where the request applies (context or domain)\r\n[Priority] \u2014 what must be done first or resolved\r\n````\r\n\r\nOne ambiguous paragraph in \u2192 three structured fields out.\r\n\r\n---\r\n## \ud83d\udc0d Python SDK\r\n\r\n```bash\r\npip install null-lens\r\n```\r\n\r\n**Usage**\r\n\r\n```python\r\nfrom null_lens import NullLens\r\n\r\nlens = NullLens(api_key=\"your_api_key_here\")\r\n\r\nresult = lens.parse(\"Summarize Q4 strategy across LATAM markets.\")\r\nprint(result)\r\n```\r\n**Response**\r\n\r\n```\r\n[Motive] Summarize strategic direction for Q4 \r\n[Scope] LATAM markets \r\n[Priority] Identify key actions for planning cycle\r\n```\r\n---\r\n## \u26a1 JavaScript / TypeScript SDK\r\n```bash\r\nnpm install null-lens\r\n```\r\n**Usage**\r\n\r\n```js\r\nimport { NullLens } from \"null-lens\";\r\n\r\nconst lens = new NullLens(process.env.NULL_LENS_API_KEY);\r\n\r\nconst result = await lens.parse(\"Summarize Q4 strategy across LATAM markets.\");\r\nconsole.log(result);\r\n```\r\n**Response**\r\n\r\n```\r\n[Motive] Summarize strategic direction for Q4 \r\n[Scope] LATAM markets \r\n[Priority] Identify key actions for planning cycle\r\n```\r\n---\r\n### Get your API key\r\nYou\u2019ll need an API key to use Lens.\r\n\r\n\u2192 [https://null-core.ai](https://null-core.ai) \u2192 sign up \u2192 get **100 free queries instantly.** \r\nNo credit card. No approval delay.\r\n\r\n```bash\r\nexport NULL_LENS_API_KEY=\"your_api_key_here\"\r\n# or on Windows PowerShell\r\nsetx NULL_LENS_API_KEY \"your_api_key_here\"\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udde0 Why it matters\r\n\r\nAI systems don\u2019t fail at inference \u2014 they fail at **interpretation.**\r\nLens removes ambiguity before reasoning begins.\r\n\r\n**Without Lens**\r\n\r\n* Prompt retries\r\n* Context drift\r\n* RAG scaffolding debt\r\n\r\n**With Lens**\r\n\r\n* Stable input schema\r\n* Consistent reasoning\r\n* Deterministic orchestration\r\n\r\n---\r\n\r\n## \ud83d\udd0c API Access\r\n\r\n**Endpoint**\r\n\r\n```\r\nPOST https://null-core.ai/api/lens\r\n```\r\n\r\n**Headers**\r\n\r\n```\r\nAuthorization: Bearer <API_KEY> \r\nContent-Type: application/json\r\n```\r\n\r\n**Body**\r\n\r\n```json\r\n{\r\n \"messages\": [\r\n {\r\n \"role\": \"user\",\r\n \"content\": \"Summarize the latency impact of our RAG pipeline for 100k qps\"\r\n }\r\n ]\r\n}\r\n```\r\n\r\n**Response**\r\n\r\n```json\r\n{\r\n \"object\": \"chat.completion\",\r\n \"org_id\": \"xxxx-xxxx-xxxx\",\r\n \"response\": \"[Motive] Identify latency impact of RAG pipeline\\n[Scope] RAG pipeline, 100k QPS scenario\\n[Priority] Optimize for performance stability\"\r\n}\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udde9 Parsing Helpers\r\n\r\n**JavaScript**\r\n\r\n```js\r\nfunction parseLensResponse(responseText) {\r\n const lines = responseText.split(/\\r?\\n/).map(l => l.trim()).filter(Boolean);\r\n const find = (prefix) => {\r\n const line = lines.find(l => l.toLowerCase().startsWith(prefix));\r\n return line ? line.split(']').slice(1).join(']').trim() : null;\r\n };\r\n return {\r\n motive: find('[motive]'),\r\n scope: find('[scope]'),\r\n priority: find('[priority]')\r\n };\r\n}\r\n```\r\n\r\n**Python**\r\n\r\n```python\r\ndef parse_lens_response(text):\r\n lines = [l.strip() for l in text.splitlines() if l.strip()]\r\n def find(prefix):\r\n for l in lines:\r\n if l.lower().startswith(prefix):\r\n return l.split(']', 1)[1].strip()\r\n return None\r\n return {\r\n \"motive\": find(\"[motive]\"),\r\n \"scope\": find(\"[scope]\"),\r\n \"priority\": find(\"[priority]\")\r\n }\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udde9 Example cURL\r\n\r\n```bash\r\ncurl -X POST https://null-core.ai/api/lens \\\r\n -H \"Authorization: Bearer <API_KEY>\" \\\r\n -H \"Content-Type: application/json\" \\\r\n -d '{\"messages\":[{\"role\":\"user\",\"content\":\"We migrated API to v2 and uptime dropped \u2014 logs show auth timeouts. Root cause & mitigation before Friday?\"}]}'\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udde0 Best Practices\r\n\r\n* **One call per semantic input** \u2014 send full text in `messages[0].content`.\r\n* **Persist outputs** \u2014 store Motive / Scope / Priority as fields in your DB.\r\n* **Cache identical inputs** \u2014 identical input \u2192 identical output.\r\n* **Use Lens before RAG / agents** \u2014 treat its output as your canonical intent layer.\r\n* **Test with messy inputs** \u2014 long emails, transcripts, logs; the schema holds.\r\n\r\n---\r\n\r\n## \ud83d\udd10 Security & Compliance\r\n\r\n* Stateless \u2014 no inputs stored or retained.\r\n* You manage your own API keys.\r\n* Rotate keys if compromised.\r\n* Don\u2019t send confidential or PII data unless necessary.\r\n* Provided *as-is*, without warranties; you own compliance and handling.\r\n\r\n---\r\n\r\n## \u2753 FAQ\r\n\r\n**Q:** Is Lens stateful?\r\n**A:** No \u2014 each call is independent. Inputs are transient and not stored.\r\n\r\n**Q:** Is the output deterministic?\r\n**A:** Yes. Same input \u2192 same 3-line output. Determinism by design.\r\n\r\n**Q:** Will the format ever change?\r\n**A:** Never. The `[Motive] / [Scope] / [Priority]` schema is permanent.\r\n\r\n**Q:** Average latency?\r\n**A:** ~1\u20135 s per call, depending on region and load.\r\n\r\n**Q:** Enterprise pricing?\r\n**A:** Contact **[support@null-core.ai](mailto:support@null-core.ai)** for volume or dedicated environments.\r\n\r\n---\r\n\r\n## \ud83e\ude76 License\r\n\r\nMIT License \u2014 see [LICENSE](LICENSE)\r\n\r\n---\r\n\r\n**API-first. Stateless. Deterministic.**\r\nEvery call, every time.\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "The missing protocol between user requests and AI actions \u2014 standardized intent parsing for every AI system.",
"version": "1.0.1",
"project_urls": {
"Documentation": "https://github.com/null-core-ai/null-lens#readme",
"Homepage": "https://null-core.ai",
"Issues": "https://github.com/null-core-ai/null-lens/issues",
"Repository": "https://github.com/null-core-ai/null-lens"
},
"split_keywords": [
"ai",
" intent",
" parser",
" standardization",
" sdk"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "011ab271a5c2ee6e9e35e764cf83d5dbcc6d07c401ddecbd491327550a360a6b",
"md5": "981dabf9fd9e070d86e8fec2936dd853",
"sha256": "c67dce6edb1d3a81056217f89a8ad2ed7afef23fe76a7326db5bf4d5ec2fc6f4"
},
"downloads": -1,
"filename": "null_lens-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "981dabf9fd9e070d86e8fec2936dd853",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 4406,
"upload_time": "2025-10-12T23:24:59",
"upload_time_iso_8601": "2025-10-12T23:24:59.226972Z",
"url": "https://files.pythonhosted.org/packages/01/1a/b271a5c2ee6e9e35e764cf83d5dbcc6d07c401ddecbd491327550a360a6b/null_lens-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "beef6147a8d9f539ceb933bed6becd96ada97bbf4b84ce4d9804a604054ff5d4",
"md5": "28d467b9c631cbfb608438be340a230e",
"sha256": "46b8dd50b9bef18b90e0d451643198be197810c6a25bde6dc53900e16b8df9cc"
},
"downloads": -1,
"filename": "null_lens-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "28d467b9c631cbfb608438be340a230e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 4517,
"upload_time": "2025-10-12T23:25:00",
"upload_time_iso_8601": "2025-10-12T23:25:00.545411Z",
"url": "https://files.pythonhosted.org/packages/be/ef/6147a8d9f539ceb933bed6becd96ada97bbf4b84ce4d9804a604054ff5d4/null_lens-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-12 23:25:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "null-core-ai",
"github_project": "null-lens#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "null-lens"
}