Project Info
This project did not submit a demo video on Devpost.
Inspiration
We've all heard someone say "There has to be a gap in the market for this…"—and then the room goes quiet because nobody can prove it. Traditional market research is pricey, slow, and overkill for hackathons or small teams. We wanted a one-click, weekend-scale tool that tells you: • Which pain points are still unsolved • How big they are • Who actually cares
What it does
Crawls fresh white-papers from top consulting firms. Market-Analyzer agent ranks the biggest unmet needs. Social-Listener agent pulls Reddit chatter + Google snapshots to hear how real people discuss those gaps. Solution-Generator (demo-mode) proposes first-draft ideas. All data lives in Letta's shared memory blocks so the team—or more agents—can keep iterating. The output: a ranked list of market gaps plus audience insights, perfect for founders, PMs, or hackathon teams who need validation fast.
How we built it
Backend Node.js + TypeScript on Letta (stateful multi-agent OS) Agents • Orchestrator (manager) • Market-Research (PDF crawler) • Market-Analyzer (TF-IDF + sentiment) • Social-Listener (Reddit API + Google search) • Solution-Generator (ICE-scored ideas) Models GPT-4o-mini for workers, GPT-4.1 for the orchestrator Front-end Next.js dashboard with live workflow tracking Storage Letta shared memory (Postgres under the hood) DevOps Simple web dashboard + direct API testing → full pipeline demo-ready for Letta Cloud
Challenges we ran into
Learning Letta's manager-worker pattern in one weekend. Wrestling with weird PDF layouts from consulting firms. Reddit & Google rate limits during testing. Balancing "cool ML" vs. shipping something that works. Accomplishments we're proud of • End-to-end workflow now completes via clean web dashboard on a fresh workspace. • Zero custom glue code—everything flows through Letta agents & shared memory. • Clean, testable architecture with live progress tracking. • Already surfaced some surprising, real market opportunities!
What we learned
• Stateful agents > giant prompt chains. • Tiny, single-purpose workers are easier to debug than one mega-agent. • Shared memory blocks beat brittle REST hand-offs. • A working dashboard beats perfect UI when you need to ship fast.
What's next
Polish the React dashboard (live charts & WebSocket updates). More data sources: Product Hunt, Twitter/X, patent filings. Re-enable competitor analysis + iterative idea loop for full novelty check. Deploy to Letta Cloud so anyone can paste an industry keyword and get gaps back in minutes. Open-source templates so other builders can fork and extend. Thanks for reading—feedback welcome!
MarketGap AI 🚀
A simplified market research and gap analysis system powered by Letta's native multi-agent capabilities. MarketGap AI discovers untapped market opportunities by analyzing consulting firm white papers, social signals, and industry trends using a clean, Letta-native architecture.
🎯 Why Letta-Native?
This implementation follows Letta best practices exactly:
- 🤝 Manager-Worker Pattern: Single Orchestrator Agent manages all worker agents
- 📝 Shared Memory Blocks: All agents share state via Letta's native memory system
- 🛠️ Built-in Tools: Uses Letta's native multi-agent communication tools
- 🔄 Exact Workflow: Follows the precise 8-step sequence from workspace rules
- 💾 Persistent State: All agent state persists automatically in Letta's database
🏗️ Simplified Architecture
graph TD
A[Orchestrator Agent] --> B[Shared Memory Blocks]
A --> C[Worker Agents Created On-Demand]
B --> D[consulting_groups]
B --> E[consulting_docs]
B --> F[gap_list]
B --> G[audience_signals]
B --> H[problem_queue]
B --> I[user_feedback]
B --> J[idea_history]
B --> K[final_ideas]
C --> L[Market Research]
L --> |white-papers| E
C --> N[Market Analyzer]
N --> |gaps| F
C --> M[Social Listener]
M --> |signals| G
C --> O[Solution Generator]
Shared Memory Blocks (Per Workspace Rules)
consulting_groups(100 KB) - CSV/JSON of consulting firmsconsulting_docs(10 MB) - PDF chunks {tag, text}gap_list(256 KB) - Market gaps {id, title, severity, summary}audience_signals(5 MB) - Social signals {platform, author, text, sentiment}problem_queue(64 KB) - Ordered gaps sent to UIuser_feedback(64 KB) - User feedback {problemId, action, notes}idea_history(2 MB) - All brainstorming iterationsfinal_ideas(128 KB) - Approved novel ideas
Exact Workflow Sequence
- marketResearch (async) – crawl PDFs from consulting firms
- marketAnalyzer (wait) – produce
gap_list - socialListener (wait) – write combined audience & Google insights to
audience_signals - solutionGenerator (wait) – brainstorm first batch of ideas →
final_ideas - (Competitor check skipped in demo)
- Emit
workflow_completeand show ideas on dashboard
🛠️ Setup & Installation
Prerequisites
- Node.js 16+ and npm
- Letta Cloud Account (Sign up here)
- Letta API Key (Get one here)
Installation
# Clone the repository
git clone <your-repo-url>
cd market-gap
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local and add your LETTA_API_KEY
Environment Configuration
Create a .env.local file:
# Required: Letta Configuration
LETTA_API_KEY=your_letta_cloud_api_key_here
LETTA_BASE_URL=https://api.letta.com
🚀 Quick Start
Option 1: Web Interface
npm run dev
# Navigate to http://localhost:3000/workflow
Option 2: API Direct
# Start workflow
curl -X POST http://localhost:3000/api/letta-workflow \
-H "Content-Type: application/json" \
-d '{"action": "start", "industry": "FinTech"}'
# Check status
curl http://localhost:3000/api/letta-workflow?action=status
📁 Project Structure
market-gap/
├── src/
│ ├── agents/
│ │ ├── orchestrator/ # Manager agent
│ │ ├── marketResearch/ # Worker agents
│ │ ├── marketAnalyzer/
│ │ ├── socialListener/
│ │ ├── solutionGenerator/
│ │ └── competitorResearch/
│ └── simple-orchestrator.ts # Main Letta-native orchestrator
├── components/ # React UI components
├── context/ # React context
└── types/ # TypeScript types
├── app/
│ ├── api/
│ │ └── letta-workflow/ # Single API endpoint
│ ├── workflow/ # Dashboard page
│ └── [other pages]/ # Additional UI pages
├── README.md # This file
└── SIMPLIFIED_APPROACH.md # Detailed documentation
🧪 Testing
You can validate everything is wired up in two ways:
- Web UI – Run
npm run devand watch the workflow update live athttp://localhost:3000/workflow. - Direct API – Use the cURL commands in the Quick-Start section to start a workflow and poll for status.
No extra scripts are required.
🔧 How It Works
Single Orchestrator Agent
- Creates and manages all worker agents using Letta's built-in tools
- Uses
send_message_to_agent_asyncfor non-blocking tasks - Uses
send_message_to_agent_and_wait_for_replyfor blocking steps - Maintains workflow state in shared memory blocks
Shared Memory System
- All agents access the same memory blocks
- Memory persists automatically across sessions
- Follows exact memory block structure from workspace rules
- 10 MB block cap with automatic archival
Built-in Letta Tools
web_search– For research tasksrun_code– For data processing- Native multi-agent communication tools
- No custom tools needed
📊 Benefits of Simplified Approach
| Before (Complex) | After (Simplified) |
|---|---|
| 7 agent classes + custom tools | 1 orchestrator using Letta's built-ins |
| Multiple API routes | 1 API endpoint |
| Complex agent manager | Native Letta multi-agent system |
| Custom memory system | Shared memory blocks |
| 500+ lines of config | Environment variables only |
📚 Documentation
- SIMPLIFIED_APPROACH.md – Detailed technical documentation
- Letta Multi-Agent Systems – Official Letta docs
- Multi-Agent Shared Memory – Shared memory guide
✅ Key Features
- ✅ Letta-Native: Uses built-in multi-agent capabilities
- ✅ Shared Memory: Proper shared memory blocks following workspace rules
- ✅ Manager-Worker: Single orchestrator manages worker agents
- ✅ Exact Workflow: Follows 8-step sequence precisely
- ✅ Dashboard & API Testing: No extra scripts required
- ✅ Clean Architecture: No unnecessary complexity
- ✅ Proper Documentation: Clear, comprehensive guides
🎯 Next Steps
- Open http://localhost:3000/workflow and start a new workflow.
- Check shared memory blocks are updating correctly via the dashboard or API.
- Extend with additional worker agents as needed.
- Deploy to production using Letta Cloud.
⚠️ Status: Backend Stable · Front-End WIP
The multi-agent backend (Orchestrator → Market-Research → Market-Analyzer → Social-Listener) is fully functional and passes all automated tests.
However, the Next.js front-end is still under heavy development – navigation works, but many pages show placeholder data and WebSocket updates are stubbed. Use the dashboard or the API endpoints to exercise the workflow until the UI is finished.
🔄 Idea Loop (Hackathon Demo)
For demo speed we run one Solution-Generator pass and stop. Novelty & competitor checks can be re-enabled after the event.
Built with Letta's stateful agent framework - the future of AI applications.
Analysis
View
Metric
- 10
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- JavaScriptIn code
- Next.jsIn code
- ReactIn code
- TypeScriptIn code
- Vercel AI SDKIn code
- Node.jsClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
114 KB
Source files
32
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
SheteUC/market-gap
41 files · 378 KB · @ aec50e5
Structure
Interface
19 files · 46%Screens, components and styles rendered to the user.
API & routing
1 file · 2%Request entry points: routes, handlers and controllers.
Application logic
14 files · 34%Domain rules, services and shared utilities.
+1 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript93%
- Markdown7%
- JavaScript0%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 33- @ant-design/colors
- @ant-design/cssinjs
- @ant-design/icons
- @ant-design/nextjs-registry
- @letta-ai/letta-client
- @letta-ai/vercel-ai-sdk-provider
- @types/node
- @types/react
- @types/react-dom
- ai
- antd
- dayjs
- dotenv
- next
- node-fetch
- pdf-parse
- react
- react-dom
- +15 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.