Wocart
Wocart runs the whole cash-on-delivery business for Algerian stores: an Arabic-first checkout, phone verification, Yalidine, ZR Express, NOEST, Guepex and 82 EcoTrack couriers, your own drivers, and M
翻訳待ち
Browse homes from Addis Ababa's developers and property portals in one place, and ask an assistant that answers in English and Amharic, backed by a real broker.
翻訳待ち
コマースPython · TypeScriptGitHub @ermiasdesalegnオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗An AI sales assistant for an independent real-estate broker in Addis Ababa. Buyers chat on Telegram or on the website in English or Amharic; the agent finds matching units, answers worries from stored facts, books site visits and calls, protects the broker's commission, and follows up on its own. The broker watches and steers everything from a live Command Center.
Stack: FastAPI · LangGraph · Gemini · Supabase Postgres + pgvector (RAG) · Scrapy + scrapy-playwright · Next.js 14 · Telegram · Google Calendar · Mapbox · Render + Vercel + GitHub Actions (all free).
Live: website proppulseagent.vercel.app (the broker's Command Center is at /console), Telegram bot @prop_plus_bot, backend health at https://proppulse-agent-44qv.onrender.com/health.
| If you want to see... | Read |
|---|---|
| How LangGraph and RAG are used, step by step, with diagrams | docs/ARCHITECTURE.md (summary below) |
| How listings get in without burning the model quota | Two ingestion strategies and backend/scraper/README.md |
| Why each design choice was made | docs/DECISIONS.md |
| Proof that it works | Evaluation and backend/evals |
| How it is deployed and operated | docs/FREE_DEPLOYMENT.md (Render + Vercel + GitHub Actions) or docs/DEPLOYMENT.md (Cloud Run) |
| The public website and Client Portal | The public site and Client Portal and section 10 of the architecture |
| Security posture | SECURITY.md and, for several agencies on one platform, docs/THREAT_MODEL.md |
| How many agencies share one database safely | Many agencies, one platform, ADR 0001 and the benchmark |
Buyer ── Telegram / web chat ──▶ FastAPI ──▶ LangGraph agent ──▶ Gemini (text, structured, embeddings, voice, images)
│ │
GitHub Actions cron ─────────┤ ├─▶ Supabase Postgres + pgvector (units, projects, buyers, chats, checkpoints, event log)
(reminders, daily run, │ ├─▶ Google Calendar (availability, bookings)
LLM sweep) │ └─▶ Mapbox (routes), Resend (developer emails)
│
Small developer sites ──▶ httpx + BeautifulSoup ──▶ Gemini ──┐
Large portals ──▶ Scrapy on GitHub Actions ──▶ local extraction (Gemini only as a fallback) ──┤
▼ ▼
Durable event log ──live stream──▶ Next.js Command Center IngestionService ─▶ units / projects
(CRM, takeover, board, map, brain, analytics, studio, projects, portals)
Each turn runs a LangGraph state machine and its state is checkpointed in Postgres, so conversations survive restarts.
flowchart LR
S([start]) --> intake
intake -- "human asked / frustrated" --> handoff
intake --> router
router -- search --> discovery
router -- details --> details
router -- affordability --> affordability
router -- compare --> analyst
router -- "book visit or call" --> scheduler
router -- small_talk --> smalltalk
discovery -- matches --> recommend
discovery -- "none, steps left" --> relaxer --> discovery
discovery -- "none, steps used up" --> waitlist
scheduler --> human_gate
intake: language, prompt-injection and hand-off checks, voice-note transcription, history compaction.router: button taps and known phrases are parsed in code; only free text costs a model call (one structured extraction).discovery → relaxer → discovery: a bounded loop that widens the search by rule when nothing fits (budget +12% and neighbouring areas, then +24% and any area), without ever changing what the buyer actually asked for.scheduler → human_gate: books through the calendar, orders multi-stop routes, registers the lead with the developer; a high-value booking hands the chat to the broker.match_properties_hybrid).match_buyers_for_property) so the right people are messaged privately.Details, file names and the SQL: docs/ARCHITECTURE.md.
Listings arrive two ways and meet in one pipeline (IngestionService), which skips unchanged units for free, records price changes, and embeds only genuinely new units.
This is the beginning of the README. Read the rest at the original. Read the full README ↗