MALCA YENTA NETWORKS — PROJECT CONTEXT
For AI assistants (Claude, Claude Code, etc.) picking up this project
Last updated: May 13, 2026
Owner: Sam (Zalman) Treitel — sam@hookstreetcapital.com
WHAT THIS IS
SMS-only community information service for observant Jewish communities.
One phone number. Keyword-triggered responses. No app. No login. No smartphone required.
Parent: Malca Yenta Networks LLC (Delaware — not yet filed)
Product 1: LevSMS (community info: schedules, weather, announcements)
Product 2: LevGroup (friend/class digest — same infrastructure)
Launch community: North Woodmere, Nassau County, NY
Local brand: NW Pulse
STATUS (May 13, 2026)
All filings: NOT DONE. Test group: IDENTIFIED (son's friend group NW).
Business plan .docx: in Gmail drafts + workspace folder. Claude Code prompt ready.
LevSMS public site is live from levsms-site/ at https://levsms.com/ with privacy and terms pages. Sam reported on 2026-05-13 that Twilio is connected / OK to work. Connected Gmail did not show a clean A2P approval email, so exact Twilio console status still needs to be recorded.
Current engineering gap: no production SMS router was found in the workspace outside docs/static site. A local Apps Script scaffold now lives in levsms-router-apps-script/ and should be deployed against a new LevSMS backend Google Sheet.
Gmail drafts for full plan + action items + Claude Code prompt — search Gmail for "MALCA YENTA" to retrieve.
ENTITY STRUCTURE
Malca Yenta Networks LLC (Delaware — parent, IP owner)
DBA: LevSMS (community info SMS)
DBA: LevGroup (friend/class digest)
DBA: NW Pulse (North Woodmere local launch)
Why Malca: Hebrew for queen. Sephardic spelling (C not K) avoids Malka Media Group conflict.
Why not "Yenta Networks" alone: "The Yenta Network Inc." is an active NY corp (DOS 4717051, filed 2015).
PRODUCT SPEC — LEVSMS v1
Keywords:
- SCHEDULE → NW weekly minyan schedule (6 lines, fits 1 SMS)
- MENU → available commands list
- WEATHER → 36-hour local forecast
- SUMMARY → community digest (simchos, announcements)
- STOP → unsubscribe (TCPA required, always honor)
- HELP → support info + opt-out
Two-number architecture required:
- Number 1: Schedule/weather/community info — LOW RISK
- Number 2: Sports scores, premium features — MEDIUM RISK, isolated
Why: Kosher carriers (Fig, Genie, Koshernet) actively block numbers that look like AI chatbots. Boys in test group confirmed Fig already blocked OpenAI's SMS number. Product must look like a simple information utility — not AI.
First-time user onboarding:
"Welcome to LevSMS. Text MENU for commands. Text STOP to unsubscribe. Msg & data rates may apply."
Data source: Rabbi Ben in NW creates the weekly schedule manually. System ingests via email/text webhook, error-checks, generates draft, operator reviews, goes live.
LEVGROUP — SECOND PRODUCT
Same infrastructure. Friend group or school class gets dedicated number. Members text updates into it. SUMMARY returns a clean digest (not live group chat).
Privacy requirements: explicit opt-in per member, parental consent for minors, auto-delete stored messages after 24 hrs, STOP removes user entirely.
TECH STACK
- SMS: Twilio (primary)
- Backend: Node.js + Express
- Database: Airtable v1 → Supabase v2
- Hosting: Railway or Render (free tier for v1)
- Intent parsing: OpenAI GPT-4o-mini (server-side, not user-facing)
- Admin: Airtable base
LEGAL & COMPLIANCE
TCPA ($500-$1,500 per violation):
- Only text users who text you first
- STOP must always work
- First message includes sender ID, STOP, "msg & data rates may apply"
- HELP command required
- Keep opt-in/opt-out logs
10DLC (MANDATORY before first SMS):
- Register brand at campaignregistry.com ($4)
- Register campaign ($10/month per)
- 1-3 week processing — do BEFORE building
- Both numbers need separate campaigns
Kosher carrier outreach BEFORE launch: Fig, Genie, Koshernet, TAG.
COPPA for under-13: parental opt-in.
School schedules: written data sharing agreement per school.
TRADEMARK CONFLICTS TO CHECK
- YENTA serial 75640514 (Steven Hoffman) — check class at tmsearch.uspto.gov. If NOT Class 38/42: clear.
- MALCA YENTA — no conflict found. File after LLC.
- LEVSMS — no conflict found. File after LLC.
- File Classes 38 (Telecom) + 42 (Tech Services). $700/mark × 2 = $1,400.
DOMAINS TO REGISTER (porkbun.com, ~$82)
malcayenta.com | malcayentanetworks.com | levsms.com | levsms.io | nwpulse.com
COST SUMMARY
- Tonight: 5 domains ~$82
- This week: DE LLC + registered agent ~$140
- Next week: NY Foreign LLC + DBA + Twilio + 10DLC ~$510
- 30 days: Federal trademarks (2 marks) ~$1,400
- Total to fully protected + operational: ~$2,132
MONETIZATION
- Stream 1: Sponsorship slots ("Brought to you by...") — $100-300/month/slot
- Stream 2: ZIP-code advertising — $50-200/month/advertiser
- Stream 3: Community licensing — $99-299/month/community ($7,500-15,000 MRR at 50-100 communities)
- Stream 4: Vendor directory priority routing — Phase 2
EXPANSION MAP
- North Woodmere NY — LAUNCH (500-800 households)
- Five Towns NY — Phase 2 (~5,000)
- Lakewood NJ — Phase 3 (~15,000+)
- Monsey NY — Phase 3 (avoid Hakol Radio name)
- Teaneck NJ — Phase 3 (~3,000)
- Passaic NJ — Phase 3
KEY BLIND SPOTS
- SMS 160-char limit — design all responses to fit or pay 3× for splits
- Yom Tov schedule changes — build detection + prompt Rabbi Ben
- 10DLC lead time (1-3 weeks) — register before building
- Kosher carrier blocking — proactive outreach before launch
- Single-data-source failure — build backup intake form
- LevGroup 24hr auto-delete — privacy requirement
- Parental consent for minors — formal process
- School data agreements — written permission per school
- Number portability — portability-supporting carrier from day one
- "No online presence" is a feature — market it that way
NAMES RESEARCHED AND REJECTED (do not revisit)
The Kiosk, The Luach, Shamash, Gabbai, HaKol (Hakol Radio conflict), The Maven, The Wire, The Switchboard (kehilla.io), KehillaPulse, LevKehilla, Yenem, Yenta Networks alone, Rabbi Knows, Rebbetzin Yenta, NW Kiosk, Jewish Kiosk, The Dispatch, The Ticker, Whattimeisdavening, Davenontime, The Hub, Kehilla
NEXT SESSION PRIORITIES
- Check domain availability for 5 target domains
- Run USPTO trademark search (YENTA serial 75640514)
- Run NY DOS entity search for "Malca Yenta Networks"
- Generate Delaware Certificate of Formation
- Build v1 Node.js + Twilio SMS backend skeleton
Full automated prompt in Gmail draft: "Malca Yenta Networks LLC — Full Action Plan (DO THIS)"
TWILIO REGISTRATION — COMPLETED 2026-04-30 ✅
Sam completed US A2P 10DLC registration as Sole Proprietor. Confirmation email received. Campaign now pending Twilio vetting (typical 1-3 business days; can be up to 2 weeks for sole prop).
Locked identifiers (non-secret resource SIDs — safe to record)
| Resource | SID | Notes |
|---|---|---|
| Phone Number | (516) 585-2323 | Local 516 area code — community-friendly |
| Customer Profile | BUaf36c5999ae86704df63b1eadd59f885 |
sole prop business profile |
| A2P Brand | BN96a162f44f4e4df3fc2ed654e95cfebd |
sole prop brand registration |
| A2P Campaign | CMea45a10d77cf4b659889d9920048a7d5 |
the use case campaign |
Status update 2026-05-13
Sam reported that Twilio is connected and LevSMS is OK to work. Treat this as console-reported until the exact Twilio Brand/Campaign status is recorded in docs/malca-yenta/launch-packet/STATUS_2026-05-13_LEVSMS.md.
The next practical build step is the Sheet-backed Apps Script router:
- Create or choose the LevSMS backend Google Sheet.
- Install
levsms-router-apps-script/Code.js. - Run
setupLevSmsSheet(). - Deploy Apps Script as a Web App.
- Set the Twilio Messaging Service inbound webhook to that Web App URL using POST.
- Test
MENU,HELP,STOP,START,MINYAN, andZMANIM.
Prior status: pending Campaign vetting
While vetting is in progress:
- Number is provisioned + reserved.
- Inbound SMS → still receivable (Twilio can route to webhook).
- Outbound SMS → may be rate-limited or blocked until vetting passes.
- Once vetting approves → full throughput unlocked.
Vetting typically takes 1-3 business days for sole prop low-volume. Twilio will email when approved. No action needed during this window — Sam can build infrastructure in parallel.
Secrets — DO NOT COMMIT (PropertiesService only)
These two values are the actual auth credentials. Sam sets them himself directly in the Apps Script editor, never pastes them in chat or git:
// In Apps Script editor → Project Settings → Script Properties:
TWILIO_ACCOUNT_SID = AC........... // 34-char, starts with AC
TWILIO_AUTH_TOKEN = ............ // 32-char hex
TWILIO_FROM_NUMBER = +15165852323 // E.164 format
Code reads via PropertiesService.getScriptProperties().getProperty('TWILIO_ACCOUNT_SID'). Per feedback_privacy_guardrails.md — same posture as MIS Schwab credentials.
TWILIO ARCHITECTURE — codified 2026-04-30 (Session 19 pt 4)
Sam started Twilio account setup Apr 29. ChatGPT session covered topology + answered some questions (some right, some wrong — see critique in CONTEXT.md Session 19 pt 4).
Decision (per CLOSURE_STACK.md): build NOW or wait until June? Pending Sam confirmation.
One number, three tiers (the routing model)
Local 516 Twilio number (NOT toll-free — Sam was right to push back)
↓ webhook POST on every inbound SMS
Apps Script doPost (in MalcaYenta sheet, container-bound)
↓ writes raw row
SMS_INTAKE sheet (Timestamp · From · Body · Status)
↓ onChange / onEdit trigger
Router function (misRouteSms_):
1. Lookup From in PHONES tab → tier (PUBLIC / MEMBER / SAM)
2. Parse first word lowercased → command
3. Dispatch by tier:
PUBLIC (any number):
menu, time, weather, parsha, zmanim, minyan
MEMBER (opt-in registry, premium):
all PUBLIC + grocery, alerts, custom triggers
SAM (verified Sam's phone only):
all of above + INTC/<ticker>, news, briefing, draft, mis-on-demand
4. Build reply (160-char or multi-part if MEMBER+)
5. Twilio REST API → reply SMS
6. Log to SMS_LOG sheet (one row per request/response pair)
Cost model (verified 2026-04-30)
| Item | Monthly |
|---|---|
| Local 516 number | ~$1.15 |
| A2P 10DLC sole prop brand fee (HookStreet Capital LLC) | ~$2 (after $4 one-time reg) |
| Inbound SMS (US-to-US) | $0.0079 each |
| Outbound SMS | $0.0083 each |
| MVP scale (Sam + 2-5 testers, ~100 msgs/mo) | ~$5/mo |
| 50-200 users tier (~2,000 msgs/mo) | ~$15-20/mo |
| 500 users tier (~5,000 msgs/mo) | ~$45-50/mo |
| 10,000 users tier (~100k msgs/mo) | ~$800-900/mo (revenue-side scale needed) |
Spoof / abuse protection (architecture)
- Verified-phones registry —
PHONEStab columns:Number · Tier · OptInDate · OptOutDate · Notes. Sam-only commands (INTC, news, briefing) checkPHONES.Tier === 'SAM'. - A2P 10DLC registration — required for US carriers anyway; provides traffic-source verification.
- 3-strikes dedup — if same
From + Bodyarrives 3x in <5 min, reply "Already sent — confirm to resend (Y/N)" instead of firing again. - 2FA for high-trust commands (premium) — when MEMBER tier sends a destructive command, send back "Confirm by replying YES" before executing.
- Rate limit per number — N msgs / hr cap to prevent abuse. Unknown numbers get harder cap than registered.
- Secrets in PropertiesService NEVER git — Twilio Account SID + Auth Token live in
PropertiesService.getScriptProperties(). Same posture as MIS Schwab credentials perfeedback_privacy_guardrails.md.
Connection to other workspace systems
| System | Connection point |
|---|---|
| Voice Intake v0.1 | Same intake-row-triggers-handler pattern (just SMS instead of email-via-Wispr-Flow). Already proves the pattern works. |
| MIS FSE Session 8 | INTC-style ticker commands → read from FINAL_STATE_ENGINE → reply with FSE-formatted SMS. Per FSE doc §9, do NOT build until FSE Sessions 1-7 land. |
| Schedule Compiler (separate ChatGPT session) | THE backend for zmanim + minyan commands. PDFs/screenshots from shul circulars → AI extracts → MASTER_EVENTS sheet → SMS bot serves rows by zip code. |
| BOS | news / briefing Sam-only commands fire BOS Daily Snapshot or Operations Summary on demand. |
| CM Invoice / Mom's tool | Future MEMBER tier could include "send invoice" type commands for mom's wholesale clients. |
MVP scope (1 weekend, Sam does nothing during build)
- Buy local 516 Twilio number
- Register A2P 10DLC sole prop using HookStreet Capital LLC
- Create new Apps Script project bound to MalcaYenta sheet
- Build
doPostrouter with 4 commands:
-menu(any) — list available commands
-time(any) — current Hebrew + English time + sunrise/sunset
-news(Sam-only) — fires BOS Daily Snapshot
-briefing(Sam-only) — fires Operations Summary - Test on Sam's phone + 1 friend's phone
- Total Sam time: ~30 min (verify A2P registration + provide Twilio creds + click Deploy as Web App)
- Total cost month 1: ~$5
Stage 2 (post-MVP)
minyan-by-zipcommand — needs schedule compiler running firstzmanim— needs Hebcal API integration (free)weather— needs OpenWeather or similar (free tier)
Stage 3 (Sam-only premium)
INTCand<any-ticker>— needs FSE foundation laid (FSE Sessions 1-7)draft <topic>— fires HTML email draft generation
Stage 4 (premium MEMBER tier — monetizable)
- Custom personal-assistant triggers
- Stripe payment link for opt-in
- Rate-limit + tier upgrade flow
Open decisions Sam needs to make
- Build now or wait until June? Per CLOSURE_STACK.md "stabilize before scale" — June is the gate. But MVP is small enough (~$5/mo + 1 weekend Claude time) that it could pre-launch as private testing tool now without violating the stabilize rule.
- Use HookStreet Capital LLC for A2P registration, or finally file Malca Yenta Networks LLC first? HSC is faster (LLC exists, can register today). MYN gives proper brand separation but adds 2-3 week delay + filing cost.
- Charge for premium from day one, or free MVP first? Memory
feedback_build_vs_buy.mdsays monetizable differentiated products only. SMS info service IS monetizable — but charging from day 1 may slow growth. - Number portability — buy fresh from Twilio (faster) vs port from US Mobile (slower, complicated). Recommendation: fresh from Twilio. Port later if branding requires the existing number.
Things ChatGPT got wrong (push back)
- Toll-free recommendation — wrong for community SMS use case. Local 516 is correct.
- A2P fearmongering re LLC/EIN — sole prop with SSN works for low volume.
- Zapier suggestion — overkill, doPost handles it directly.
- Cost projections inflated — real MVP cost is $5/mo not $50.
Things ChatGPT got right (take)
- One number, multi-product router architecture
- Sheet-as-inbox pattern with onChange triggers
- Spoof-proof via opt-in registry
- 3-strikes dedup UX
- Connection of personal/public/premium tiers
TWO-ENGINE ARCHITECTURE — codified Apr 30 (Session 19 pt 6, from second ChatGPT session)
The earlier section above had the SMS router. The other chat made the upstream explicit: Schedule Compiler is a SEPARATE engine that runs BEFORE the SMS bot. AI lives in the compiler, NEVER in the live SMS path.
The real product: community information compiler + SMS delivery rail. Compiler creates trusted data. SMS makes it reachable by every phone.
Engine 1 — Schedule Compiler (data factory, AI allowed)
Purpose: Turn messy source material (PDFs, screenshots, WhatsApp dumps, shul circular emails, copied text) into clean approved schedule rows. Runs once a week (or on demand) by an admin (Sam or trained Mildred).
Tabs:
- RAW_UPLOAD_LOG — file name · upload date · source community
- EXTRACTED_EVENTS — AI output before approval
- QC_FLAGS — issues found (ambiguous "after Maariv", conflicts, missing times)
- MASTER_EVENTS — approved structured events
- APPROVED_RESPONSES — what SMS router actually serves (see schema below)
- SETTINGS — formatting rules, naming conventions
Rules (board-grade):
- AI may extract.
- AI may suggest normalization.
- AI may flag conflicts.
- AI may NOT silently guess.
- Human approval required before data becomes live.
- Every approved row must have UpdatedAt and Source.
Engine 2 — SMS Command Router (distribution rail, NO AI)
Purpose: Receive SMS commands, return approved public information. Runs on every inbound text.
Flow:
Twilio inbound SMS
→ Apps Script Web App (doPost)
→ normalize sender/body
→ log inbound (INBOUND_LOG)
→ check STOP/opt-in (CONTACTS)
→ check duplicate request (DUPLICATE_GUARD)
→ check saved ZIP/session (SESSIONS)
→ lookup APPROVED_RESPONSES
→ return SMS-safe response
→ log outbound (OUTBOUND_LOG)
Tabs: INBOUND_LOG · OUTBOUND_LOG · CONTACTS · SESSIONS · COMMANDS · DUPLICATE_GUARD · APPROVED_RESPONSES · SETTINGS
Hard rules (non-negotiable):
- SMS router does NOT read raw uploads.
- SMS router does NOT use AI.
- SMS router does NOT guess.
- SMS router only returns Approved = TRUE rows.
- SMS router never exposes phone numbers.
- SMS router never touches private Hook Street / MIS / trading / invoice data.
- Duplicate same request within window returns: "Already sent at [time]. Reply AGAIN to resend."
- Long responses require MORE or FULL reply.
APPROVED_RESPONSES schema (the bridge between engines)
| Column | Notes |
|---|---|
| Community | "North Woodmere", "Cedarhurst", etc. |
| Zip | 11581, 11516, etc. |
| Area | optional sub-area |
| Command | MINYAN, ZMANIM, WEATHER, PARSHA, etc. |
| ResponseShort | 160-char SMS-safe |
| ResponseFull | longer version triggered by MORE or FULL |
| UpdatedAt | timestamp |
| Source | which file/email/screenshot |
| Approved | TRUE/FALSE |
| ExpiresAt | when the data goes stale (e.g., next Sun) |
| QCStatus | clean / flagged / disputed |
MVP commands (allowed in v0.1)
MENU · HELP · STOP · ZIP · MINYAN · ZMANIM · WEATHER · PARSHA · HOLIDAYS
Sam-only commands (INTC, news, briefing) come AFTER MVP — see Stage 3 above.
Build-phase order (do in this order, do NOT skip ahead)
| Phase | Build | Why this order |
|---|---|---|
| 0 | Sheet schema | Get the columns right before any code |
| 1 | Manual APPROVED_RESPONSES table (no AI yet) | Prove the approved-row → SMS pattern with hand-typed data |
| 2 | SMS Command Router | Twilio doPost → router → reply, reading manual rows |
| 3 | Schedule Compiler / QC | Build extraction layer AFTER SMS works end-to-end |
| 4 | AI extraction helper | Add only after manual entry workflow proven |
| 5+ | PDF/email output, multi-community, sports, marketplace | Defer until Phase 1-4 producing trusted data |
What ChatGPT got right in this second chat (TAKE)
- Two engines, one bridge — APPROVED_RESPONSES is the contract between them. AI lives upstream, never in the live request path.
- Manual data first, AI second — manual paste is the v0.1. AI extraction is Phase 4.
- The biggest product killer is wrong times. Approval gate is non-negotiable.
- One clean source, many output rails — once Schedule Compiler is solid, SMS / email / PDF / website / WhatsApp all become output channels off the same trusted data.
What to push back on / clarify
- The chat says "do not let live SMS bot do AI" — agree, that's the rule. But Sam-only commands (
news,briefing,INTC) DO call into MIS / BOS systems that USE AI internally. The rule should be: public commands serve only Approved rows. Sam-only commands can fire upstream systems that produced their data through approval workflows. - The chat suggests Phase 0/1/2 first. Agree. Most important: NO partner equity, NO new LLC, NO Node.js, NO Airtable, NO Supabase until Phase 1-4 are proven.