Inspiration
Millions of people run real businesses from their personal social media accounts. They sell clothes, shoes, hair, bags, and food through Instagram, WhatsApp, TikTok, and Snapchat. The sale happens in a DM: a customer sees a post, messages the seller, they negotiate, and money changes hands.
Then it all disappears into the chat. The seller has no business infrastructure, because a personal account has no order system, no records, and no analytics. Bolting a business layer onto a personal account is hard, and often impossible. So most sellers fall back on what they've always done: scribbling orders in a notebook, scrolling up through old chats, and hoping nothing gets lost.
Then the chaos sets in. Buyers flood the DMs asking about the status of their orders. Some want to cancel, and others demand refunds. Others call non-stop asking when their order will be delivered or fulfilled. Every message pulls the seller back into scrolling through old conversations, trying to piece together who ordered what, what price was agreed, and who has paid. Frustration builds, and the business starts to feel like a burden instead of an income.
We watched this happen again and again, and that's where Take Order comes from. Sellers don't need a complicated business suite. They need a simple way to manage every order that starts in their DMs, without leaving their personal accounts. Our tagline says it: "No more taking orders in your DMs and hoping you don't lose track."
What it does
Take Order is an order management and record-keeping app for sellers who do business in their DMs. It never connects to their chat accounts.
- When a sale is agreed on any platform, the seller creates a Take Order link in the app. They set the agreed price, choose full payment, deposit, or reserve-only, and tag the platform the conversation came from.
- The item doesn't need to exist anywhere in the app first. The seller can attach an image straight from their gallery, or let the buyer upload their own reference image, such as a screenshot of the post they saw.
- The buyer opens the link, fills in size, color, and delivery details, and pays or reserves.
- The order is recorded with its full status, the platform it came from, and its payment state. It's all structured data, with no chat-parsing and no guessing.
- The seller sends the auto-generated receipt and moves the order through fulfillment, from shipped to delivered.
Every order, deposit, reservation, and delivery lives in one place instead of in a notebook or a chat history.
Supporting features. A product catalog and inventory tracking are available for sellers who want them. They're optional, and the core flow never depends on them. Once orders are being recorded, the dashboard turns them into sales over time, channel performance (link opens vs. completed vs. paid orders per platform), and profit margins when a cost price is entered
How we built it
- Monorepo: pnpm workspace with an Express API, PostgreSQL through Drizzle ORM, Zod validation, and OpenAPI-generated clients so the frontend and backend share types.
- Auth and multi-tenancy: Clerk protects every seller route, and every query is scoped by
ownerUserId, so each seller's data is isolated. - Order lifecycle: a state machine that runs Draft → Sent → Opened → Submitted → Payment initiated → Reserved / Deposit paid / Fully paid → Fulfilled, with Expired and Cancelled branches.
- Flexible order links: orders can be created with or without a catalog item, with seller-uploaded or buyer-uploaded images.
- Stock safety (when inventory is used): a short soft hold when payment starts, a hard decrement only at full payment, and reservations that auto-expire and return stock.
- Currency detection: Cloudflare header, then IP geolocation, then
Accept-Languageas a fallback. It's stored once in seller settings and never silently re-detected. - Deployment: Supabase for the database and storage, Vercel for the frontend, and Heroku for the API.
- Monetization: seller subscriptions through RevenueCat.
- AI-assisted development: we used AI coding assistants heavily for scaffolding, code review, and migration planning.
Challenges we ran into
- Working with personal accounts: we couldn't safely read sellers' chats, and platform rules around automation and business APIs made deep integration unrealistic. Flipping the architecture so the seller creates an order link after the deal, instead of the app watching the chat, solved this and made the data more reliable.
- Scope creep: we started with a chat-automation and analytics-heavy idea, then cut it down to the one thing sellers need most: reliably capturing every order.
- Orders without a catalog: real DM sales are messy. Items aren't always listed anywhere, so the order flow had to work from just an image and an agreed price.
- Payment correctness: webhooks arrive twice, out of order, or with the wrong amount. We designed for idempotency and amount verification, and flag mismatches for seller review instead of auto-confirming.
- Deployment: the Express API didn't fit Vercel's serverless model, and we hit a CJS/ESM import error along the way. We split hosting between frontend and backend to fix it.
- Migrating off Replit: moving the database, auth, storage, and hosting to production infrastructure took real planning.
Accomplishments that we're proud of
- A working end-to-end flow from Take Order link to buyer checkout to a fully tracked order.
- An order model built around how DM selling really works, including deposits, reservations, and orders with no catalog item.
- Real multi-tenant auth and an architecture that avoids the biggest platform and compliance risks.
What we learned
- Sellers don't need another complicated business suite. They need a simple, dependable way to stop losing track of orders.
- Structured human input often beats clever AI inference.
- Many hard parts of commerce are state and money correctness, not UI.
What's next for Take Order
- Integrating more Verified payments with a live provider.
- A richer order history, with customer profiles built up from repeat orders.
- Optional Meta Ads and TikTok connections for engagement and ad stats. These only touch public content and ad performance, never private messages.
- Anonymized peer benchmarking once enough sellers are active.
- TikTok Live selling: Many sellers advertise products on TikTok Live but have nowhere for viewers to reserve or pay, so everything falls back into WhatsApp and TikTok DMs. We plan to let sellers share a live catalog during their stream, where viewers can reserve or pay for an item on the spot. Those orders will land in the same dashboard as everything else, with no back-and-forth in the DMs.
- A native mobile app.
Built With
- claude
- clerk
- drizzle-orm
- express.js
- github
- heroku
- node.js
- openapi
- pnpm
- postgresql
- revenuecat
- supabase
- typescript
- vercel
- zod
Log in or sign up for Devpost to join the conversation.