Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for BondRadar AI
BondRadar AI
BondRadar AI helps people discover and understand newly issued fixed-income bonds. It finds official SEC filings, extracts conventional bond terms with provenance, explains risks in plain English with OpenAI and supports transparent comparison.
Educational information only. BondRadar AI does not provide investment advice, execution, live quotes, credit ratings or suitability assessments.
Features
- SEC EDGAR daily-index and issuer discovery
- Conservative fixed-rate bond classification and extraction
- Field-level source evidence and confidence
- Review-first Django Admin workflow
- Search, filters and sorting by yield, coupon, maturity, price, size or recency
- Side-by-side comparison
- OpenAI structured summaries and educational risk indicators
- Novice knowledge centre covering terminology, cash flows, risks and trading mechanics
- Responsive server-rendered interface
Quick start
git clone https://github.com/arshad2K8/bondradar-ai.git
cd bondradar-ai
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py seed_showcase
python manage.py runserver
Open http://127.0.0.1:8000/. seed_showcase creates two real, source-linked SEC records. Use python manage.py seed_demo only when you also want explicitly labelled fictional records.
On Windows PowerShell, activate the environment with:
.venv\Scripts\Activate.ps1
Configuration
Copy .env.example values into your environment or local .env. Django does not automatically load .env; export the variables in your shell or use your deployment platform’s environment settings.
Required for live SEC ingestion:
export SEC_USER_AGENT="BondRadar AI your-email@example.com"
Required for AI explanations:
export OPENAI_API_KEY="your-key"
export OPENAI_MODEL="gpt-5.6-luna"
Never commit API keys. .env and the local SQLite database are ignored by Git.
OpenAI enrichment
Generate source-constrained explanations for published real bonds:
python manage.py explain_bonds --limit 5
The Responses API returns a validated structure containing a summary, risk explanation, educational risk level and rationale. Model calls run offline through a command—not during page rendering—so the application remains responsive and usable without an API key.
OpenAI’s current model guidance recommends the Responses API and identifies Luna as the cost-sensitive member of the GPT-5.6 family. The model is configurable through OPENAI_MODEL.
Real-data ingestion
Follow known issuers:
python manage.py discover_sec 0000072971 0001652044
Discover a full SEC filing day and process a bounded batch:
python manage.py ingest_sec_daily --date 2026-07-20
python manage.py process_sec_inbox --limit 20
Process one curated accession:
python manage.py process_sec_inbox --accession 0000950103-25-004743
424B2 and 424B5 are candidate signals—not proof of a conventional bond. Extracted records enter review and retain official source links. The current deterministic extractor supports conventional USD fixed-rate note headings and rejects unsupported structured products.
Architecture
SEC indexes and filings
↓
ingestion inbox
↓
classification + deterministic extraction
↓
canonical bonds + field evidence
↓
OpenAI structured explanation
↓
admin review → published catalogue
bonds/models.py— domain model, evidence and review statesbonds/services/sec.py— SEC access boundarybonds/services/extraction.py— deterministic classifier/extractorbonds/services/ai.py— OpenAI structured explanation boundarybonds/services/catalogue.py— filtering and sortingbonds/management/commands/— repeatable ingestion and enrichment jobstemplates/andstatic/— server-rendered user interface
Admin and testing
python manage.py createsuperuser
python manage.py check
python manage.py test
Admin is available at http://127.0.0.1:8000/admin/.
Deployment
The repository includes a Procfile for a WSGI host. Configure:
DJANGO_SECRET_KEYDJANGO_DEBUG=falseDJANGO_ALLOWED_HOSTS=your-domain.exampleDJANGO_HSTS_SECONDS=31536000DATABASE_URLfor PostgreSQLOPENAI_API_KEYif AI enrichment will run in that environmentSEC_USER_AGENTfor SEC ingestion
Build and start commands:
python manage.py collectstatic --noinput
python manage.py migrate
gunicorn bondradar.wsgi:application
Data and safety
- Public availability does not automatically grant redistribution rights.
- SEC requests must use an honest contact
User-Agentand respect fair-access guidance. - Commercial prices, ratings and identifiers may require separate licences.
- A historical bond trade is not a current executable quote.
- Generated explanations can be incomplete or incorrect and must remain linked to authoritative sources.
- A BondRadar risk indicator is not an agency credit rating or prediction of default.
See PROJECT_STORY.md for the Devpost-ready project story.
Licence
Code is released under the MIT License. This licence does not grant rights to third-party financial data or documents.
Log in or sign up for Devpost to join the conversation.