Inspiration
Small hospitality sales teams can have hundreds of leads and still struggle to answer three basic questions: Who should I call today? Why are they a fit? What should I say?
ZionPods already had campground and glamping lead data on a map, but turning that data into an actionable sales motion still required manual filtering, research, and writing. We built Zion Scout to compress that workflow into one explainable, human-approved interaction.
What it does
Zion Scout lets a salesperson describe an opportunity in English—for example, “Find five high-fit glamping properties we have not contacted. Explain why and draft outreach.”
AI agent analyzes a bounded CRM snapshot and returns a ranked shortlist with evidence. The application then narrows the geospatial map to those opportunities, shows why each property was selected, and drafts personalized outreach for review. The user can inspect the underlying lead, copy the draft, and update CRM status without leaving the workflow.
Unlike a generic chat wrapper, the AI response changes product state. Natural-language intent becomes a ranked map, evidence cards, and a concrete next action.
How we built it
Zion Scout is a Next.js application backed by Supabase, PostgreSQL, and PostGIS. A server-only route sends sanitized CRM signals to the GPT-5.6 Responses API. Strict Structured Outputs enforce the recommendation schema before model output can become interface state.
The server sends contact-path availability rather than phone numbers or email addresses. Returned lead IDs are validated against the submitted dataset, requests have bounded input and execution time, and unknown values are treated as unknown rather than negative evidence. Recommendations are read-only and outreach always remains human-reviewed.
Codex accelerated the full build: it inspected the existing CRM architecture, scoped a one-day product, implemented the API and UI, caught response-parsing and live-demo failure risks, added judge-ready sample data, prepared deployment materials, and verified the production flow through typechecking, builds, and browser interaction.
Challenges we ran into
The hardest problem was making AI analysis useful without making it untrustworthy. A sales recommendation must be grounded in known CRM evidence, survive malformed or empty model output, and never invent a lead that is not present in the dataset.
We addressed that with strict JSON Schema output, explicit prompt boundaries, server-side ID validation, bounded inputs, sanitized data, clean timeout and empty-result states, and human approval before outreach. We also added realistic non-sensitive sample data so judges can test the complete experience without access to ZionPods' private CRM.
Accomplishments that we're proud of
- Built a coherent end-to-end product rather than a disconnected AI prototype.
- Turned model reasoning into visible map state and actionable workflow.
- Grounded every recommendation in supplied sales signals.
- Kept API credentials and contact details out of the browser-to-model payload.
- Made the public demo immediately testable with sample data.
- Added RLS policies and automated security tests for the underlying CRM platform.
What we learned
Natural-language analytics are most compelling when the answer does more than produce text. By converting strict model output into filters, selections, evidence, and follow-up actions, the AI becomes part of the product's operating loop.
We also learned that human-in-the-loop design improves both trust and usability. Zion Scout does the expensive synthesis work, but the salesperson keeps control over which lead to pursue and whether any message is sent.
What's next for Zion Scout
Next we will add market-change signals, recent CRM activity, recommendation feedback, and operator-facing competitive intelligence. We also plan to measure which recommendations salespeople accept and which actions move leads through the pipeline, while preserving tenant isolation and human approval.
Built With
- codex
- gpt-5.6
- leaflet.js
- next.js
- openstreetmap
- postgis
- postgresql
- responses
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.