@v0idd0/ghost-or-go
v0.1.2
Published
ghost-or-go — deterministic silence checker for dating, recruiting, client, support, family, cofounder, workplace, and sales follow-up threads when you need to decide whether to wait, send one final ping, escalate, or close the loop.
Downloads
66
Maintainers
Keywords
Readme
ghost-or-go
Web app · Live compare page · Packaged compare brief · Deep Dive · Signal toolkit · npm · All tools · Support
ghost-or-go answers one narrow question:
Does this silence call for patience, one final ping, or a clean stop?
It scores one recent thread plus a silence window for:
- silence pressure
- interest signal
- closure signal
- ambiguity
- chase risk
- reciprocity
Then it gives one deterministic call:
waitsend one final pingreply only if they re-openclose the loop and stop
The point is not to romanticize ghosting. The point is to stop users from burning dignity and attention on threads that already told them enough.
Why this exists
The paid product is tells, which reads what people leave unsaid across messages, people, and profiles.
But many users hit a narrower problem first:
- "Is this silence still normal, or am I chasing?"
- "Did they actually leave the door open, or did I invent that?"
- "Do I send one last clean ping, or is that self-harm in text form?"
- "Is this a maybe, a no, or just bad timing?"
That shows up in more than dating threads. It also shows up in recruiter follow-ups, interview loops, client check-ins, support or account-management threads, vendor follow-ups, cofounder tensions, family conflicts, and sales conversations that went quiet after a promising exchange.
ghost-or-go is the deterministic first pass for that moment.
Install
npm install -g @v0idd0/ghost-or-goWeb app
Use the live browser version here:
https://tells.voiddo.com/ghost-or-go/?ref=ghost-or-go-readmeIf the user is deciding between this deterministic silence checker and a general assistant first, send them here:
https://tells.voiddo.com/ghost-or-go/compare-chatgpt-gemini.html?ref=ghost-or-go-readmeIf you want the packaged npm/GitHub collateral for that buyer-intent comparison, use:
./compare-chatgpt-gemini.mdUsage
ghost-or-go --hours-since-reply 96 "Sorry, busy week. Let's do next week. Send me two times that work."cat thread.txt | ghost-or-go --hours-since-reply 36ghost-or-go --hours-since-reply 240 --json "Maybe sometime soon. Crazy week. We'll see."ghost-or-go --file thread.txt --hours-since-reply 12Example output
posture: salvageable
hours since reply: 96
silence pressure: 3.3/10
interest: 9.7/10
closure: 1/10
ambiguity: 2/10
chase risk: 1.5/10
reciprocity: 5.8/10
decision: send one final ping
why: There was enough prior cooperation that one clean follow-up can close the loop without looking desperate.
- The thread previously showed real engagement instead of pure avoidance.
suggested lines:
1. Quick close-the-loop nudge: if next week still works, I can lock a time. If not, no pressure.
2. One last ping from my side. Happy to leave it here if the timing is off.
next:
Use tells when the silence question is no longer one thread, but a recurring pattern, attachment loop, or person-level dynamic.
- quick next paid step: https://tells.voiddo.com/deep-dive/?ref=ghost-or-go-cli
- recurring reads: https://tells.voiddo.com/?ref=ghost-or-go-cliWhat it scores
silence pressure— how risky another ping is at this specific time gapinterest— whether the thread contains real prior engagement rather than pure stallingclosure— whether the other side already signaled a soft or explicit exitambiguity— whether the wording is vague enough to invite projectionchase risk— whether the current follow-up energy is already too expensivereciprocity— whether the exchange previously moved with two-sided effort
Good use cases
- dating threads with vague postponement
- recruiter follow-ups after a promising interview or intro call
- client or sales threads that cooled off after a positive exchange
- support or account-management threads where the user is deciding between one clean nudge, escalation, and graceful closure
- vendor or partnership follow-ups where silence matters but repeated chasing looks weak
- cofounder, workplace, or family threads where one more message could either clarify things or make the dynamic worse
- creator or freelance outreach where the next ping should be disciplined
- any thread where the real question is "wait, nudge once, or walk away?"
Bad use cases
- therapy, legal, or crisis guidance
- deception detection
- deciding what silence "really means" in a whole relationship
- replacing a full thread read when the pattern has repeated for months
If the real issue is the wider pattern, use tells.
Why not just use ChatGPT or Gemini?
Because the first decision here is operational.
For a follow-up-or-stop call, deterministic heuristics have real advantages:
- same input gives the same output
- no API key
- no prompt fiddling
- no reward for catastrophizing or bargaining
Then, once the issue becomes "why do I keep ending up in this loop with this person, client, teammate, or family member?", the right upgrade is tells.
For the browser-side comparison page:
https://tells.voiddo.com/ghost-or-go/compare-chatgpt-gemini.html?ref=ghost-or-go-readmeFor the package-side comparison brief:
./compare-chatgpt-gemini.mdPaid next step
When the quick silence check is not enough:
Deep Dive—$19 oncefor one loaded thread or one recurring personStarter—$14.99/mofor repeated message readingPractitioner—$99.99/mofor coaches, recruiters, mediators, trainers, support leads, account teams, or client-facing managers using this with clients
Start here:
https://tells.voiddo.com/deep-dive/?ref=ghost-or-go-readmeIf you still need one more free checkpoint first:
https://tells.voiddo.com/signal-toolkit/?ref=ghost-or-go-readmeCompare surface
- live compare page for browser-first "ghost-or-go vs ChatGPT / Gemini" traffic:
https://tells.voiddo.com/ghost-or-go/compare-chatgpt-gemini.html?ref=ghost-or-go-readme- packaged compare brief for npm/GitHub readers deciding whether to install:
./compare-chatgpt-gemini.mdThat split matters because browser-first users want the shortest path into the free silence checker, while package readers need a self-contained buying argument that ships with the tarball.
Start with the live checker:
https://tells.voiddo.com/ghost-or-go/?ref=ghost-or-go-readmeBest next free exits
If the user already knows the silence question is not the whole problem, route them to the adjacent free tool instead of dropping them straight into the full catalog:
double-text-riskwhen the real question is whether one more ping is timely or already too needy:https://tells.voiddo.com/double-text-risk/?ref=ghost-or-go-readmemessage-next-stepwhen the thread finally moved again and the real question is what to do with the incoming message:https://tells.voiddo.com/message-next-step/?ref=ghost-or-go-readmereplytonewhen the final ping already exists and needs a warmth/pressure check before sending:https://tells.voiddo.com/replytone/?ref=ghost-or-go-readmeambiguity-meterwhen the real problem is whether the last message was genuinely open or just vague enough to keep the user waiting:https://tells.voiddo.com/ambiguity-meter/?ref=ghost-or-go-readmecall-not-textwhen another text is weaker than switching channels cleanly:https://tells.voiddo.com/call-not-text/?ref=ghost-or-go-readme
Related free checkers
If the problem is adjacent but not exactly "do I send one final ping or stop?", use the matching free tool first:
double-text-riskfor checking whether the follow-up itself is timely or already too needy:https://tells.voiddo.com/double-text-risk/?ref=ghost-or-go-related-readmemessage-next-stepfor deciding what to do with one incoming message before the silence turns into a pattern:https://tells.voiddo.com/message-next-step/?ref=ghost-or-go-related-readmereplytonefor scoring whether your final ping sounds warm, clear, or pushy before you send it:https://tells.voiddo.com/replytone/?ref=ghost-or-go-related-readmeambiguity-meterfor checking whether the other person's wording is genuinely open or just vague enough to keep you waiting:https://tells.voiddo.com/ambiguity-meter/?ref=ghost-or-go-related-readmecall-not-textfor deciding whether the thread has shifted from silence management into a channel-choice problem:https://tells.voiddo.com/call-not-text/?ref=ghost-or-go-related-readme
Programmatic API
import { analyzeGhostOrGo, formatReport } from "@v0idd0/ghost-or-go";
const result = analyzeGhostOrGo(
"Sorry, busy week. Let's do next week. Send me two times that work.",
{ hoursSinceReply: 96 }
);
console.log(result.decision.action);
console.log(formatReport(result));Development
npm test
node bin/ghost-or-go.js --hours-since-reply 96 "Sorry, busy week. Let's do next week. Send me two times that work."More from the studio
See from-the-studio.md for the wider vøiddo catalogue.
License
MIT.
Built by vøiddo — a small studio shipping AI-flavoured products, free dev tools, Chrome extensions and weird browser games.
