Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for UPLIFY Chat — Grounded Ecommerce Assistant
Inspiration
Online stores already maintain accurate price and stock data for Google Merchant, marketplaces, and advertising. Yet most AI chatbots are trained on copied website text or static documents. They can recommend an unavailable product, quote an old price, or give a plausible answer with no visible source.
I wanted an assistant that starts from the merchant's existing operational data rather than from another manual knowledge base. A shopper should be able to describe a need, budget, or style in natural language, receive products that are actually in stock, and pass a complete request to a manager without repeating the conversation.
What it does
UPLIFY Chat connects to a public Google Merchant or YML XML feed and turns it into an embedded AI shopping assistant.
The service validates and refreshes the feed, normalizes product facts, builds tenant-scoped full-text and vector indexes, and exposes a storefront widget. A shopper can ask for a product by use case, budget, material, brand, or description. The assistant calls a bounded search tool, returns verified product cards, keeps conversational constraints, and offers a manager handoff.
The handoff captures the selected product, shopper name, phone number, delivery details, and explicit consent. Product payment is deliberately not taken in the chat; the merchant confirms the order and payment method.
The merchant workspace includes feed health, catalog products, conversations, leads, feedback, analytics, widget installation, allowed origins, notification channels, onboarding information, branding, plan limits, and billing state.
What was new during Build Week
UPLIFY Chat was created and shipped as a new product between July 19 and July 21, 2026. The initial commit is d37c52d; the subsequent dated history contains the complete vertical implementation.
During Build Week I used Codex with GPT-5.6 to build the bilingual landing page, multi-tenant merchant workspace, embeddable widget, FastAPI service, PostgreSQL/pgvector storage, XML/YML synchronization, grounded tool-calling flow, conversation persistence, feedback, manager handoff, authentication, billing primitives, owner console, legal pages, production Docker deployment, and regression coverage.
The primary Codex task is 019f7aeb-3f07-7010-a7d2-3458acf5be26.
How I built it with Codex and GPT-5.6
Codex acted as the implementation partner and adversarial release reviewer. We worked in short vertical slices: live feed intake, product retrieval, storefront conversation, lead handoff, merchant operations, multi-tenancy, billing, and finally semantic search.
GPT-5.6 repeatedly challenged the product's trust boundary. It tested strict budgets, stale history, unsupported product claims, prompt injection, cross-store retrieval, malformed feeds, partial catalog deletion, origin spoofing, API rate limits, and UI state persistence. The findings became explicit safeguards and regression tests.
Codex also reviewed the supplied visual direction, implemented the responsive experience, exercised the live widget in a real Horoshop store, traced the shared production host before deployment, and prepared the final demo and submission materials.
Technical architecture
The web application uses Next.js and Auth.js. The storefront widget is a Preact Web Component. FastAPI handles feed validation, search, conversations, feedback, and leads. PostgreSQL 16 stores tenant data and provides full-text search; pgvector with an HNSW index provides multilingual semantic retrieval. Voyage generates embeddings, and Claude Haiku 4.5 performs strict server-side tool calling.
Every retrieval query includes the store tenant. The model receives only the bounded result of search_products, while strict price and availability checks are enforced in application code. Conversation history is bounded and persisted by store and browser session. Storefront requests require an allowed origin and are rate-limited.
The production system runs as Docker services for web, API, PostgreSQL, migrations, and billing reconciliation.
Challenges
The hardest problem was keeping the written answer and the product cards aligned. A model can describe the correct products while the retrieval layer renders a broader set, or repeat a claim from earlier conversation history. UPLIFY Chat now treats previous assistant text as untrusted context, uses one verified result for both surfaces, and falls back safely when the generated response is incomplete or ungrounded.
The second challenge was natural-language product discovery. Exact keywords are not enough for requests such as “Victorian industrial style.” The final retrieval pipeline combines structured price and availability constraints, PostgreSQL full-text search, multilingual embeddings, and tenant filtering before ranking.
The third challenge was shipping on a shared production host without affecting other services. The repository documents a mandatory comparison between the active Caddy runtime and any candidate disk configuration before a reload.
What I learned
The useful part of an ecommerce assistant is not the chat bubble. It is the contract between current operational data, deterministic constraints, model reasoning, and the manager who completes the sale.
I also learned that adversarial product testing should happen while the interface is being designed. Budget mismatches, unsupported explanations, and lost conversation state were visible product failures before they were technical failures.
What's next
The next phase is a measured pilot with real stores. I want to add message-level cost and quota controls, confirmed-order status integrations, automated evaluation sets built from negative feedback, richer live-agent handoff, and feed connectors for additional ecommerce platforms.
Built With
- anthropic
- claude
- codex
- docker
- fastapi
- gpt-5.6
- next.js
- pgvector
- postgresql
- preact
- voyage

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