Inspiration
Millions of people across the UAE have items collecting dust at home — old phones, furniture, electronics — that they want to sell but never do.
The friction is real:
- photograph the item
- write a compelling description
- research fair pricing
- navigate marketplace forms
- spend days answering repetitive buyer questions
- haggle over AED 50
- coordinate pickup times
Most people give up before they even start.
What if selling something was as easy as taking a photo?
That question is what NovaSell was built to answer.
What it does
NovaSell is a fully autonomous AI sales agent that handles the entire selling lifecycle — from a single product photo to a closed deal.
$$ \text{Photo} \xrightarrow{\text{Nova Lite}} \text{Item Analysis} \xrightarrow{\text{Nova Pro}} \text{Listing + Price} \xrightarrow{\text{Nova Act}} \text{Live on Marketplace} \xrightarrow{\text{Nova Pro / Sonic}} \text{Sold} $$
Snap a photo
Nova Lite identifies:
- item
- brand
- condition
- defects
AI prices and writes the listing
Nova Pro researches Dubai market comparables and generates an SEO-optimized listing.
One-tap approval
The seller reviews and approves.
That's their only job.
Nova Act posts it
The agent autonomously navigates Shozon and Dubizzle as a human would:
- filling forms
- uploading images
- handling CAPTCHA via live browser handoff
AI handles all buyers
Nova Pro:
- responds to chat messages
- negotiates price within seller-defined boundaries
- schedules pickups
Nova Sonic takes phone calls
Real-time speech-to-speech buyer calls, fully handled by AI 24/7.
How we built it
We used the entire Amazon Nova model family as specialized agents, each owning a distinct layer.
Nova Lite
Multimodal vision for:
- item identification
- condition scoring
Nova Pro
Reasoning for:
- pricing
- listing generation
- buyer conversation
- negotiation
Nova Sonic
Real-time voice via:
invoke_model_with_bidirectional_stream
Audio pipeline:
- PCM 16kHz in
- PCM 24kHz out
Nova Act
Browser automation SDK navigating Shozon's React SPA without any marketplace API dependency.
Everything is orchestrated using Temporal state machines, giving us durable, resumable workflows that survive:
- crashes
- long HITL pauses
- retries
The system runs as two Kubernetes pods:
- ACP HTTP server (FastAPI)
- Temporal worker
Deployed via Helm.
Challenges we ran into
| Challenge | How we solved it |
|---|---|
| Shozon is a React SPA — standard navigation times out | Start Nova Act on about:blank, navigate with domcontentloaded, wait for networkidle |
| CAPTCHA blocks full automation | HITL system: pause Temporal workflow, stream live browser via CDP to chat UI, resume on user signal |
| Temporal activity times out during long HITL | Background asyncio heartbeat every 30s, keeping activity alive for up to 60 minutes |
Nova Act ActGuardrailsError when triggering HITL |
Never call nova.act("use HITL tool") — call hitl_callbacks.ui_takeover() directly |
| Nova Sonic bidirectional stream in mixed async/sync runtime | Wrap sync boto3 stream in ThreadPoolExecutor, bridge using loop.run_in_executor() |
Stale Chrome SingletonLock after pod crash |
_cleanup_singleton_lock() removes stale lock files before every Nova Act session |
| Duplicate activity execution on Temporal retry | Set maximum_attempts=1 on publish activity — HITL cannot be safely retried |
Accomplishments that we're proud of
End-to-end automation without marketplace APIs
Nova Act navigates Shozon's entire multi-step ad wizard purely through vision and browser control, exactly like a human.
Production-grade HITL system
- pause Temporal workflow mid-activity
- stream live browser via Chrome DevTools Protocol
- resume cleanly after human interaction
This is non-trivial distributed systems engineering.
Voice AI integrated into workflow orchestration
Nova Sonic voice calls run alongside durable Temporal state machines, with the full listing and pricing context available to the voice agent in real time.
Four Nova models working as one system
Each model does exactly what it’s best at:
- Nova Lite sees
- Nova Pro reasons
- Nova Act acts
- Nova Sonic speaks
Together they create a fully autonomous selling pipeline.
What we learned
Temporal is the right foundation for agentic systems.
Long-running AI workflows — where a step might pause 30 minutes for a human — require durable execution.
Temporal provides:
- retries
- heartbeats
- resumability
Capabilities that asyncio alone cannot provide.
Multi-agent systems require hard boundaries.
The temptation is to use one powerful model for everything.
What actually works:
- Nova Lite → vision
- Nova Pro → reasoning
- Nova Act → execution
- Nova Sonic → voice
Each agent does one job extremely well.
Browser automation at this level is systems engineering.
You encounter problems like:
- SPA hydration timing
- race conditions
- CDP vs Playwright screenshot differences
- stale lock files after crashes
None of this exists in tutorials.
You learn it by breaking things in production.
Anti-bot detection must be designed from day one.
Marketplaces actively detect automation.
NovaSell implements:
- human-like typing cadence
- random action delays
- persistent browser profiles
- rate limiting
This became a core architectural concern, not an afterthought.
What's next for NovaSell
Multi-marketplace posting
List simultaneously on:
- Shozon
- Dubizzle
- Facebook Marketplace
All from one photo.
Proactive repricing
Nova Pro continuously monitors comparable listings and automatically adjusts price to remain competitive.
Buyer trust scoring
Detect:
- low-trust buyers
- time-wasters
- scam patterns
before the seller ever engages.
Full voice negotiation
Nova Sonic handles complete price negotiations via voice calls, not just simple Q&A.
Seller analytics dashboard
Real-time insights:
- views
- inquiries
- conversion rate
- average time-to-sell by category
WhatsApp integration
Buyers and sellers can:
- receive messages
- approve offers
- confirm deals
directly through WhatsApp.
Built With
- act
- agentex
- amazon-web-services
- asyncio
- bedrock
- boto3
- docker
- fastapi
- helm
- kubernetes
- lite
- litellm
- novapro
- novasonic
- openrouter
- playwright
- polly
- postgresql
- pydantic
- pydantic-settings
- python
- redis
- temporal.io
Log in or sign up for Devpost to join the conversation.