Files
Poc-dashboard/README.md
2025-10-14 11:33:14 +02:00

3.1 KiB

ODMDB Natural Language Query PoC

This is a Proof of Concept (PoC) that demonstrates the conversion of natural language queries into ODMDB search queries using OpenAI's structured output API.

Current Status

⚠️ Partial Implementation: Currently only the seekers object mapping is implemented. This PoC focuses on demonstrating the natural language to DSL query conversion for seeker-related searches.

Features

  • Converts natural language requests into ODMDB DSL queries
  • Handles temporal queries ("new seekers since last week")
  • Maps human-readable field names to schema fields
  • Validates output using Zod schema validation
  • Uses OpenAI's structured output for reliable JSON generation

Prerequisites

  • Node.js (v16 or higher)
  • OpenAI API key

Installation

  1. Install dependencies:

    npm install
    
  2. Set your OpenAI API key:

    export OPENAI_API_KEY=sk-your-api-key-here
    

Usage

Running the PoC

npm start

This will process the hardcoded natural language query and output the generated ODMDB query in JSON format.

Changing the Query

To test different natural language queries, edit the NL_QUERY constant in poc.js:

// Line 16 in poc.js
const NL_QUERY = "your natural language query here";

Example Queries

  • "give me new seekers since last week with email and experience"
  • "find recent seekers with job titles and salary expectations"
  • "show me seekers from yesterday with their skills"

Output Format

The PoC generates ODMDB queries in this format:

{
  "object": "seekers",
  "condition": ["prop.dt_create(>=:2025-10-06)"],
  "fields": ["alias", "email", "seekworkingyear"]
}

ODMDB DSL Support

The PoC understands and generates these ODMDB DSL patterns:

  • Property queries: prop.<field>(operator:value)
  • Index queries: idx.<indexName>(value)
  • Join queries: join(remoteObject:localKey:remoteProp:operator:value)

Field Mappings

Currently supports mapping for seekers object:

  • emailemail
  • experienceseekworkingyear
  • job titlesseekjobtitleexperience
  • statusseekstatus

Schema Context

The PoC can optionally load schema files for context:

  • main.json - Combined schema definitions
  • lg.json - Localization/language mappings

Limitations

  • Seekers only: Other ODMDB objects (jobads, recruiters, etc.) are not yet implemented
  • No execution: Only generates queries, doesn't execute them against ODMDB
  • Hardcoded query: Single query per run (no interactive mode)
  • Basic validation: Limited DSL syntax validation

Next Steps

  • Add support for other ODMDB objects (jobads, recruiters, etc.)
  • Interactive CLI for multiple queries
  • Integration with actual ODMDB backend
  • Enhanced field mapping and validation
  • Multi-turn conversation support

Files

  • poc.js - Main PoC implementation
  • package.json - Dependencies and scripts
  • main.json - Optional schema context (if available)
  • lg.json - Optional localization context (if available)