Skip to content
Gully Burns edited this page Feb 28, 2026 · 16 revisions

Skillful-Alhazen

A TypeDB-powered agentic knowledge notebook for developers — run interactively with Claude Code or deployed persistently via OpenClaw

"The duty of the man who investigates the writings of scientists, if learning the truth is his goal, is to make himself an enemy of all that he reads, and, applying his mind to the core and margins of its content, attack it from every side."

— Ibn al-Haytham (Alhazen), 965-1039 AD

What is Alhazen?

Alhazen is an agentic curation system: Claude Code talks to a TypeDB knowledge graph, runs Python scripts, and builds structured understanding from unstructured sources — job postings, disease databases, scientific literature. You never write TypeQL or call APIs directly. Claude handles all of it.

The system has three layers:

  • Claude Code — the agentic interface. You talk to Claude; Claude does the work.
  • TypeDB — the knowledge graph backend, acting as the ontological memory. Schema-first design means concepts are defined before data is stored.
  • Skills — domain-specific modules combining a TypeDB schema namespace, Python scripts, and a SKILL.md instruction file.

Two Ways to Run Alhazen

A. Claude Code (Interactive / Development)

Open a Claude Code session in the project directory. Claude reads the skill files, calls Python scripts, and stores results in TypeDB. Best for exploration, sensemaking, and building new skills.

cd skillful-alhazen
make db-start    # start TypeDB
claude           # open Claude Code

B. OpenClaw (Persistent / Production)

OpenClaw deploys Alhazen as a persistent service — cron-scheduled foraging, Telegram notifications, always-on knowledge accumulation. No laptop required.

Telegram → OpenClaw → Claude Code → TypeDB
                    ↑
              cron forager (nightly)

See Deployment for the progression from local dev to OpenClaw on Mac Mini to OpenClaw on a VPS.

Production Skills

These two skills are production-ready for external data and persistent workflows:

Skill Description OpenClaw Use
Skills: Jobhunt Track job applications — automated forager, fit analysis, skill gap identification Nightly forager cron, Telegram triage notifications
Skills: Rare Disease Build 360° disease knowledge graphs from MONDO IDs — phenome, genome, therapeutome Batch ingestion from disease lists

Experimental Skills

These skills are internal explorations and development tools:

Skill Description
Skills: EPMC Search Search Europe PMC for scientific papers
Skills: APM Patient-centric rare disease investigation (Algorithm for Precision Medicine)
Skills: TechRecon Technology landscape reconnaissance
Skills: TypeDB Notebook Core knowledge operations (remember, recall, organize)
Skills: Domain Modeling Meta-skill for designing new domain skills

Why TypeDB?

TypeDB is not just a document store — it's the ontological foundation of Alhazen. The schema defines the concepts Claude reasons with:

identifiable-entity (abstract root)
├── domain-thing              # Real-world objects: diseases, genes, companies, jobs
├── collection                # Typed sets: investigations, search campaigns, corpora
└── information-content-entity (abstract)
    ├── artifact              # Raw captured content (API responses, HTML, PDFs)
    ├── fragment              # Extracted pieces (requirements, phenotype associations)
    └── note                  # Claude's analysis (fit scores, mechanism notes, syntheses)

This hierarchy guides skill design: a gene or a job posting is not information content. Only artifacts, fragments, and notes carry content. Domain objects are what you reason about; ICEs are what you reason with.

TypeDB's pattern-matching queries let Claude reason across skill boundaries — for example, linking a rare disease investigation (rare-disease skill) to a patient case (APM skill) via shared MONDO IDs.

Quick Example: Overnight Forager

With OpenClaw deployed on a Mac Mini:

10pm:  cron job triggers → job_forager.py heartbeat
       → searches Greenhouse, LinkedIn, Remotive
       → filters by your skill profile (min relevance 0.3)
       → stores 12 new candidates in TypeDB

10am:  you open Telegram
       → "12 new job candidates found overnight"
       → tap to triage: promote 3, dismiss 9

Later: Claude Code session
       → "Analyze the 3 promoted candidates"
       → Claude reads JD artifacts, runs sensemaking workflow
       → fit scores, skill gap notes, company research stored

Documentation

Document Description
Getting Started Installation and first steps
Deployment Local → Mac Mini → VPS progression
OpenClaw Configuration Gateway, cron jobs, Tailscale Serve
Skill Architecture How to build skills — the three-component pattern
Design Concepts Architecture and design principles
Schema Reference TypeDB schema docs — type hierarchy, ER diagrams, query examples
Dashboard Organization Next.js dashboard structure
History The story of Ibn al-Haytham and project origins

Links

Clone this wiki locally