{"id":34057391,"url":"https://github.com/null-core-ai/null-lens","last_synced_at":"2025-12-14T03:32:03.471Z","repository":{"id":324282595,"uuid":"1074486062","full_name":"null-core-ai/null-lens","owner":"null-core-ai","description":"The missing protocol between user requests and AI actions. Standardized intent parsing for every AI system. Converts any input into [Motive] [Scope] [Priority].","archived":false,"fork":false,"pushed_at":"2025-10-13T13:22:33.000Z","size":77,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-14T22:09:39.004Z","etag":null,"topics":["agent","agentic","agentic-ai","agentic-workflow","agents","ai","ai-agent","ai-agents","llm","llm-agents","llm-framework","llm-tools","llms","prompt-engineering","prompts","semantic"],"latest_commit_sha":null,"homepage":"https://null-core.ai/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/null-core-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-11T22:08:10.000Z","updated_at":"2025-10-13T13:22:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/null-core-ai/null-lens","commit_stats":null,"previous_names":["null-core-ai/null-lens"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/null-core-ai/null-lens","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-core-ai%2Fnull-lens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-core-ai%2Fnull-lens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-core-ai%2Fnull-lens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-core-ai%2Fnull-lens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/null-core-ai","download_url":"https://codeload.github.com/null-core-ai/null-lens/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-core-ai%2Fnull-lens/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27716585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-14T02:00:11.348Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agentic","agentic-ai","agentic-workflow","agents","ai","ai-agent","ai-agents","llm","llm-agents","llm-framework","llm-tools","llms","prompt-engineering","prompts","semantic"],"created_at":"2025-12-14T03:32:02.802Z","updated_at":"2025-12-14T03:32:03.464Z","avatar_url":"https://github.com/null-core-ai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI](https://img.shields.io/pypi/v/null-lens.svg)](https://pypi.org/project/null-lens/)\n[![npm](https://img.shields.io/npm/v/null-lens.svg)](https://www.npmjs.com/package/null-lens)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n# ⟁ Null Lens\n\n**The missing protocol between user requests and AI actions.**  \nStandardized intent parsing for every AI system.  \nConverts any input into a deterministic schema — **[Motive] [Scope] [Priority]**.\n\n---\n\n## 🧩 What it does\n\nNull Lens turns unstructured natural-language input into a fixed three-line intent block:\n\n```\n[Motive] — what the user wants to achieve\n[Scope] — where the request applies (context or domain)\n[Priority] — what must be done first or resolved\n````\n\nOne ambiguous paragraph in → three structured fields out.\n\n---\n## 🐍 Python SDK\n\n```bash\npip install null-lens\n```\n\n**Usage**\n\n```python\nfrom null_lens import NullLens\n\nlens = NullLens(api_key=\"your_api_key_here\")\n\nresult = lens.parse(\"Summarize Q4 strategy across LATAM markets.\")\nprint(result)\n```\n**Response**\n\n```\n[Motive] Summarize strategic direction for Q4  \n[Scope] LATAM markets  \n[Priority] Identify key actions for planning cycle\n```\n---\n## ⚡ JavaScript / TypeScript SDK\n```bash\nnpm install null-lens\n```\n**Usage**\n\n```js\nimport { NullLens } from \"null-lens\";\n\nconst lens = new NullLens(process.env.NULL_LENS_API_KEY);\n\nconst result = await lens.parse(\"Summarize Q4 strategy across LATAM markets.\");\nconsole.log(result);\n```\n**Response**\n\n```\n[Motive] Summarize strategic direction for Q4  \n[Scope] LATAM markets  \n[Priority] Identify key actions for planning cycle\n```\n---\n### Get your API key\nYou’ll need an API key to use Lens.\n\n→ [https://null-core.ai](https://null-core.ai) → sign up → get **100 free queries instantly.**  \nNo credit card. No approval delay.\n\n```bash\nexport NULL_LENS_API_KEY=\"your_api_key_here\"\n# or on Windows PowerShell\nsetx NULL_LENS_API_KEY \"your_api_key_here\"\n```\n\n---\n\n## 🧠 Why it matters\n\nAI systems don’t fail at inference — they fail at **interpretation.**\nLens removes ambiguity before reasoning begins.\n\n**Without Lens**\n\n* Prompt retries\n* Context drift\n* RAG scaffolding debt\n\n**With Lens**\n\n* Stable input schema\n* Consistent reasoning\n* Deterministic orchestration\n\n---\n\n## 🔌 API Access\n\n**Endpoint**\n\n```\nPOST https://null-core.ai/api/lens\n```\n\n**Headers**\n\n```\nAuthorization: Bearer \u003cAPI_KEY\u003e  \nContent-Type: application/json\n```\n\n**Body**\n\n```json\n{\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Summarize the latency impact of our RAG pipeline for 100k qps\"\n    }\n  ]\n}\n```\n\n**Response**\n\n```json\n{\n  \"object\": \"chat.completion\",\n  \"org_id\": \"xxxx-xxxx-xxxx\",\n  \"response\": \"[Motive] Identify latency impact of RAG pipeline\\n[Scope] RAG pipeline, 100k QPS scenario\\n[Priority] Optimize for performance stability\"\n}\n```\n\n---\n\n## 🧩 Parsing Helpers\n\n**JavaScript**\n\n```js\nfunction parseLensResponse(responseText) {\n  const lines = responseText.split(/\\r?\\n/).map(l =\u003e l.trim()).filter(Boolean);\n  const find = (prefix) =\u003e {\n    const line = lines.find(l =\u003e l.toLowerCase().startsWith(prefix));\n    return line ? line.split(']').slice(1).join(']').trim() : null;\n  };\n  return {\n    motive: find('[motive]'),\n    scope: find('[scope]'),\n    priority: find('[priority]')\n  };\n}\n```\n\n**Python**\n\n```python\ndef parse_lens_response(text):\n    lines = [l.strip() for l in text.splitlines() if l.strip()]\n    def find(prefix):\n        for l in lines:\n            if l.lower().startswith(prefix):\n                return l.split(']', 1)[1].strip()\n        return None\n    return {\n        \"motive\": find(\"[motive]\"),\n        \"scope\": find(\"[scope]\"),\n        \"priority\": find(\"[priority]\")\n    }\n```\n\n---\n\n## 🧩 Example cURL\n\n```bash\ncurl -X POST https://null-core.ai/api/lens \\\n  -H \"Authorization: Bearer \u003cAPI_KEY\u003e\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"messages\":[{\"role\":\"user\",\"content\":\"We migrated API to v2 and uptime dropped — logs show auth timeouts. Root cause \u0026 mitigation before Friday?\"}]}'\n```\n\n---\n\n## 🧠 Best Practices\n\n* **One call per semantic input** — send full text in `messages[0].content`.\n* **Persist outputs** — store Motive / Scope / Priority as fields in your DB.\n* **Cache identical inputs** — identical input → identical output.\n* **Use Lens before RAG / agents** — treat its output as your canonical intent layer.\n* **Test with messy inputs** — long emails, transcripts, logs; the schema holds.\n\n---\n\n## 🔐 Security \u0026 Compliance\n\n* Stateless — no inputs stored or retained.\n* You manage your own API keys.\n* Rotate keys if compromised.\n* Don’t send confidential or PII data unless necessary.\n* Provided *as-is*, without warranties; you own compliance and handling.\n\n---\n\n## ❓ FAQ\n\n**Q:** Is Lens stateful?\n**A:** No — each call is independent. Inputs are transient and not stored.\n\n**Q:** Is the output deterministic?\n**A:** Yes. Same input → same 3-line output. Determinism by design.\n\n**Q:** Will the format ever change?\n**A:** Never. The `[Motive] / [Scope] / [Priority]` schema is permanent.\n\n**Q:** Average latency?\n**A:** ~1–5 s per call, depending on region and load.\n\n**Q:** Enterprise pricing?\n**A:** Contact **[support@null-core.ai](mailto:support@null-core.ai)** for volume or dedicated environments.\n\n---\n\n## 🩶 License\n\nMIT License — see [LICENSE](LICENSE)\n\n---\n\n**API-first. Stateless. Deterministic.**\nEvery call, every time.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnull-core-ai%2Fnull-lens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnull-core-ai%2Fnull-lens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnull-core-ai%2Fnull-lens/lists"}