Himansh Raj

BlackTable: An LLM Document-Analysis API

· 3 min read

BlackTable: An LLM Document-Analysis API

BlackTable is a recruitment toolkit I built as a FastAPI service, aimed at automating the document-heavy parts of hiring. The core idea was to take the messy inputs recruiters actually deal with — resumes in different formats, job descriptions, application responses — and turn them into structured, comparable data through RAG and LLM pipelines.

It's less a single feature and more a set of composable pipelines around documents.

The document problem first

Before any AI could help, the ingestion had to be solid. Resumes arrive in PDF, DOCX, DOC, and TXT, and inconsistent parsing would poison everything downstream. BlackTable uses Docling for document processing, which lets the rest of the system assume a clean, standardized representation.

Getting this layer right was the unglamorous foundation:

  • Extract structured data — personal info, work experience, education, skills, projects — from varied formats.
  • Produce a consistent resume shape so every candidate is evaluated on the same terms.
  • Support parsing from both files and raw text.

The pipelines on top

With clean documents in hand, the service exposes a handful of focused capabilities, each as its own module and API endpoint:

  • Resume Parser — turns a raw file into standardized structured data.
  • FIT Score Matcher — computes a 0–100 candidate-job fit score, plus strengths, gaps, and a hiring recommendation.
  • Question Generator — creates standard and personalized interview questions across rounds (screening, technical, behavioral, final, HR), with adjustable focus and difficulty.
  • Application Analyzer — reviews a full application, including pre-screening responses, and produces a recommendation with a confidence level.

Each of these is reachable both as a Python module and through a POST endpoint, so the same logic works from a script or over HTTP.

Design choices I'd repeat

Building BlackTable pushed a few habits that I think generalize beyond recruiting:

  • Standardize inputs before doing anything smart. Docling handling the format zoo meant the LLM pipelines never had to care where a document came from.
  • Split capabilities into separate modules. Parser, fit score, questions, and analyzer each own one job, which made them easy to test independently.
  • Keep an API and a library in step. Every feature is callable in code and over HTTP, so it fits into different workflows without duplication.

The result is a service where the AI parts are actually the small, swappable pieces sitting on top of a boring-but-reliable document layer — which, honestly, is where most of the durability comes from.

If you want to check out the project directly, here it is: BlackTable on GitHub.