The best Hacker News stories from Show from the past day
Latest posts:
Show HN: Minimal – Open-Source Community driven Hardened Container Images
I would like to share Minimal - Its a open source collection of hardened container images build using Apko, Melange and Wolfi packages. The images are build daily, checked for updates and resolved as soon as fix is available in upstream source and Wolfi package. It utilizes the power of available open source solutions and contains commercially available images for free. Minimal demonstrates that it is possible to build and maintain hardened container images by ourselves.
Minimal will add more images support, and goal is to be community driven to add images as required and fully customizable.
Show HN: Phage Explorer
I got really interested in biology and genetics a few months ago, just for fun.<p>This was largely inspired by the work of Sydney Brenner, which became the basis of my brennerbot.org project.<p>In particular, I became very fascinated by phages, which are viruses that attack bacteria. They're the closest thing to the "fundamental particles" of biology: the minimal units of genetic code that do something useful that allows them to reproduce and spread.<p>They also have some incredible properties, like having a structure that somehow encodes an icosahedron.<p>I always wondered how the DNA of these things translated into geometry in the physical world. That mapping between the "digital" realm of ACGT, which in turn maps onto the 20 amino acids in groups of 3, and the world of 3D, analog shapes, still seems magical and mysterious to me.<p>I wanted to dig deeper into the subject, but not by reading a boring textbook. I wanted to get a sense for these phages in a tangible way. What are the different major types of phages? How do they compare to each other in terms of the length and structure of their genetic code? The physical structure they assume?<p>I decided to make a program to explore all this stuff in an interactive way.<p>And so I'm very pleased to present you with my open-source Phage Explorer:<p>phage-explorer.org<p>I probably went a bit overboard, because what I ended up with has taken a sickening number of tokens to generate, and resulted in ~150k lines of Typescript and Rust/Wasm.<p>It implements 23 analysis algorithms, over 40 visualizations, and has the complete genetic data and 3D structure of 24 different classes of phage.<p>It actually took a lot of engineering to make this work well in a browser; it's a surprising amount of data (this becomes obvious when you look at some of the 3D structure models).<p>It works fairly well on mobile, but if you want to get the full experience, I highly recommend opening it on a desktop browser in high resolution.<p>As far as I know, it's the most complete informational / educational software about phages available anywhere. Now, I am the first to admit that I'm NOT an expert, or even that knowledgeable, about, well, ANY of this stuff.<p>So if you’re a biology expert, please take a look and let me know what you think of what I've made! And if I've gotten anything wrong, please let me know in the GitHub Issues and I'll fix it:<p><a href="https://github.com/Dicklesworthstone/phage_explorer" rel="nofollow">https://github.com/Dicklesworthstone/phage_explorer</a>
Show HN: Moltbook – A social network for moltbots (clawdbots) to hang out
Hey everyone!<p>Just made this over the past few days.<p>Moltbots can sign up and interact via CLI, no direct human interactions.<p>Just for fun to see what they all talk about :)
Show HN: I trained a 9M speech model to fix my Mandarin tones
Built this because tones are killing my spoken Mandarin and I can't reliably hear my own mistakes.<p>It's a 9M Conformer-CTC model trained on ~300h (AISHELL + Primewords), quantized to INT8 (11 MB), runs 100% in-browser via ONNX Runtime Web.<p>Grades per-syllable pronunciation + tones with Viterbi forced alignment.<p>Try it here: <a href="https://simedw.com/projects/ear/" rel="nofollow">https://simedw.com/projects/ear/</a>
Show HN: Mystral Native – Run JavaScript games natively with WebGPU (no browser)
Hi HN, I've been building Mystral Native — a lightweight native runtime that lets you write games in JavaScript/TypeScript using standard Web APIs (WebGPU, Canvas 2D, Web Audio, fetch) and run them as standalone desktop apps. Think "Electron for games" but without Chromium. Or a JS runtime like Node, Deno, or Bun but optimized for WebGPU (and bundling a window / event system using SDL3).<p>Why: I originally started by starting a new game engine in WebGPU, and I loved the iteration loop of writing Typescript & instantly seeing the changes in the browser with hot reloading. After getting something working and shipping a demo, I realized that shipping a whole browser doesn't really work if I also want the same codebase to work on mobile. Sure, I could use a webview, but that's not always a good or consistent experience for users - there are nuances with Safari on iOS supporting WebGPU, but not the same features that Chrome does on desktop. What I really wanted was a WebGPU runtime that is consistent & works on any platform. I was inspired by deno's --unsafe-webgpu flag, but I realized that deno probably wouldn't be a good fit long term because it doesn't support iOS or Android & doesn't bundle a window / event system (they have "bring your own window", but that means writing a lot of custom code for events, dealing with windowing, not to mention more specific things like implementing a WebAudio shim, etc.). So that got me down the path of building a native runtime specifically for games & that's Mystral Native.<p>So now with Mystral Native, I can have the same developer experience (write JS, use shaders in WGSL, call requestAnimationFrame) but get a real native binary I can ship to players on any platform without requiring a webview or a browser. No 200MB Chromium runtime, no CEF overhead, just the game code and a ~25MB runtime.<p>What it does:
- Full WebGPU via Dawn (Chrome's implementation) or wgpu-native (Rust)
- Native window & events via SDL3
- Canvas 2D support (Skia), Web Audio (SDL3), fetch (file/http/https)
- V8 for JS (same engine as Chrome/Node), also supports QuickJS and JSC
- ES modules, TypeScript via SWC
- Compile to single binary (think "pkg"): `mystral compile game.js --include assets -o my-game`
- macOS .app bundles with code signing, Linux/Windows standalone executables
- Embedding API for iOS and Android (JSC/QuickJS + wgpu-native)<p>It's early alpha — the core rendering path works well & I've tested on Mac, Linux (Ubuntu 24.04), and Windows 11, and some custom builds for iOS & Android to validate that they can work, but there's plenty to improve. Would love to get some feedback and see where it can go!<p>MIT licensed.<p>Repo: <a href="https://github.com/mystralengine/mystralnative" rel="nofollow">https://github.com/mystralengine/mystralnative</a><p>Docs: <a href="https://mystralengine.github.io/mystralnative/" rel="nofollow">https://mystralengine.github.io/mystralnative/</a>
Show HN: Cicada – A scripting language that integrates with C
I wrote a lightweight scripting language that runs together with C. Specifically, it's a C library, you run it through a C function call, and it can callback your own C functions. Compiles to ~250 kB. No dependencies beyond the C standard library.<p>Key language features:
* Uses aliases not pointers, so it's memory-safe
* Arrays are N-dimensional and resizable
* Runs scripts or its own 'shell'
* Error trapping
* Methods, inheritance, etc.
* Customizable syntax
Show HN: Cicada – A scripting language that integrates with C
I wrote a lightweight scripting language that runs together with C. Specifically, it's a C library, you run it through a C function call, and it can callback your own C functions. Compiles to ~250 kB. No dependencies beyond the C standard library.<p>Key language features:
* Uses aliases not pointers, so it's memory-safe
* Arrays are N-dimensional and resizable
* Runs scripts or its own 'shell'
* Error trapping
* Methods, inheritance, etc.
* Customizable syntax
Show HN: I built an AI conversation partner to practice speaking languages
Hi,<p>I built TalkBits because most language apps focus on vocabulary or exercises, but not actual conversation. The hard part of learning a language is speaking naturally under pressure.<p>TalkBits lets you have real-time spoken conversations with an AI that acts like a native speaker. You can choose different scenarios (travel, daily life, work, etc.), speak naturally, and the AI responds with natural speech back.<p>The goal is to make it feel like talking to a real person rather than doing lessons.<p>Techwise, it uses realtime speech input, transcription, LLM responses, and tts streaming to keep latency low so the conversation feels fluid.<p>I’m specially interested in feedback about:
– Does it feel natural?
– Where does the conversation break immersion?
– What would make you use this regularly?<p>Happy to answer technical questions too.<p>Thanks
Show HN: I built an AI conversation partner to practice speaking languages
Hi,<p>I built TalkBits because most language apps focus on vocabulary or exercises, but not actual conversation. The hard part of learning a language is speaking naturally under pressure.<p>TalkBits lets you have real-time spoken conversations with an AI that acts like a native speaker. You can choose different scenarios (travel, daily life, work, etc.), speak naturally, and the AI responds with natural speech back.<p>The goal is to make it feel like talking to a real person rather than doing lessons.<p>Techwise, it uses realtime speech input, transcription, LLM responses, and tts streaming to keep latency low so the conversation feels fluid.<p>I’m specially interested in feedback about:
– Does it feel natural?
– Where does the conversation break immersion?
– What would make you use this regularly?<p>Happy to answer technical questions too.<p>Thanks
Show HN: Amla Sandbox – WASM bash shell sandbox for AI agents
WASM sandbox for running LLM-generated code safely.<p>Agents get a bash-like shell and can only call tools you provide, with constraints you define.
No Docker, no subprocess, no SaaS — just pip install amla-sandbox
Show HN: Amla Sandbox – WASM bash shell sandbox for AI agents
WASM sandbox for running LLM-generated code safely.<p>Agents get a bash-like shell and can only call tools you provide, with constraints you define.
No Docker, no subprocess, no SaaS — just pip install amla-sandbox
Show HN: Build Web Automations via Demonstration
Hey HN,<p>We’ve been building browser agents for a while. In production, we kept converging on the same pattern: deterministic scripts for the happy path, agents only for edge cases. So we built Demonstrate Mode.<p>The idea is simple: You perform your workflow once in a remote browser. Notte records the interactions and generates deterministic automation code.<p>How it works:
- Record clicks, inputs, navigations in a cloud browser
- Compile them into deterministic code (no LLM at runtime)
- Run and deploy on managed browser infrastructure<p>Closest analog is Playwright codegen but:
- Infrastructure is handled (remote browsers, proxies, auth state)
- Code runs in a deployable runtime with logs, retries, and optional agent fallback<p>Agents are great for prototyping and dynamic steps, but for production we usually want versioned code and predictable cost/behavior. Happy to dive into implementation details in the comments.<p>Demo: <a href="https://www.loom.com/share/f83cb83ecd5e48188dd9741724cde49a" rel="nofollow">https://www.loom.com/share/f83cb83ecd5e48188dd9741724cde49a</a><p>--
Andrea & Lucas,
Notte Founders
Show HN: Kolibri, a DIY music club in Sweden
We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like:
<a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere)
* the kind of acts we book (post-punk, darkwave, synth, adjacent electronic)
* enough context to copy parts of the format if you’re building something similar locally
* for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers
</code></pre>
How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.
Show HN: Kolibri, a DIY music club in Sweden
We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like:
<a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere)
* the kind of acts we book (post-punk, darkwave, synth, adjacent electronic)
* enough context to copy parts of the format if you’re building something similar locally
* for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers
</code></pre>
How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.
Show HN: Kolibri, a DIY music club in Sweden
We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like:
<a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere)
* the kind of acts we book (post-punk, darkwave, synth, adjacent electronic)
* enough context to copy parts of the format if you’re building something similar locally
* for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers
</code></pre>
How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.
Show HN: Shelvy Books
Hey HN! I built a little side project I wanted to share.<p>Shelvy is a free, visual bookshelf app where you can organize books you're reading, want to read, or have finished. Sign in to save your own collection.<p>Not monetized, no ads, no tracking beyond basic auth. Just a fun weekend project that grew a bit.<p>Live: <a href="https://shelvybooks.com" rel="nofollow">https://shelvybooks.com</a><p>Would love any feedback on the UX or feature ideas!
Show HN: SHDL – A minimal hardware description language built from logic gates
Hi, everyone!<p>I built SHDL (Simple Hardware Description Language) as an experiment in stripping hardware description down to its absolute fundamentals.<p>In SHDL, there are no arithmetic operators, no implicit bit widths, and no high-level constructs. You build everything explicitly from logic gates and wires, and then compose larger components hierarchically. The goal is not synthesis or performance, but understanding: what digital systems actually look like when abstractions are removed.<p>SHDL is accompanied by PySHDL, a Python interface that lets you load circuits, poke inputs, step the simulation, and observe outputs. Under the hood, SHDL compiles circuits to C for fast execution, but the language itself remains intentionally small and transparent.<p>This is not meant to replace Verilog or VHDL. It’s aimed at: - learning digital logic from first principles - experimenting with HDL and language design - teaching or visualizing how complex hardware emerges from simple gates.<p>I would especially appreciate feedback on: - the language design choices - what feels unnecessarily restrictive vs. educationally valuable - whether this kind of “anti-abstraction” HDL is useful to you.<p>Repo: <a href="https://github.com/rafa-rrayes/SHDL" rel="nofollow">https://github.com/rafa-rrayes/SHDL</a><p>Python package: PySHDL on PyPI<p>To make this concrete, here are a few small working examples written in SHDL:<p>1. Full Adder<p>component FullAdder(A, B, Cin) -> (Sum, Cout) {<p><pre><code> x1: XOR; a1: AND;
x2: XOR; a2: AND;
o1: OR;
connect {
A -> x1.A; B -> x1.B;
A -> a1.A; B -> a1.B;
x1.O -> x2.A; Cin -> x2.B;
x1.O -> a2.A; Cin -> a2.B;
a1.O -> o1.A; a2.O -> o1.B;
x2.O -> Sum; o1.O -> Cout;
}</code></pre>
}<p>2. 16 bit register<p># clk must be high for two cycles to store a value<p>component Register16(In[16], clk) -> (Out[16]) {<p><pre><code> >i[16]{
a1{i}: AND;
a2{i}: AND;
not1{i}: NOT;
nor1{i}: NOR;
nor2{i}: NOR;
}
connect {
>i[16]{
# Capture on clk
In[{i}] -> a1{i}.A;
In[{i}] -> not1{i}.A;
not1{i}.O -> a2{i}.A;
clk -> a1{i}.B;
clk -> a2{i}.B;
a1{i}.O -> nor1{i}.A;
a2{i}.O -> nor2{i}.A;
nor1{i}.O -> nor2{i}.B;
nor2{i}.O -> nor1{i}.B;
nor2{i}.O -> Out[{i}];
}
}</code></pre>
}<p>3. 16-bit Ripple-Carry Adder<p>use fullAdder::{FullAdder};<p>component Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) {<p><pre><code> >i[16]{ fa{i}: FullAdder; }
connect {
A[1] -> fa1.A;
B[1] -> fa1.B;
Cin -> fa1.Cin;
fa1.Sum -> Sum[1];
>i[2,16]{
A[{i}] -> fa{i}.A;
B[{i}] -> fa{i}.B;
fa{i-1}.Cout -> fa{i}.Cin;
fa{i}.Sum -> Sum[{i}];
}
fa16.Cout -> Cout;
}
}</code></pre>
Show HN: SHDL – A minimal hardware description language built from logic gates
Hi, everyone!<p>I built SHDL (Simple Hardware Description Language) as an experiment in stripping hardware description down to its absolute fundamentals.<p>In SHDL, there are no arithmetic operators, no implicit bit widths, and no high-level constructs. You build everything explicitly from logic gates and wires, and then compose larger components hierarchically. The goal is not synthesis or performance, but understanding: what digital systems actually look like when abstractions are removed.<p>SHDL is accompanied by PySHDL, a Python interface that lets you load circuits, poke inputs, step the simulation, and observe outputs. Under the hood, SHDL compiles circuits to C for fast execution, but the language itself remains intentionally small and transparent.<p>This is not meant to replace Verilog or VHDL. It’s aimed at: - learning digital logic from first principles - experimenting with HDL and language design - teaching or visualizing how complex hardware emerges from simple gates.<p>I would especially appreciate feedback on: - the language design choices - what feels unnecessarily restrictive vs. educationally valuable - whether this kind of “anti-abstraction” HDL is useful to you.<p>Repo: <a href="https://github.com/rafa-rrayes/SHDL" rel="nofollow">https://github.com/rafa-rrayes/SHDL</a><p>Python package: PySHDL on PyPI<p>To make this concrete, here are a few small working examples written in SHDL:<p>1. Full Adder<p>component FullAdder(A, B, Cin) -> (Sum, Cout) {<p><pre><code> x1: XOR; a1: AND;
x2: XOR; a2: AND;
o1: OR;
connect {
A -> x1.A; B -> x1.B;
A -> a1.A; B -> a1.B;
x1.O -> x2.A; Cin -> x2.B;
x1.O -> a2.A; Cin -> a2.B;
a1.O -> o1.A; a2.O -> o1.B;
x2.O -> Sum; o1.O -> Cout;
}</code></pre>
}<p>2. 16 bit register<p># clk must be high for two cycles to store a value<p>component Register16(In[16], clk) -> (Out[16]) {<p><pre><code> >i[16]{
a1{i}: AND;
a2{i}: AND;
not1{i}: NOT;
nor1{i}: NOR;
nor2{i}: NOR;
}
connect {
>i[16]{
# Capture on clk
In[{i}] -> a1{i}.A;
In[{i}] -> not1{i}.A;
not1{i}.O -> a2{i}.A;
clk -> a1{i}.B;
clk -> a2{i}.B;
a1{i}.O -> nor1{i}.A;
a2{i}.O -> nor2{i}.A;
nor1{i}.O -> nor2{i}.B;
nor2{i}.O -> nor1{i}.B;
nor2{i}.O -> Out[{i}];
}
}</code></pre>
}<p>3. 16-bit Ripple-Carry Adder<p>use fullAdder::{FullAdder};<p>component Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) {<p><pre><code> >i[16]{ fa{i}: FullAdder; }
connect {
A[1] -> fa1.A;
B[1] -> fa1.B;
Cin -> fa1.Cin;
fa1.Sum -> Sum[1];
>i[2,16]{
A[{i}] -> fa{i}.A;
B[{i}] -> fa{i}.B;
fa{i-1}.Cout -> fa{i}.Cin;
fa{i}.Sum -> Sum[{i}];
}
fa16.Cout -> Cout;
}
}</code></pre>
Show HN: Cursor for Userscripts
I’ve been experimenting with embedding an Claude Code/Cursor-style coding agent directly into the browser.<p>At a high level, the agent generates and maintains userscripts and CSS that are re-applied on page load. Rather than just editing DOM via JS in console the agent is treating the page, and the DOM as a file.<p>The models are often trained in RL sandboxes with full access to the filesystem and bash, so they are really good at using it. So to make the agent behave well, I've simulated this environment.<p>The whole state of a page and scripts is implemented as a virtual filesystem hacked on top of browser.local storage. URL is mapped to directories, and the agent starts inside this directory. It has the tools to read/edit files, grep around and a fake bash command that is just used for running scripts and executing JS code.<p>I've tested only with Opus 4.5 so far, and it works pretty reliably.
The state of the file system can be synced to the real filesystem, although because Firefox doesn't support Filesystem API, you need to manually import the fs contents first.<p>This agent is <i>really</i> useful for extracting things to CSV, but it's also can be used for fun.<p>Demo: <a href="https://x.com/ichebykin/status/2015686974439608607" rel="nofollow">https://x.com/ichebykin/status/2015686974439608607</a>
Show HN: ShapedQL – A SQL engine for multi-stage ranking and RAG
Hi HN,<p>I’m Tullie, founder of Shaped. Previously, I was a researcher at Meta AI, worked on ranking for Instagram Reels, and was a contributor to PyTorch Lightning.<p>We built ShapedQL because we noticed that while retrieval (finding 1,000 items) has been commoditized by vector DBs, ranking (finding the best 10 items) is still an infrastructure problem.<p>To build a decent for you feed or a RAG system with long-term memory, you usually have to put together a vector DB (Pinecone/Milvus), a feature store (Redis), an inference service, and thousands of lines of Python to handle business logic and reranking.<p>We built an engine that consolidates this into a single SQL dialect. It compiles declarative queries into high-performance, multi-stage ranking pipelines.<p>HOW IT WORKS:<p>Instead of just SELECT <i>, ShapedQL operates in four stages native to recommendation systems:<p>RETRIEVE: Fetch candidates via Hybrid Search (Keywords + Vectors) or Collaborative Filtering.
FILTER: Apply hard constraints (e.g., "inventory > 0").
SCORE: Rank results using real-time models (e.g., p(click) or p(relevance)).
REORDER: Apply diversity logic so your Agent/User doesn’t see 10 nearly identical results.<p>THE SYNTAX: Here is what a RAG query looks like. This replaces about 500 lines of standard Python/LangChain code:<p>SELECT item_id, description, price<p>FROM<p><pre><code> -- Retrieval: Hybrid search across multiple indexes
search_flights("$param.user_prompt", "$param.context"),
search_hotels("$param.user_prompt", "$param.context")
</code></pre>
WHERE<p><pre><code> -- Filtering: Hard business constraints
price <= "$param.budget" AND is_available("$param.dates")
</code></pre>
ORDER BY<p><pre><code> -- Scoring: Real-time reranking (Personalization + Relevance)
0.5 * preference_score(user, item) +
0.3 * relevance_score(item, "$param.user_prompt")
</code></pre>
LIMIT 20<p>If you don’t like SQL, you can also use our Python and Typescript SDKs. I’d love to know what you think of the syntax and the abstraction layer!</i>