Imagine Auntie Akos at her chop bar in Osu. She sells the best banku in the neighbourhood. But she has no idea what customers actually think โ they smile and pay, then go on Twitter and complain. By the time she hears about a bad experience, the customer is gone.
MarketPulse changes this. A QR code on every table. Customers scan, type 30 seconds of feedback, hit submit. Auntie Akos opens her phone:
- ๐ Sentiment dashboard โ 73% positive this week, up from 61% last week
- ๐ท๏ธ Top complaints โ "slow service" mentioned 12 times, "cold food" mentioned 8 times
- ๐จ Real-time alerts โ if someone leaves a strongly negative review, she gets an SMS or email immediately
- ๐ Recent reviews โ scroll through with sentiment colour-coding
๐ฐ Why this is special
This isn't just a portfolio piece โ it's a real product you could sell. Local SMEs across West Africa would pay โต100-300/month for this. Several bootcamp graduates have launched startups from exactly this kind of project. You won't just impress employers โ you might walk away with a business.
1. Frontend Lead
- Owns the customer feedback form (must look beautiful on mobile)
- Owns the owner-side dashboard (charts, filters, lists)
- Picks the Streamlit theme + adds custom CSS
- Designs the QR code page customers see
2. Backend Lead
- Wires Comprehend (sentiment + entities)
- Designs DynamoDB schema + indexes
- Builds the SNS alert flow for negatives
- Owns query performance for the dashboard
3. AWS Engineer
- Provisions EC2 + IAM role + security groups
- Sets up CloudWatch monitoring
- Handles deployment + restart policies
- Owns cost monitoring (keep it free-tier)
4. Product & Demo Lead
- Talks to 2-3 real Accra businesses for use case research
- Writes the marketing copy on the landing page
- Generates the QR codes + business onboarding flow
- Owns the demo script + slide deck
Treat this like you're co-founders of an actual startup, not 4 students doing homework. Have a Slack/WhatsApp channel just for the team. Daily 10-minute standups. A shared Notion/Google Doc with the roadmap. Teams that operate like startups tend to win.
MarketPulse has TWO front-ends: one for the customer (the feedback form), one for the owner (the dashboard). Both call the same backend.
| Component | What it does |
|---|---|
| EC2 t2.micro | Single Streamlit app with two routes (customer form + owner dashboard) |
| Comprehend | Detects sentiment + entities + key phrases on every submission |
| DynamoDB | Stores: feedback_id, business_id, message, sentiment, entities, timestamp |
| SNS | Sends an email/SMS to the owner if feedback is NEGATIVE with high confidence |
| CloudWatch | Logs from the app + metrics on Comprehend calls |
Set up the project:
Streamlit can serve multiple pages via the pages/ folder. Project structure:
The customer form is simple โ get name, rating, message, business name (for multi-tenancy):
The owner dashboard pulls everything from DynamoDB and renders charts using Plotly:
Run it locally with streamlit run app.py and visit http://localhost:8501. You'll see the customer form + dashboard as separate pages in the sidebar.
The Backend Lead's main work happens here. Create aws_helpers.py:
Then in the AWS Console:
- DynamoDB table: Create
marketpulse-feedbackwith partition keyfeedback_id(String). On-demand capacity. Done. - SNS topic: Create
marketpulse-alerts. Subscribe your team's email address (and confirm it). Optionally subscribe a phone number for SMS. - IAM role for EC2: Create role with these policies attached:
ComprehendFullAccessAmazonDynamoDBFullAccessAmazonSNSFullAccessCloudWatchLogsFullAccess
table.scan() reads the WHOLE table every time. Fine for the demo (you'll have ~50 entries). For real production, add a Global Secondary Index on business so you can table.query() for one business's data only. Mention this in your demo โ it shows production thinking.
Same EC2 setup as Project 1, but ensure the IAM role attached at launch has the right policies. Process:
- Launch EC2 (Amazon Linux 2023, t2.micro, key pair from Week 1)
- Security group: SSH 22 (your IP) + HTTP 80 (anywhere) + TCP 8501 (anywhere)
- Attach the IAM role you built in Step 5 (Advanced โ IAM instance profile)
- SSH in and install:
Visit http://<EC2-IP>:8501 โ you should see your app live.
Run it as a systemd service so it survives SSH disconnect (same pattern as Project 1). Once live:
- Submit some test feedback as a "customer"
- Switch to the dashboard view as the "owner"
- Verify the chart populates
- Submit something deliberately negative ("food was terrible, won't return") and check your email โ SNS should fire
Now the project becomes irresistible. This is where MarketPulse goes from "yet another dashboard" to "I'd actually pay for this".
QR code generator (in the dashboard)
Add a section in the owner dashboard that generates a QR code pointing to http://<your-EC2>:8501/Customer_Form?business=Auntie+Akos:
Polish checklist
- Frontend Lead: Add a beautiful "Welcome to [Business]" header on the customer form. Use the business name dynamically.
- Frontend Lead: Custom Streamlit theme via
.streamlit/config.tomlโ purple-to-cyan gradient feels modern SaaS. - Backend Lead: Add a "key phrases" Comprehend call โ show top 5 phrases customers actually use ("slow service", "great food", "friendly staff").
- Backend Lead: Filter the dashboard by date range (last 7/30/90 days).
- Product Lead: Onboard 1-2 real Accra businesses for demo day. Their real names + real feedback = 10x credibility.
- AWS Engineer: Set up daily DynamoDB backups + a CloudWatch dashboard showing app metrics.
Don't add 10 new features. Pick 2 polish improvements and finish them perfectly. A beautifully filtered dashboard with real customer names beats a half-built "AI insights" tab. Judges reward depth over surface area.
๐ฌ Your 5-minute demo flow
- 00:00 โ 00:30 ยท The problem. "Small businesses in Accra serve thousands of customers but never know what they think. Today's feedback options are Google Reviews (slow), Twitter complaints (too late), or asking face-to-face (people lie to be polite)."
- 00:30 โ 01:00 ยท The team + product name. Quick intros + show your branded landing page.
- 01:00 โ 02:30 ยท The customer flow โ LIVE. Pull up the QR code on your dashboard. Have someone scan it with their phone (or fake-scan it on a second tab). Submit a positive review. Then submit a negative review. Watch as the SNS email arrives in your inbox in real time. This is the moment that wins.
- 02:30 โ 03:30 ยท The dashboard. Switch to the owner view. Show the sentiment pie chart, top entities, recent reviews. "Auntie Akos now knows in real time what customers think."
- 03:30 โ 04:15 ยท The architecture. Brief mention. "We chose DynamoDB over RDS because feedback is flexible JSON. We use Comprehend for sentiment, SNS for real-time alerts." Show your diagram.
- 04:15 โ 05:00 ยท The business model. "We've spoken to 2 real Osu businesses who said they'd pay โต150/month for this. There are 50,000+ SMEs in Accra alone." End strong.
Bring a real customer to the demo. Auntie Akos, Mr Mensah, anyone. Have them speak for 30 seconds about why they'd use this. Nobody beats authentic customer voice.
Most Polished
Looks and feels like a $50/month SaaS product. Beautiful charts, mobile-perfect customer form, clean dashboard.
Most Innovative
Adds something nobody asked for but everyone wants: voice feedback transcription, multi-language, AI-suggested responses.
Best Demo
The pitch that made judges nod. Clear problem statement, live demo that worked perfectly, strong closing.
Best Documentation
The README, architecture diagram, and setup instructions a hiring manager would clone and run.
People's Choice
The cohort's pick. The team they'd want to work with โ and the product they'd most likely become a customer of.
You're building a real SaaS.
This is the project most likely to turn into your first startup. Several past graduates have launched ventures from exactly this. Build it for one real business in Accra. Win the cohort awards. Then keep building after the bootcamp ends.
Ship it. Sell it. Scale it.