new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Nebula: your agent in the meeting you're not invited to.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your agent in the meeting you're not invited to.
For founders selling complex B2B products: scale your sales process without being in every room.
In B2B, the person who signs is rarely the person you met. After a great call, your contact forwards a PDF to the CFO and the CEO. They see a price without the pain, the context or the moment that made their colleague say "wow." They have questions, and nobody is there to answer. Deals don't die in your meeting. They die in the second meeting: the internal one you're not invited to.README 전문 보기 ↗Your agent in the meeting you're not invited to.
For founders selling complex B2B products: scale your sales process without being in every room.
In B2B, the person who signs is rarely the person you met. After a great call, your contact forwards a PDF to the CFO and the CEO. They see a price without the pain, the context or the moment that made their colleague say "wow." They have questions, and nobody is there to answer. Deals don't die in your meeting. They die in the second meeting: the internal one you're not invited to.
The most persuasive thing in any deal is what the buyer's own team said. If your proposal carries their words into the room you can't enter, it sells the way you would.
Nebula turns your meeting into a living proposal.
Design rule: the model writes words; Postgres decides numbers and facts. Nebula cannot invent a price, a discount or a feature.
| Layer | Tool | Role |
|---|---|---|
| Input | Google Meet transcript | What was said |
| Agent | Mastra + Claude | Deal brief, proposal writer, room host, deal pulse |
| Data | Neon Postgres | Pricing rules, product facts, deal memory, stakeholders, signals |
| App | Next.js (web/) | Owner console and API routes; Mastra runs in-process |
| Database driver | @neondatabase/serverless | One HTTPS request per query, fits Vercel functions |
| Deploy | Vercel | Hosting, with the Neon integration for DATABASE_URL |
| Path | Contents |
|---|---|
sql/01_schema.sql | Schema nebula: tenants, plans, modules, product facts, role focus, opportunities, stakeholders, briefs, proposals, events. Multi-tenant from day one. |
sql/02_functions.sql | Deterministic fn_quote, the deal flow functions, the proposal room (fn_join_room, fn_simulate, fn_log_event) and the views for Deal radar. |
sql/03_seed_fail_fast.sql | Customer zero: Fail Fast pricing, modules, role focus and product facts. |
sql/04_test_demo_flow.sql | End-to-end test of the demo script. |
prompts/ | The agent tasks: deal brief, proposal writer, room host, deal radar (text-to-SQL, planned), deal pulse. |
sql/05–09 | Nebula Shield, demo seeds, owner flow, real Fail Fast pricing (volume tiers, implementation waived with commitment, annual = 11 months), the Deals demo (09, fictitious Sierra Verde Logistics), proposal versions (10) and priced extras (11). |
examples/ | Two fictitious meeting transcripts. |
web/ | The Nebula app (Next.js + Mastra + Claude). src/lib/deal-brief-flow.ts turns a transcript into a saved brief; src/mastra/ holds the agents. |
cd web
cp .env.example .env.local # set DATABASE_URL (pooled, Neon branch) and ANTHROPIC_API_KEY
npm install
npm run dev # http://localhost:3000
The deal brief flow: Claude extracts the brief with a typed schema, code checks every quote word for word against the transcript (unmatched quotes are flagged in the UI), and one SQL statement creates the opportunity and saves the brief through fn_save_brief. If Postgres rejects the brief (for example, an unknown module), the error goes back to the model for one retry; nothing is left half-saved.
psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f sql/01_schema.sql
psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f sql/02_functions.sql
psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f sql/03_seed_fail_fast.sql
# optional check (leaves test data; re-run 01–03 to reset)
psql "$DATABASE_URL" -f sql/04_test_demo_flow.sql
| Step | Who | Function |
|---|---|---|
| Create opportunity | App | fn_create_opportunity('FF', company) |
| Save deal brief | Agent → DB | fn_save_brief('FF', 'OPP-0001', 'TR', transcript, brief_json) |
| Draft proposal | DB | fn_create_proposal('FF', 'BRF-0001') |
| Write text | Agent → DB | fn_set_narrative('FF', 'PRP-0001', text) |
| Approve | Human | fn_approve_proposal('FF', 'PRP-0001', 'Natalia Serrano') |
| Send | App → DB | fn_mark_sent('FF', 'PRP-0001') |
| Open the room | App | fn_public_proposal(token), fn_product_facts('FF') |
| Someone enters | App → DB | fn_join_room(token, name, email, title, role) |
| Question / escalation | Agent → DB | fn_log_event(token, 'QU' or 'ES', stakeholder_code, payload) |
| "What if we're 40?" | Agent → DB | fn_simulate(token, stakeholder_code, 40) |
| Seller views | Deals page, Deal pulse | v_proposal_signals, v_stakeholder_signals, v_deal_timeline, v_learning |
| Outcome | Human | fn_close_opportunity('FF', 'OPP-0001', 'W', reason) |
| Page | What it does |
|---|---|
/ Meeting → proposal | Import the Google Meet transcript from a Docs link, extract the brief (company and plan detected), confirm counts, draft, edit, approve, and OK, send it (opens a prefilled Gmail draft; you press Send). |
/versions New version | Import a proposal you sent outside Nebula (PDF), add the meetings that happened since, and Nebula prepares the next version: same prices unless you change them, each request answered with the customer's words, price differences computed by Postgres, pending prices block approval. See prompts/06_proposal_versions.md. |
/deals Deals | Every proposal with its room signals; per deal: people (new faces vs. meeting attendees), the timeline, and Read the room. |
/shield Shield | Security for agents that talk to strangers (see below). |
Customers only ever see /room/{token}: the designed proposal, a PDF download and the agent.
examples/). The brief shows needs, objections and wow moments with the customer's exact words, all checked against the transcript. Draft: Postgres prices it (volume tier, implementation waived with commitment, annual plan). Approve → OK, send it.The implementation reference value (USD 6,000) and the commitment (24 months) in sql/08_real_pricing.sql are placeholders.
The proposal room is an AI agent that anyone at the buyer's company can talk to: an attack surface. Nebula Shield defends it in layers and watches it in ClickHouse.
| Layer | Where | What it stops |
|---|---|---|
| Least privilege | Postgres role nebula_room (sql/05_shield.sql) | The room can only EXECUTE five room functions. No table reads, no other customer, no raw SQL. |
| Token from the URL, never from the model | web/src/lib/room-db.ts | The agent cannot switch to another customer's room. |
| Signed session | web/src/lib/room-turn.ts | A visitor cannot edit their own context to inject instructions. |
| Hardened instructions | web/src/mastra/agents/room-host.ts | Prompt injection, fake owner approval, discount pressure. |
| Output guard | web/src/lib/guard.ts | Another customer's name or a secret never leaves the room. |
| Detection | ClickHouse SQL over every room event (web/src/lib/clickhouse.ts) | Link guessing, injection bursts, discount squeezes, cross-customer probing, output leaks. |
| Remediation | fn_revoke_token in Postgres | A detected attack revokes the proposal link everywhere. |
Dashboard: /shield. Demo flow: simulate 1M room events inside ClickHouse → run the live red team (9 real attacks against the real agent + 12 guessed links) → detect and remediate (the attacked link is revoked in Postgres and the room refuses it).
Setup: run sql/05_shield.sql and sql/06_shield_demo_seed.sql, then set CLICKHOUSE_URL (https://<host>:8443), CLICKHOUSE_USER and CLICKHOUSE_PASSWORD.