logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·31.10.26
← Back to news

Keenable SELECT: an agent that searches the web in SQL

Original article
keenableai.github.io|31 points|6 comments|by phoenix120|Sep 1, 2026

Keenable SELECT: Web Search via SQL

Keenable SELECT is an advanced agentic system designed to treat the entire internet as a queryable database, allowing users to perform complex web research using SQL syntax.

The system generates comprehensive research reports where every output is backed by a transparent "trajectory"—a complete log of every query executed, the resulting tool outputs, and the final data sets.

🛠️ How the Process Works

When a user submits a complex request, such as: "Which AI researchers moved between frontier labs since 2025? For each move list the researcher, the lab they left, where they went and the month," the agent doesn't just "browse"; it executes a structured query.

The Logic Flow

Example SQL Execution

The agent translates the natural language request into a specialized SQL statement:

SELECT 
    SEM_EXTRACT(content, 'researcher'), 
    SEM_EXTRACT(content, 'left lab'), 
    SEM_EXTRACT(content, 'joined lab'), 
    SEM_EXTRACT(content, 'move month') 
FROM WEB_SEARCH(8 diverse queries) 
WHERE SEM_MATCH(content, 'named researcher moving between frontier labs, 2025+')

In terms of computational cost, the system optimizes the process: Total Cost=(Cheap SQL Filters)+∑(Expensive LLM Extractions per Row)\text{Total Cost} = (\text{Cheap SQL Filters}) + \sum (\text{Expensive LLM Extractions per Row})Total Cost=(Cheap SQL Filters)+∑(Expensive LLM Extractions per Row)


📚 Research Gallery

Below is a collection of reports generated by Keenable SELECT. These are not simple summaries; they are data-driven trajectories.

Report TopicDateMessagesQueriesLink
YC Startup-Name Morphology (20 yrs)2026-09-013618[Trajectory]
History of Search Engines (1982–2026)2026-08-311810[Trajectory]
US Gigawatt AI Data-Center Buildout2026-08-312010[Trajectory]
Documented Zoo Animal Escapes2026-08-312012[Trajectory]
SE Asian Casual Restaurants (Bay Area)2026-08-31189[Trajectory]
Copied/Inspired Bollywood Songs2026-08-311910[Trajectory]
Death by GPS: Water/Desert Incidents2026-08-31159[Trajectory]
Frontier AI Researcher Moves (2025+)2026-08-31169[Trajectory]
Global Great Bird Migrations2026-08-311710[Trajectory]
India's Famous Mango Origins Map2026-08-313116[Trajectory]
Open-Weight LLM Timeline (2026)2026-08-31149[Trajectory]
Marvel Screen Continuities (2005-26)2026-08-312412[Trajectory]
Mechanical Keyboard 10-Year Timeline2026-08-312010[Trajectory]
US Nearest Zoo Voronoi Atlas2026-08-312916[Trajectory]
Orbital Launch Atlas (1957–2026)2026-08-31169[Trajectory]
Popular Open-Source AI Agent Frameworks2026-08-31179[Trajectory]
Seattle/Bellevue Coffee Tour2026-08-31189[Trajectory]
AI Lab Founder Family Tree2026-08-312010[Trajectory]
Great-Chef Kitchen Lineage2026-08-31169[Trajectory]
US Specialty Coffee Roaster Atlas2026-08-31139[Trajectory]
Common EDC Pack Contents2026-08-31169[Trajectory]
Australia's Big Things Map/Route2026-08-27--[Trajectory]
Bay Area First-Date Playbook2026-08-27--[Trajectory]
Braintrust.dev Public Org Chart2026-08-27--[Trajectory]

⚙️ The Underlying System

Keenable SELECT operates as an MCP server featuring a primary tool called select.

Core Architecture

  • DuckDB Integration: Executes read-only SELECT statements on live web data.
  • Hybrid Execution: Semantic operators run outside DuckDB; their results are injected back into the row set for final SQL processing.
  • Efficiency: Can scan >1,000 pages and filter them via WHERE clauses without LLM overhead.
  • State Management: Every result set is assigned a unique id, allowing subsequent queries to reference previous data.
  • Reporting: A dedicated server model converts these rows into shareable HTML reports.

Semantic Operators Reference

OperatorFunctionalityDetail
WEB_SEARCH('q1', ...)Multi-query searchMerges ranked results and deduplicates URLs.
WEB_FETCH('url', ...)Content RetrievalConverts target URLs into Markdown (1 row per page).
SEM_EXTRACT(col, 'desc')Field ExtractionOne LLM call per row; returns value or null.
SEM_EXTRACT_ALL(col, 'val')List ExtractionSimilar to SEM_EXTRACT but returns a list of all matches.
SEM_SCORE(col, 'query')Relevance ScoringProvides a low-cost embedding score per row.
SEM_NORM(col)NormalizationAssigns identical keys to values with the same meaning.

Note: Operators support dynamic arguments, such as WEB_SEARCH(name || ' founding year').


🤖 The Dual-Agent Framework

Every report is the result of a collaboration between two distinct agents:

1. The Research Agent

This is a standard tool-loop LLM equipped with the select tool.

  • Behavior: It iteratively writes and executes queries until the research goal is met.
  • Transparency: It streams all tool calls and results as real-time events.
  • Continuity: Follow-up questions are handled by referencing the stored conversation transcript.

2. The Report Agent

Once data is gathered, this agent handles the presentation via the generate_html_report function.

  • Environment: Operates in a sandboxed Python session.
  • Data Handling: It accesses result sets as dataframes, ensuring data integrity by avoiding manual retyping by the LLM.
  • Quality Control:
    1. Renders a draft.
    2. Analyzes screenshots and JavaScript error counts.
    3. Iteratively fixes the document within a set budget before final publication.

System Diagram Placeholder