Submit an entry
Entries are JSON files in a public repo. Add something we missed, or argue with a verdict you think is wrong — both are pull requests, and disagreement is the point.
Easier to argue with, easier to merge.
If canivibecodeit rated it NOT REALLY, "should you" is not a question. Out of scope.
Not the other way around. The validator fails the build if the verdict is more than one band away from its own numbers.
Opinions with consequences attached have to show their working. The validator enforces this.
It is what you paste BEFORE you build. Build prompts go to canivibecodeit, and every entry here links to theirs.
It goes in the OG image. Make it land.
Fetched, not hotlinked.
node scripts/validate-entries.mjs
No exceptions, no "featured" placements, no paid removals.
{
"slug": "lowercase-hyphenated",
"name": "Display Name",
"domain": "example.com",
"category": "one of the keys in data/taxonomy.json",
"subcategory": null,
"tagline": "One line on what it does",
"priceMonthly": 12,
"pricing": {
"plan": "Growth",
"basis": "monthly",
"unit": "flat | per-seat | usage | one-time | custom",
"native": "12 USD",
"source": "https://example.com/pricing",
"checkedOn": "YYYY-MM-DD",
"confidence": "high | medium | low",
"notes": null
},
"canIVibeCodeIt": {
"listed": true,
"slug": "their-slug",
"url": "https://canivibecodeit.com/their-slug",
"verdict": "yes | kinda",
"diyTimeEstimate": "one sitting | multi-day",
"checkedOn": "YYYY-MM-DD",
"agreement": "agree | we-are-harsher | we-are-softer | different-question"
},
"verdict": "ship-it | demo-only | your-funeral | absolutely-not",
"verdictConfidence": "high | medium | low",
"verdictSummary": "The honest answer, one paragraph.",
"hotTake": "<=120 chars. This is the tweet.",
"buildEase": 7,
"risk": {
"blastRadius": 0,
"dataSensitivity": 0,
"securitySurface": 0,
"regulatoryExposure": 0,
"reversibility": 0,
"maintenanceTax": 0
},
"riskTags": [
"1 to 3, strongest first"
],
"greenFlags": [],
"whoPaysWhenItBreaks": "you | your-users | your-customers-customers | a-regulator | someones-health",
"whatBreaks": [],
"the3amScenario": null,
"shipItIf": [],
"dontShipItIf": [],
"guardrails": [],
"guardrailPrompt": null,
"exitPlan": null,
"buyInsteadIf": null,
"cheaperThanYourWeekend": true,
"priorArt": [],
"relatedSlugs": [],
"faqs": [],
"sources": [],
"pagePriority": 3,
"notes": null,
"lastReviewed": "YYYY-MM-DD"
}Every key must be present. Use null for missing prose and [] for empty lists. The six risk dimensions are whole numbers 0–10; buildEase is 0–10 to at most one decimal. Category is a key in data/taxonomy.json. what the dimensions mean →
Submitting a tool that should be replaced, with a working prompt to replace it? That belongs at canivibecodeit, not here. They own the “can”, we own the “should”, and neither of us wants to maintain the other’s half.