System Design Details
Blackhawk AI is a Flask and Supabase web application that answers questions against a document corpus using semantic search.
Key components include:
- Document Ingestion: Multi-format ingestion pipeline that chunks source documents into a 500-chunk searchable corpus.
- Vector Store: PostgreSQL with the pgvector extension stores embeddings for fast similarity search.
- Semantic Search: Queries are embedded and matched against the corpus, returning results in under 4 seconds.
- Q&A: The client can add authorized users who can then login and access the system.
- Admin Panel: Authenticated dashboard for managing the corpus and monitoring usage.
Development Process
The system grew from a prototype into a deployed application through three stages:
- Prototype: Started as a single-user command-line script for querying documents locally.
- Scale-up: Rebuilt as a multi-user Flask web application backed by Supabase, adding anonymous Q&A and an authenticated admin panel.
- Security Hardening: Cleared pre-launch security findings for stored XSS, debug-mode exposure, and missing HTTP security headers by adding input sanitization and hardening the Flask configuration.
Experience Gained
This project provided end-to-end experience taking a machine-learning-powered application from prototype to deployment.
Key skills developed include:
- Retrieval-Augmented Generation architecture, embeddings, and vector similarity search.
- Full-stack web development with Flask, Supabase, and PostgreSQL.
- Web application security: finding and remediating XSS, configuration, and HTTP-header vulnerabilities.