Work on the liquor_store_agentic_monitor hackathon demo — agentic multimodal retail POS monitoring (mock CV/ASR + POS fusion), Streamlit UI, policy tuning, segments JSON, webhooks, deploy.
npx @senso-ai/shipables install memanj/retail_store_agentic_monitorUse this skill when:
workflow/agents.py (specialist agents, Hypothesis, incident kinds).workflow/run_workflow.py (orchestration, merge logic, CLI).workflow/policy.py or ensuring Streamlit sidebar keys stay in sync with PolicyConfig.data/shift_segments.json or data/pos_events.csv (segments, video_path, audio_path, mock_cv / mock_asr).ui/app.py (tabs, workflow run, Copilot chat, Slack/Discord).workflow/ssl_util.py, certifi).docs/ARCHITECTURE.md, SVG diagrams) or deployment (Dockerfile, Streamlit Cloud, requirements.txt).| Path | Role |
|---|---|
workflow/agents.py | UnderRing, CustomerService, CheckoutSequence, POSPresence, POSAnomaly agents |
workflow/run_workflow.py | LiquorStoreAgentWorkflow, _merge_hypotheses, WorkflowState |
workflow/policy.py | PolicyConfig — single source of policy defaults |
workflow/loaders.py | load_pos_csv, load_segments_json (paths relative to project root) |
workflow/types.py | AVSegment, Hypothesis, IncidentReport, POSEvent |
data/shift_segments.json | Segments + mock_cv / mock_asr + media paths |
ui/app.py | Streamlit UI; ROOT = parent of ui/ |
docs/ARCHITECTURE.md | Mermaid + modality → agent diagrams |
propose(...) returning list[Hypothesis] with stable agent class attribute (name = "...").LiquorStoreAgentWorkflow.__init__ and run() (per-segment vs global POS pass like POSAnomalyAgent)._merge_hypotheses in run_workflow.py if new incident_kind values need recommended_actions heuristics.docs/ARCHITECTURE.md and modality diagram if inputs change.PolicyConfig fields must match Streamlit st.session_state keys built in _init_policy_session / policy_from_session in ui/app.py.policy_from_session().video_path and audio_path in JSON are relative to project root (e.g. media/scenarios/foo.mp4), not necessarily under data/.ROOT / video_path. Files only in data/*.mp4 appear in the “MP4 files in data/” section; scripted expanders still need JSON entries..streamlit/secrets.toml; never commit webhook URLs or API keys.text alongside blocks for reliable client behavior.workflow/ssl_util.urlopen_webhook for outbound HTTPS consistent with certifi.workflow/copilot_chat.py: Whisper STT, chat completions, TTS; OPENAI_API_KEY from env or secrets.st.audio_input requires Streamlit ≥ 1.33 and a secure context (localhost / HTTPS).ui/app.py without putting project root on sys.path (already done via ROOT).audio_path when changing video_path — loaders require both; extract WAV with ffmpeg or use silent WAV pattern from scripts/fetch_live_demo_media.py.git config http.postBuffer 524288000 and git config http.version HTTP/1.1, or use SSH remote..venv, secrets, or SSH private keys — keep them gitignored.cd liquor_store_agentic_monitor
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements-demo.txt
python3 -m streamlit run ui/app.py
CLI workflow (no UI):
python3 -m workflow.run_workflow --root .
From skills/retail_store_agentic_monitor/ (must match Shipables slug memanj/retail_store_agentic_monitor):
shipables login # first time
shipables publish --dry-run
shipables publish
Copy into Cursor for local testing:
cp -r skills/retail_store_agentic_monitor ~/.cursor/skills/retail_store_agentic_monitor
See references/shipables-notes.md and Creating a Skill | Shipables.