MarketLens
AI-powered competitor intelligence for better business decisions
Hackathon track: Work and productivity
MarketLens turns multiple competitor websites into a clear, executive-ready strategy report. Instead of spending hours collecting screenshots, copying pricing pages, and maintaining comparison spreadsheets, teams can paste two or more public URLs and quickly understand how companies differ—and which one is the best fit for a specific use case, customer segment, budget, or product need. Codex, GPT- 5.6 Luna Model played a central role in developing MarketLens. It helped transform the initial idea into a modular Streamlit application, design the service architecture, create structured competitor-analysis prompts, debug Azure OpenAI integration issues, improve report rendering, build PDF export functionality, refine decision cards, and enhance the overall stakeholder experience. Codex also supported iterative testing, error resolution, UX improvements, and documentation, allowing us to move quickly from concept to a polished, working productivity tool.
Inspiration
Competitive research is essential, but it is often slow, fragmented, and difficult to communicate. Teams have to move between websites, notes, spreadsheets, and presentations before they can make a decision. We built MarketLens to compress that workflow into one focused experience: provide the sources, receive a structured analysis, and share a polished report with stakeholders.
What it does
MarketLens accepts two or more public company URLs and generates a structured competitor analysis covering:
- Executive summary
- Business model
- Target customers
- Product and pricing analysis
- SWOT analysis
- Competitor comparison
- Feature matrix
- Market position
- Opportunities and risks
- Strategic recommendations
- Direct winner picks for use case, customer segment, budget, and product need
The report is presented as a readable web experience with highlighted section headings, decision cards, loading feedback, report clearing, and PDF export.
How we built it
MarketLens was developed with Codex, GPT-5.6 Luna Model, which helped accelerate the full product workflow: structuring the Streamlit application, modularizing services and prompts, refining the report UX, handling Azure integration issues, and iterating on the decision-focused output. Codex was used as a development partner for implementation, debugging, and product refinement.
- Python + Streamlit for the interactive web application and fast stakeholder-oriented UI.
- Azure OpenAI / OpenAI-compatible v1 client for analysis generation using the configured
gpt-5.6-lunadeployment. The deployment is configurable through environment variables. - BeautifulSoup and Requests for extracting visible text and metadata from public webpages.
- Prompt engineering to produce a consistent 12-part consulting report, require evidence-based reasoning, and select one clear winner per decision category.
- ReportLab for downloadable PDF reports.
- HTML/CSS inside Streamlit for branded cards, visual hierarchy, responsive layouts, and decision-focused presentation.
The application keeps the model call separate from scraping, prompts, rendering, and exporting so each part can be improved independently.
Codex and OpenAI usage
Codex, GPT-5.6 Luna Model was used to build and refine MarketLens inside the project: from the initial Streamlit scaffold through modular architecture, Azure connection debugging, report formatting, PDF export, validation, loading states, and stakeholder-oriented UX.
At runtime, Azure OpenAI is the intelligence layer of MarketLens. The configured gpt-5.6-luna deployment receives extracted company information and a strategy-consulting prompt. The prompt instructs the model to compare companies, avoid unsupported claims, label uncertainty, use tables where useful, and make explicit recommendations for different business scenarios.
The app uses the Azure OpenAI v1-compatible OpenAI client with an endpoint, API key, and deployment name. No model key is hard-coded in the project.
Challenges we ran into
- Azure deployment configuration — Azure endpoints, deployment names, and API-compatible paths can differ from the public model name. We made the endpoint and deployment configurable and added clearer error messages.
- GPT-5.6 Luna Model request constraints** — GPT-5.6 luna reasoning models do not accept arbitrary temperature values, so the integration uses the model default.
- Unstructured webpages — Competitor pages vary widely in layout and content. We extract visible page text and metadata while avoiding scripts and private content.
- Turning analysis into decisions — A long narrative is not enough for stakeholders. We added explicit winner cards and structured comparison sections while preserving the full report.
- Report lifecycle — We added loading states, manual clearing, automatic clearing before new analysis, and PDF export so the experience feels reliable during a live demo.
Accomplishments we are proud of
- Built a working end-to-end workflow from URLs to an executive-ready competitor report.
- Made the output decision-oriented instead of simply summarizing websites.
- Added a clear winner for each major decision dimension without allowing ties or vague either/or answers.
- Created a modular project structure that separates services, prompts, UI components, and exporters.
- Added a polished report presentation with readable sections, highlighted takeaways, and downloadable PDF output.
- Designed the app for a realistic team workflow: quick input, visible progress, shareable output, and easy reset.
What we learned
- Good competitive intelligence depends as much on prompt structure and output constraints as on model capability.
- A model should be asked to distinguish evidence from inference instead of being trusted to make that distinction implicitly.
- Stakeholders need conclusions and trade-offs surfaced early, while analysts still need access to the complete supporting detail.
- Azure OpenAI integrations require careful separation between a model name and an Azure deployment name.
- Small interaction details—disabled states, progress messages, clean resets, and export options—have a large effect on perceived product quality.
What's next for MarketLens
- Add stronger extraction for JavaScript-heavy pages using optional reader and crawling integrations.
- Support saved workspaces, report history, and team sharing.
- Add citations and evidence snippets beside individual claims.
- Introduce configurable industry templates for SaaS, retail, financial services, and healthcare.
- Add structured scoring with transparent criteria instead of relying only on narrative comparison.
- Support scheduled competitor monitoring and change alerts.
- Add organization-level authentication, permissions, and secure data retention controls.
Run locally
pip install -r requirements.txt
streamlit run app.py
Create a .env file in the project root:
AZURE_OPENAI_ENDPOINT=https://YOUR-RESOURCE.openai.azure.com/openai/v1/
AZURE_OPENAI_API_KEY=your-key
AZURE_OPENAI_DEPLOYMENT=your-gpt5.6-luna-deployment-name
AZURE_OPENAI_API_VERSION="2025-04-01-preview"
Use the exact deployment name configured in Azure AI Foundry. Never commit .env or API keys to source control.
Responsible use
MarketLens analyzes public webpage content only. Users should respect website terms, robots policies, copyrights, and applicable privacy rules. Generated conclusions should be reviewed by a human before making high-impact business decisions.
Built With
- azure
- azureopenai
- beautiful-soup
- codex
- gpt5.6-luna-model
- openai
- python
- reportlab
- requests
- streamlit

Log in or sign up for Devpost to join the conversation.