People post "is there a site that does X, Y and Z?" every day. Each post is
somebody to answer, and a lot of posts asking for the same thing is a product
worth building. myna asks finds those posts, adds up how many different people
want the same thing, drafts the answer onto a card you paste, and tracks what
the thread and your reply did.
myna asks on # the daemon reads the subs every 30 min, stats every 6 h
myna asks scan # read them now
myna asks # what is new, and the ideas most asked for
myna asks ideas # what people keep asking for; BUILD at 5+ askers
myna asks reply <id> # the answer, on a hand-off card to paste
myna asks stats --refresh # thread score and comments, our reply's score and answersReddit blocks this box and every datacenter address, so nothing here talks to reddit.com.
- Posts come from RSS Amplifier's subreddit mirrors,
https://rssamplifier.com/r/<sub>.json, which its crawler fills. - A sub RSS Amplifier has not read yet, or does not list, falls back to the
newest posts in the Arctic Shift
archive.
myna asks scansays which source each sub used. Turn the fallback off withmyna asks set fallback false. - Full text and numbers come from the archive. A feed item carries a short summary, so the posts that look like asks are read again in one batch.
The archive is free and says "slow down" when two requests arrive back to back, so requests to it are spaced 2.5 s apart and retried once when it complains.
The default subs are where these posts actually appear: the r/Ask* tech subs
(AskProgramming, AskProgrammers, AskTechnology, AskNetsec, AskElectronics,
AskEngineers), then SomebodyMakeThis,
AppIdeas, Lightbulb, software, webapps, macapps, androidapps, iosapps,
selfhosted, productivity, SaaS, SideProject, Entrepreneur, smallbusiness,
nocode and webdev. myna asks subs add <sub> and myna asks subs rm <sub>
change the list.
Two passes.
-
Patterns. A post qualifies on shapes like "is there a…", "looking for a tool…", "someone should build…", "alternatives to…", "best app for…" and "how do you keep track of…". A match in the title counts for more than one in the body.
These cost points: the poster pitching their own tool ("I built…", "my app"), hiring, "would you pay for…", "what app do you wish existed", "startup ideas", and "sharing in case anyone needs it".
The wants are the clause after the ask, split on its commas and "and"s. The body adds any bullet list, plus phrases like "I want it to…" and "it should…".
-
The writer takes a second look when one is configured and
asks.useWriteris on. It throws out what is not really an ask, such as a vendor search or advice dressed as a question. For what it keeps, it writes the wants in the asker's words and gives a short label ("link organizer app"). A post it says nothing about waits for the next scan rather than getting in on the patterns alone.
Every post is judged once, ask or not.
Asks are grouped by the words they share, with the words of asking left out. A new ask joins the idea it shares at least two terms with, provided those shared terms make up a third of the smaller set.
When the writer has labelled both the ask and the idea, the labels must also share a word. "Playlist video downloader" and "digital signage software" share "video" and "playlist" in their wants and are still not one thing.
myna asks ideasranks ideas by how many different people asked insideasks.windowDays(60 days by default), then by the attention their threads got.- An idea is flagged BUILD once
asks.buildAt(5) different people have asked. The daemon's log line andmyna asks scanboth say so. - After that, the status is yours to move:
myna asks idea <id> --status building
myna asks idea <id> --status shipped --product <your product id>
myna asks idea <id> --status ignored
myna asks idea <id> --merge <other id> # the grouping split one thing in two
myna asks idea <id> --label "better name"myna asks product add PairUX https://pairux.com --keywords "screen sharing, remote control" --about "Screen sharing with remote control"
myna asks reply <id>A reply is never posted. It is a hand-off card with:
- the text
- the thread to open
- three steps
When this machine is signed in to myna cloud, the card is also published to mynaposter.com/handoff/ so it can be pasted from a phone. The recap lists it until it is marked done.
- When one of your products answers the ask, matched on its keywords, the
reply names it and says plainly that you work on it. Its link carries
utm_source=reddit&utm_medium=comment&utm_campaign=asks-<idea id>, so the site's own analytics show which idea sent the visit. - When nothing of yours fits, the reply says so and asks the one question a builder needs answered: which of the things they listed they would drop, and what they use today.
- When the writer judges a reply would not help, it declines and nothing is
made.
--text "…"writes your own reply instead.
Mark the card done once it is pasted (myna handoff done <id>). The ask is
then replied.
myna asks set redditUser <name> tells stats who you are on Reddit. Each run
then re-reads every thread still inside asks.trackDays (30 days), oldest
first and asks.statsPerRun (40) at a time. It records:
- the thread's score, comment count and upvote ratio
- for threads you replied in, your comment's score and how many people answered it
A reply found in a thread also marks a card you forgot to close as pasted.
myna asks show <id> prints the history of these numbers, and myna asks stats
totals them.
Searching for "SaaS" or "startup" finds people talking about products. Searching for the complaint itself finds people who have the problem right now and already want a fix, and those threads take a reply far better. So each product carries a list of pain phrases: the words people use when the problem hits them.
myna asks phrases myna --generate the writer drafts them from the product
myna asks phrases myna --add "got only 2 users, nobody sees my posts"
myna asks phrases myna --remove "struggling with posting"
myna asks phrases myna --subs "micro_saas,SaaS,indiehackers"
Good phrases: "can't find communities", "nobody sees my posts", "no one replies to my cold emails". Bad: "social media tool", "SaaS marketing". The cleaner drops category words (saas, startup, platform, software, solution) and the product's own name.
How a scan uses them:
- Every post it reads anyway (RSS Amplifier mirror, archive fallback) is checked against every phrase. Free.
asks.painSearchesarchive searches per scan (default 6): one phrase inside one sub each, about 2.5 s apart. Arctic Shift refuses a text query without a subreddit or an author, so there is no site-wide search. The searches take turns (painCursorinasks.json), so a small budget still reaches every phrase and sub. The archive matches words anywhere, so each hit is re-checked for the phrase before it counts.
A match is an ask with kind: "pain" and the phrase in pain. It:
- scores 0.9 and lists before every other ask (
myna asks list, REST and MCP all sort pain first, then newest); - names the product whose phrase matched, ahead of any keyword match;
- skips the ask judge (it is not asking for a tool) and never counts toward an idea to build (it is demand for something we already sell);
- gets a reply drafted as help with the problem first, product second, and a card whose steps end with comment-share: crosspost their post to r/fleetcoding, then the campaign's subs (social-promo's 75/25 rule).
OutreachGraph does the same for buyer-lead monitors (painPhrases on a
monitor, og buyers phrases).
Each asker is handed to the plugins that collect people through
afterDiscover:
source: "asks"network: "reddit"via: "ask:<idea label>"
OutreachGraph files them as Reddit people, so the person who asked becomes
someone to tell when the idea ships. myna asks set leads false turns this
off.
| CLI | REST | MCP |
|---|---|---|
myna asks |
GET /v1/asks/overview |
myna_asks |
myna asks list |
GET /v1/asks?status=&sub=&idea= |
myna_asks with status |
myna asks show <id> |
GET /v1/asks/:id |
myna_asks with id |
myna asks scan |
POST /v1/asks/scan |
myna_asks_scan |
myna asks reply <id> |
POST /v1/asks/:id/reply |
myna_asks_reply |
myna asks skip/replied <id> |
PATCH /v1/asks/:id |
myna_asks_set |
myna asks ideas / idea <id> |
GET /v1/asks/ideas[/:id] |
myna_asks_ideas |
myna asks idea <id> --status … |
PATCH /v1/asks/ideas/:id |
myna_asks_set |
myna asks stats |
GET /v1/asks/stats?refresh=1 |
myna_asks_stats |
myna asks on/off |
POST /v1/asks/enabled |
myna_asks_set |
myna asks phrases <product> |
GET/PUT /v1/asks/products/:id/phrases |
myna_asks_phrases |
State lives in asks.json in the myna config directory, and settings live
under asks in settings.json.