Boo
Overview · Features · Modes · Requirements · Setup · Installation · Run · Configuration · Architecture · Capabilities ·
Boo is a Python application for running provider-aware artificial intelligence workflows across OpenAI GPT, Google Gemini, and xAI Grok. It supports text generation, image generation and analysis, image editing, audio transcription, audio translation, text-to-speech, embeddings, document question answering, file operations, vector stores, file-search stores, Google Cloud bucket workflows, prompt engineering, data export, and SQLite-backed data management.
Boo is designed for federal data analysis, budget execution support, document review, knowledge retrieval, prompt management, multimodal artificial intelligence experimentation, and controlled local analytical data operations.
🎥 Demo
☁️ Cloud
|
|
|
|
|
|
🧠 LLM
Boo includes a custom compact, instruction-tuned model package intended for local or edge-oriented experimentation. The Streamlit application itself is provider-aware and API-first, while the model artifact remains decoupled from the repository.
The model is useful for:
- Lightweight reasoning.
- Concise instruction following.
- Summarization.
- Light code synthesis.
- RAG-agent experimentation.
- Local or edge deployments where latency and footprint matter.
🧰 Overview
Boo wraps provider-specific helper modules and exposes them through a single Streamlit interface. The application uses a sidebar provider selector and a provider-filtered mode selector to present only workflows supported by the selected provider.
Provider modules imported by the application include:
| Provider | Module | Primary Role |
|---|---|---|
| GPT | gpt.py |
OpenAI text, image, audio, embedding, file, and vector-store workflows |
| Gemini | gemini.py |
Gemini text, image, audio, embedding, file-search, and Google Cloud workflows |
| Grok | grok.py |
xAI Grok text, image, collection, and provider-supported workflows |
The app initializes provider API keys, Google service keys, cloud settings, session-state defaults,
provider-wrapper aliases, chat history, prompt records, embedding tables, and imported data tables.
It then dispatches each mode through shared wrapper names such as Chat, Images, Embeddings,
TTS, Transcription, Translation, Files, VectorStores, FileSearch, and CloudBuckets.
✨ Features
- Provider-aware interface for GPT, Gemini, and Grok workflows.
- Dynamic mode filtering so unsupported provider/mode combinations are hidden or blocked.
- Text generation controls for model, reasoning, modalities, media resolution, response count, temperature, Top-P, Top-K, frequency penalty, presence penalty, tools, include fields, tool choice, Google grounding, parallel tools, URL context, allowed domains, vector stores, collections, JSON schema output, stop sequences, storage, streaming, background execution, and conversation state.
- Image workflows for generation, analysis, and editing with provider-specific model routing, uploaded image handling, mask support, MIME/output options, aspect ratio, quality, style, background, grounding, image search, tools, includes, and rendered output history.
- Audio workflows for text-to-speech, transcription, and translation with uploaded files, browser recordings, playback controls, voice options, output format, sample rate, and runtime inference settings.
- Embedding mode with provider embedding models, encoding format, dimensions, chunk size, overlap, chunk inspection, embedding metrics, usage tracking, and vector output display.
- Document Q&A with local document loading, PyMuPDF extraction, chunking, embeddings,
sqlite-vecretrieval when available, and cosine-similarity fallback. - Files mode for provider file upload, metadata retrieval, deletion, listing, and file-backed workflows where supported.
- Vector Stores mode for creating, retrieving, deleting, batching, uploading, and attaching files to provider-supported vector stores or collection-like storage.
- File Search Stores mode for Gemini file-search store management.
- Google Cloud Buckets mode for Gemini/Google Cloud bucket creation, retrieval, deletion, and upload workflows.
- Prompt Engineering mode backed by the local SQLite
Promptstable. - Export mode for exporting local application data and assets where configured.
- Data Management mode for SQLite import, browsing, CRUD operations, profiling, filtering, aggregation, visualization, administration, and guarded SQL queries.
- Token usage tracking for last call and accumulated session usage where provider responses expose usage metadata.
- Fixed footer status bar showing provider, mode, model, and active runtime settings.
🧩 Application Modes
| Mode | Description |
|---|---|
Text |
Provider-aware text generation with system prompts, tools, grounding, URL context, vector/collection retrieval, response schemas, and streaming. |
Images |
Image generation, image analysis, and image editing through provider-specific image wrappers. |
Audio |
Text-to-speech, audio transcription, audio translation, uploaded audio processing, recording, and playback. |
Embedding |
Text normalization, chunking, embedding generation, metrics, usage, and vector inspection. |
Document Q&A |
Upload and process documents, retrieve relevant chunks, and ask document-grounded questions. |
Files |
Manage provider file upload, retrieval, listing, metadata, and deletion workflows. |
Vector Stores |
Create, retrieve, delete, batch, upload, and attach files to provider vector stores or collection-like storage. |
File Search Stores |
Manage Gemini file-search stores and upload supported files. |
Google Cloud Buckets |
Create, retrieve, delete, and upload files to Google Cloud bucket-backed workflows. |
Prompt Engineering |
Manage reusable prompts in the local SQLite Prompts table. |
Export |
Export local data, prompts, and application assets where configured. |
Data Management |
Import, browse, edit, profile, filter, aggregate, visualize, administer, and query SQLite data. |
🛠️ Requirements
| Requirement | Purpose |
|---|---|
| Python 3.10+ | Runtime environment |
| Streamlit | Web application framework |
| OpenAI Python SDK | GPT provider workflows |
| google-genai / Gemini SDK dependencies | Gemini provider workflows |
| xAI / Grok wrapper dependencies | Grok provider workflows |
| pandas | DataFrame operations, SQL import, table display, and export workflows |
| numpy | Vector math and cosine similarity |
| plotly.express / plotly.graph_objects | Interactive visualizations |
| tiktoken | Token counting for text and embedding workflows |
| sentence-transformers | Local document embedding model for retrieval workflows |
| sqlite-vec | Optional SQLite vector table support for Document Q&A |
PyMuPDF / fitz |
PDF text extraction and preview support |
| openpyxl | Excel workbook import support through pandas |
| boogr | Application error handling |
| config.py | Provider lists, mode maps, model lists, paths, labels, help text, and API defaults |
| SQLite | Local persistence for prompts, chat history, embeddings, and imported data |
🔑 API Key Setup
Boo reads API and cloud configuration from config.py, environment variables, and Streamlit session
state. Sidebar-entered values override configuration defaults for the current session and mirror the
values into environment variables.
| Key / Setting | Used For |
|---|---|
OPENAI_API_KEY |
GPT/OpenAI API access |
GEMINI_API_KEY |
Gemini API access |
GOOGLE_API_KEY |
Google API access and Gemini-related services |
GOOGLE_CSE_ID |
Google Custom Search integration |
GOOGLEMAPS_API_KEY |
Google Maps-related workflows |
GEOCODING_API_KEY |
Geocoding workflows where configured |
GEOAPIFY_API_KEY |
Geoapify workflows where configured |
GOOGLE_CLOUD_PROJECT_ID |
Google Cloud project routing |
GOOGLE_CLOUD_LOCATION |
Google Cloud regional configuration |
XAI_API_KEY |
xAI Grok API access |
Helpful setup references:
📦 Installation
1. Clone the Repository
git clone https://github.com/is-leeroy-jenkins/Boo.git
cd Boo
2. Create and Activate a Virtual Environment
Windows PowerShell:
python -m venv .venv
.venv\Scripts\Activate.ps1
Command Prompt:
python -m venv .venv
.venv\Scripts\activate.bat
macOS / Linux:
python -m venv .venv
source .venv/bin/activate
3. Install Dependencies
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
⚙️ Configuration
Set the required values in config.py, environment variables, or the Streamlit sidebar.
Example environment variables:
export OPENAI_API_KEY="your-openai-api-key"
export GEMINI_API_KEY="your-gemini-api-key"
export GOOGLE_API_KEY="your-google-api-key"
export GOOGLE_CSE_ID="your-google-custom-search-id"
export GOOGLEMAPS_API_KEY="your-google-maps-api-key"
export GEOCODING_API_KEY="your-geocoding-api-key"
export GEOAPIFY_API_KEY="your-geoapify-api-key"
export GOOGLE_CLOUD_PROJECT_ID="your-google-cloud-project-id"
export GOOGLE_CLOUD_LOCATION="us-central1"
export XAI_API_KEY="your-xai-api-key"
Windows PowerShell:
setx OPENAI_API_KEY "your-openai-api-key"
setx GEMINI_API_KEY "your-gemini-api-key"
setx GOOGLE_API_KEY "your-google-api-key"
setx GOOGLE_CSE_ID "your-google-custom-search-id"
setx GOOGLEMAPS_API_KEY "your-google-maps-api-key"
setx GEOCODING_API_KEY "your-geocoding-api-key"
setx GEOAPIFY_API_KEY "your-geoapify-api-key"
setx GOOGLE_CLOUD_PROJECT_ID "your-google-cloud-project-id"
setx GOOGLE_CLOUD_LOCATION "us-central1"
setx XAI_API_KEY "your-xai-api-key"
Important config.py objects include:
| Configuration Object | Purpose |
|---|---|
PROVIDERS |
Provider names and backing module labels |
GPT_MODES / GEMINI_MODES / GROK_MODES |
Provider-specific mode lists |
MODE_CLASS_MAP / PROVIDER_CLASS_MAP |
Mode-to-wrapper routing |
CLASS_MODE_MAP |
Provider-to-mode routing before runtime filtering |
LOGO_MAP |
Provider logo mapping for the sidebar |
DB_PATH |
SQLite database path |
BLUE_DIVIDER |
Shared divider markup |
XML_BLOCK_PATTERN |
XML-like delimiter pattern used for prompt conversion |
🚀 Running the Streamlit Application
From the project root:
streamlit run app.py
Once running, the application is available at:
http://localhost:8501
🧠 Provider Dispatch
Boo uses common wrapper names and provider-specific modules to keep the UI stable while switching between GPT, Gemini, and Grok.
| Dispatch Function | Wrapper Returned |
|---|---|
get_chat_module() |
Chat |
get_images_module() |
Images |
get_embeddings_module() |
Embeddings |
get_tts_module() |
TTS |
get_transcription_module() |
Transcription |
get_translation_module() |
Translation |
get_files_module() |
Files |
get_vectorstores_module() |
VectorStores |
get_file_search_module() |
FileSearch |
get_cloud_buckets_module() |
CloudBuckets |
The sidebar uses provider mode filtering so a provider only exposes modes that are configured and supported by the available wrapper classes.
💬 Text Generation
The Text mode provides provider-aware chat and text generation through the selected provider's
Chat wrapper.
Supported control groups include:
| Control Group | Options |
|---|---|
| Model Settings | Model, reasoning, modalities, media resolution, response count |
| Inference Settings | Top-P, Top-K, temperature, frequency penalty, presence penalty |
| Tools / Grounding Settings | Tools, include fields, tool choice, max tool calls, Google grounding, parallel tools, max URLs, input mode, URLs, allowed domains, vector store IDs, Grok collection IDs |
| Output / Response Settings | Max tokens, response format, store, stream, background, JSON schema name, JSON schema body, strict schema, stop sequences |
| System Instructions | Instruction editor, prompt-template loading, clear button, XML-to-Markdown conversion |
Text mode supports:
- GPT vector store IDs for file-search-enabled responses.
- Gemini Google Search grounding.
- Gemini file-search store names when exposed by the wrapper.
- Grok collection IDs and configured xAI collection labels.
- Conversation or single-turn input modes.
- Provider-safe JSON schema payload construction for GPT and Grok.
- Source rendering when a provider wrapper exposes grounding or file-search sources.
📷 Images
The Images mode supports provider-aware image generation, image analysis, and image editing.
Image controls include:
- Workflow mode:
Generation,Analysis, orEditing. - Provider-specific image model selection.
- Response count.
- Temperature, Top-P, Top-K, frequency penalty, presence penalty, and max tokens.
- Tools, include fields, tool choice, allowed domains, max tool calls, and max searches.
- Google grounding and image-search options where supported.
- Image size, quality, style, background, aspect ratio, detail, compression, MIME type, output type, media resolution, and response modality.
- Uploaded image support for analysis and editing.
- Optional mask upload for editing where supported.
- Rendered image output from bytes, paths, URLs, dictionaries, provider objects, or lists.
🎧 Audio
The Audio mode supports provider-aware audio workflows.
| Workflow | Description |
|---|---|
| Text-to-Speech | Generate audio output from text |
| Transcribe | Convert uploaded or recorded audio into text |
| Translate | Translate uploaded or recorded audio into the selected output language |
Audio controls include:
- Task selection.
- Model selection.
- Voice selection.
- Output format.
- Language selection.
- Sample rate.
- Playback start and end time.
- Loop and autoplay.
- Temperature, Top-P, Top-K, frequency penalty, presence penalty, and max tokens.
- System prompt template support.
- Uploaded audio file or browser recording input.
🔢 Embeddings
The Embedding mode supports provider embedding workflows.
Embedding controls include:
- Embedding model selection.
- Encoding format selection.
- Dimension selection.
- Chunk-size control.
- Chunk-overlap control.
- Text input or file input where configured.
- Text normalization and chunking.
- Embedding vector generation.
- Metrics display.
- Chunk inspection.
- Usage metadata display.
- Data editor rendering for embedding vectors.
📓 Document Q&A
The Document Q&A mode supports retrieval-augmented document answering.
Supported document behavior includes:
- Uploading document bytes into Streamlit session state.
- Extracting PDF text with PyMuPDF where available.
- Defensive decoding for text-like files.
- Chunking document text.
- Generating local embeddings with
sentence-transformers. - Creating a
sqlite-vecvirtual table when available. - Falling back to in-memory cosine similarity when vector-table retrieval is unavailable.
- Building document-grounded prompts from retrieved excerpts.
- Routing document prompts through the selected provider's
Chatwrapper.
The document prompt instructs the model to answer from retrieved excerpts and state when the excerpts do not contain enough information.
📚 Files
The Files mode exposes provider file workflows through the selected provider's Files wrapper.
Common workflows include:
- File upload.
- File listing.
- File metadata retrieval.
- File deletion.
- File ID tracking.
- Provider-compatible temporary file saving.
- File-backed prompt workflows where supported.
🏛️ Vector Stores
The Vector Stores mode exposes provider vector-store or collection-like storage workflows.
Supported workflows include:
| Workflow | Description |
|---|---|
| Create | Create a vector store or collection |
| Retrieve | Retrieve store metadata |
| Delete | Delete a selected store |
| Batch | Attach multiple file IDs to a selected store |
| Upload + Attach | Upload a supported file and attach it to a selected store |
Supported upload types include:
pdftxtmddocxpngjpgjpegjsoncsv
📦 File Search Stores
The File Search Stores mode supports Gemini file-search store management through the FileSearch
wrapper. The mode is explicitly limited to Gemini and stops with a warning when another provider is
selected.
Supported workflows include:
| Workflow | Description |
|---|---|
| Create | Create a new file-search store |
| Retrieve | Retrieve store metadata |
| Delete | Delete a selected file-search store |
| Upload | Upload supported files to the selected store |
Supported upload types include:
pdftxtmddocxpngjpgjpeg
🧊 Google Cloud Buckets
The Google Cloud Buckets mode supports Google Cloud bucket management through the CloudBuckets
wrapper.
Supported workflows include:
| Workflow | Description |
|---|---|
| Create | Create a new cloud bucket |
| Retrieve | Retrieve cloud bucket metadata |
| Delete | Delete a selected cloud bucket |
| Upload | Upload supported files through the available wrapper upload method |
📝 Prompt Engineering
The Prompt Engineering mode manages reusable prompts stored in the local SQLite Prompts table.
Prompt records include:
| Field | Description |
|---|---|
PromptsId |
Primary key |
Caption |
Display caption used by template selectors |
Name |
Prompt name |
Text |
Prompt body |
Version |
Prompt version |
ID |
External or user-defined identifier |
Prompt Engineering supports:
- Prompt search.
- Prompt sorting.
- Prompt pagination.
- Prompt selection.
- Prompt editing.
- Prompt insertion.
- Prompt update.
- Prompt deletion.
- Cascading selected prompts into system instructions where configured.
📤 Export
The Export mode supports local export workflows where configured, including prompt, chat, data,
or generated asset export paths.
🏛️ Data Management
The Data Management mode provides a SQLite administration and exploration interface.
Tabs include:
| Tab | Purpose |
|---|---|
| Import | Import Excel workbook sheets into SQLite tables |
| Browse | Browse existing SQLite tables |
| CRUD | Insert, update, and delete table rows |
| Explore | Page through table records |
| Filter | Filter rows by column text containment or advanced conditions |
| Aggregate | Run numeric aggregations |
| Visualize | Render charts from table data |
| Admin | Profile data, drop tables, create indexes, create tables, view schema, and alter tables |
| SQL | Execute guarded read-only SQL and download query results as CSV |
Visualization options include:
- Histogram.
- Bar chart.
- Line chart.
- Scatter plot.
- Box plot.
- Pie chart.
- Correlation heatmap.
SQL execution is guarded by a read-only validator that allows SELECT, WITH, EXPLAIN, and
read-oriented PRAGMA statements while blocking destructive operations such as INSERT, UPDATE,
DELETE, DROP, ALTER, CREATE, ATTACH, DETACH, VACUUM, REPLACE, and TRIGGER.
🧩 Design and Architecture
Boo uses a provider-aware layered Streamlit architecture:
| Layer | Description |
|---|---|
| UI Layer | Streamlit sidebar, expanders, tabs, chat messages, uploaders, data editors, audio controls, and charts |
| Provider Layer | GPT, Gemini, and Grok provider selection and runtime mode filtering |
| Mode Layer | Text, Images, Audio, Embedding, Document Q&A, Files, Vector Stores, File Search Stores, Buckets, Prompt Engineering, Export, and Data Management blocks |
| Wrapper Layer | Common wrapper names dispatched to provider modules: Chat, Images, Embeddings, TTS, Transcription, Translation, Files, VectorStores, FileSearch, and CloudBuckets |
| Runtime Configuration Layer | API-key/session-state configuration for OpenAI, Gemini, Google, Google Custom Search, Google Maps, Google Cloud, Geoapify, and xAI |
| Persistence Layer | SQLite database under stores/sqlite |
| Retrieval Layer | PyMuPDF extraction, sentence-transformers, sqlite-vec, chunking, and cosine similarity fallback |
| Utility Layer | Token counting, file saving, storage-object normalization, markdown/XML conversion, usage tracking, error handling, and display-safe table rendering |
Architecture diagram:
┌──────────────────────────────────────────────┐
│ Boo Streamlit App │
│ │
│ Provider: GPT | Gemini | Grok │
│ │
│ Modes: Text | Images | Audio | Embedding │
│ Document Q&A | Files | Vector Stores │
│ File Search Stores | Google Cloud Buckets │
│ Prompt Engineering | Export | Data Mgmt │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Provider Dispatch Layer │
│ │
│ gpt.py | gemini.py | grok.py │
│ Chat | Images | Embeddings | TTS │
│ Transcription | Translation | Files │
│ VectorStores | FileSearch | CloudBuckets │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Configuration + State │
│ │
│ config.py | environment variables │
│ Streamlit session state │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ SQLite Persistence │
│ │
│ chat_history | embeddings | Prompts │
│ imported data tables │
└──────────────────────────────────────────────┘
💻 Capabilities
| Capability | Description |
|---|---|
| Provider Switching | Select GPT, Gemini, or Grok from the sidebar |
| Mode Filtering | Shows modes supported by the selected provider and configured wrappers |
| Text Generation | Provider-aware chat and prompt response generation |
| Google Grounding | Optional Gemini Google Search grounding in Text mode |
| URL Context | URL inputs can be added to Text mode context |
| Vector Retrieval | GPT vector store IDs and Grok collection IDs can be routed through Text mode |
| System Prompts | System-instruction text areas with template loading and XML/Markdown conversion |
| JSON Schema Output | GPT/Grok schema payload construction from response-format controls |
| Image Generation | Prompt-to-image generation through provider image wrappers |
| Image Analysis | Uploaded image analysis using provider vision/image models |
| Image Editing | Uploaded image editing with optional masks where supported |
| Audio Transcription | Uploaded or recorded audio converted to text |
| Audio Translation | Uploaded or recorded audio translated into the selected language |
| Text-to-Speech | Text converted into generated audio |
| Embeddings | Text chunking and vector generation |
| Document Q&A | Retrieval-augmented document question answering |
| Files API | Provider file upload and metadata workflows |
| Vector Stores | Store creation, retrieval, deletion, batch attachment, and upload workflows |
| File Search Stores | Gemini file-search store creation, retrieval, deletion, and upload |
| Google Cloud Buckets | Cloud bucket creation, retrieval, deletion, and upload |
| Prompt Engineering | SQLite-backed reusable prompt management |
| Data Export | Export workflows for local data and application assets |
| Data Management | SQLite import, browse, CRUD, profile, filter, aggregate, visualize, administer, and SQL query workflows |
| Token Usage | Last-call and accumulated token usage tracking where response metadata is available |
📁 File Organization
| File / Folder | Description |
|---|---|
app.py |
Main Streamlit application |
gpt.py |
GPT/OpenAI wrapper classes |
gemini.py |
Gemini wrapper classes |
grok.py |
Grok/xAI wrapper classes |
config.py |
Constants, paths, provider maps, model lists, API defaults, UI labels, and help text |
requirements.txt |
Python package requirements |
stores/sqlite/Data.db |
Local SQLite database for prompts, chat history, embeddings, and imported data |
resources/images |
Project images, logos, and README assets |
resources/setup |
API key and setup documentation |
🧪 Example Usage
Text Generation
from gpt import Chat
chat = Chat()
response = chat.generate_text(
prompt="Explain how random forests reduce overfitting.",
model="gpt-5-mini"
)
print(response)
Gemini Text Generation
from gemini import Chat
chat = Chat()
response = chat.generate_text(
prompt="Summarize the purpose of retrieval augmented generation.",
model="gemini-2.5-flash"
)
print(response)
Grok Text Generation
from grok import Chat
chat = Chat()
response = chat.generate_text(
prompt="Create three concise bullets about semantic search.",
model="grok-4"
)
print(response)
Embeddings
from gpt import Embeddings
embedding = Embeddings()
vectors = embedding.create(
text=["Federal budget execution requires accurate obligations tracking."],
model="text-embedding-3-small"
)
print(vectors)
Image Generation
from gpt import Images
images = Images()
result = images.generate(
prompt="A clean technical diagram of a retrieval augmented generation pipeline.",
model="gpt-image-1"
)
print(result)
Audio Transcription
from gpt import Transcription
transcriber = Transcription()
text = transcriber.transcribe("audio/meeting.m4a")
print(text)
SQLite Prompt Query
import sqlite3
with sqlite3.connect("stores/sqlite/Data.db") as conn:
rows = conn.execute(
"SELECT PromptsId, Caption, Name, Version FROM Prompts ORDER BY PromptsId DESC"
).fetchall()
print(rows)
🧮 Runtime Parameters
Boo exposes the following active runtime parameters across modes:
| Parameter | Purpose |
|---|---|
| Provider | Selected provider: GPT, Gemini, or Grok |
| Mode | Current workflow mode |
| Model | Provider-specific model selection |
| Temperature | Sampling randomness |
| Top-P | Nucleus sampling probability |
| Top-K | Token candidate limit where supported |
| Frequency Penalty | Penalizes repeated token frequency |
| Presence Penalty | Penalizes already-present tokens |
| Max Tokens | Maximum response length |
| Tool Choice | Provider tool-selection behavior |
| Tools | Provider-supported tools such as file search or grounding |
| Include | Provider-supported response include fields |
| Store | Whether supported providers should store responses |
| Stream | Whether supported providers should stream responses |
| Background | Whether supported providers should run background responses |
| Token Usage | Last-call and accumulated prompt/completion/total tokens |
🧰 Troubleshooting
| Issue | Resolution |
|---|---|
| Provider mode is missing | Confirm the selected provider exposes the required wrapper class and that config.py maps the mode correctly. |
| API request fails | Confirm the provider API key is present in the sidebar, environment, or config.py. |
| GPT file search fails | Confirm vector store IDs are valid and comma-delimited. |
| Gemini grounding is disabled | Select the Gemini provider; Google grounding is only enabled for Gemini Text mode. |
| Grok retrieval does not run | Confirm collection IDs or configured collection labels are available for Grok. |
| Image generation fails | Confirm the selected provider supports the selected image workflow and model. |
| Audio task fails | Confirm the selected provider exposes TTS, Transcription, or Translation wrappers for the selected task. |
| Document Q&A returns weak answers | Confirm documents are loaded, extractable text exists, and document chunks are being retrieved. |
| sqlite-vec unavailable | Let the app fall back to cosine similarity or install/configure sqlite-vec. |
| PDF extraction fails | Confirm PyMuPDF is installed and the file is a valid PDF. |
| SQL query blocked | Use a read-only SELECT, WITH, EXPLAIN, or safe PRAGMA query. |
| DataFrame rendering fails | The app includes a display-safe fallback renderer for problematic SQLite/PyArrow values. |
Documentation
The Boo documentation site is published with MkDocs Material and GitHub Pages.
🚀 Application Badges
📝 License
Boo is published under the MIT License.
Metadata
Release files for boo-boo 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| boo_boo-0.1.0.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| boo_boo-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.2 MB
Release files / boo_boo-0.1.0.tar.gz
| Download URL | boo_boo-0.1.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a1112054d5603f71e98718832dd3cb961986a28cc746c7d7701bb55b22d4196
|
|
BLAKE2b-256 checksum How to use checksums |
66670a121c20df8a5bec258660995cd3e037e5367ffc695fcab0b09c4e7dd016
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / boo_boo-0.1.0-py3-none-any.whl
| Download URL | boo_boo-0.1.0-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
76001403f92573a7893258932e4b1317be4d01ffc4ddb242612b744c48b14880
|
|
BLAKE2b-256 checksum How to use checksums |
233b908b6a99ebcf4d40ad34a5da8da915de96af519237f2c2637df07e255154
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log