agentpoints ยท job list
Persistent backlog of deferred work, surfaced issues, and "we'll come back to this" items so nothing drops off the radar between sessions.
Renders at /queue. Updated by committing to docs/queue.md. Anything in here is open unless explicitly marked (done) โ kept visible for ~7 days after close so ben can see what shipped recently.
Last updated: 2026-05-18.
p1 โ open
strategic frame โ 2026-05-19 (read before all p1 work)
Ben directive 2026-05-19: the broad micro-niche search campaign worked (346 niches searched, 3,366 candidates queued, $3.33 spent, 0 zero-yield). Search supply is no longer the bottleneck. Quality, classification, dedupe, and intelligence are.
Strategic frame:
- AgentPoints does not just list agents. It shows where agents are missing. Map of the agentic economy. Value for founders, VCs, operators, AI-displaced workers.
- Solved.works is the eventual brand โ clearer, more human, aligns with "helping people find what AI has not solved yet". Rebrand frozen until the intelligence layer is sharper โ final brand fits the bigger mission, not the current state.
- Directories are source seams, not junk. AI Agents Directory, theresanaiforthat, futuretools, etc. should be crawled for outbound product links (not inserted as agent cards). Store the directory page as
discoveredVia/sourceUrl, queue the destination product sites as candidates. - Startup briefs stay free + shareable. No paywall. Goal is viral distribution + market authority. Real prize: becoming the default map of the agentic economy.
Priority order for the intelligence layer (top of queue):
1. Wait + monitor the Gemini classifier cron processing the 3,366 new candidates. Real downstream FP rate is the next measurable signal.
2. Directory-aware crawler (next-extract pattern) โ convert known directories from "ban" to "extract outbound product URLs". Fixes the G2 / aiagentsdirectory tension.
3. Startup-viability score layer โ full spec at docs/specs/startup-viability-scores.md. 6 fields, composite formula, 4th lens on /opportunities, bubble-chart re-encoding, "Generate startup brief" one-click.
4. Free shareable startup briefs โ full spec at docs/specs/startup-briefs-free-shareable.md. No paywall, public URL, share-to-X/LinkedIn, soft email capture after view, success-metrics list.
5. Cap-constrained deepening pass โ full spec at docs/specs/cap-constrained-deepening-pass.md. 79 niches qualify; 12 niche-specific variants per niche via Sonnet; target 25-50 accepted; ~$5 budget.
Status: strategic frame set 2026-05-19. Active item: #1 (passive โ let classifier work).
opportunity-scoring method v1 (move off v0 multiplicative)
Ben directive 2026-05-18: current scoring is v0 (pure multiplicative expectedDensity = ag ร ec ร ge / 10000). Too punitive โ one low score (especially geo) crushes economically huge niches. Move to v1.
Spec (full text saved at /opt/pincrs/data/opportunities/method-v1-spec.txt if I copy it across):
v1 expected-density formula:
```
base = 0.45 ร agentability + 0.40 ร economic + 0.15 ร geo
geo multiplier:
geo โฅ 85 โ ร1.00
70-84 โ ร0.95
55-69 โ ร0.85
<55 โ ร0.70
expectedDensity = round(base ร multiplier)
```
v1 observed-coverage weighting (by agentLevel):
- L4/L5: 1.0
- L3 workflow agent: 0.8
- L2 tool-using assistant: 0.6
- L1 FAQ/chat: 0.3
- L0 infra/API/framework/marketplace: 0.2-0.4 (depending on relevance)
- unknown: 0.2 until classified
v1 opportunity score:
```
opportunityScore = expectedDensity โ min(60, observedWeightedDensity ร 8)
```
v1 crowding labels: empty(0) / sparse(โค2) / emerging(โค6) / crowded(>6) weighted nodes.
Also build: /opportunities/method public page explaining all this โ agentability/economic/geo definitions, formula, observed-coverage weighting, crowding, limitations. Link from /opportunities as "How this is scored". Add limitation note: "This is directional market intelligence based on the live AgentPoints directory and heuristic scoring. It is not investment advice."
Why it matters: v0 buries regulated-but-valuable niches (clinical decisioning, trading) because of low geo. v1 lets economic + agentability carry the score with geo as a confidence dampener, not a guillotine.
Status: queued. Implement after v0 estimates are reviewed/averaged.
singleton micro-niche review (due 2026-06-01)
Why it matters: 29 micro-niches added 2026-05-18 in the second-pass seed each matched exactly one public agent. Per ben's directive, keep them in place for 14 days, then review: if a singleton STILL has โค1 public match, decide whether it's a real niche awaiting more discoveries or a one-off product worth dropping.
Review on: 2026-06-01. Run scripts/_post_merge_report.js and look at the "singletons (1)" section.
The 29 singletons: phishing-triage-agent, cloud-resource-request-fulfilment, ci-cd-optimization-agent, on-call-management-agent, press-release-generation-agent, faq-generation-agent, product-description-generation, cross-sell-upsell-agent, production-schedule-optimization, anomaly-classification-agent, production-yield-optimization, water-network-monitoring-agent, freight-shipping-coordinator, freight-invoice-audit-agent, inventory-tracking-agent, camera-feed-operator-agent, covenant-extraction-agent, radiology-reporting-copilot, chemical-regulatory-intelligence, text-to-cad-agent, ai-spreadsheet-agent, quantum-control-automation, ai-risk-vendor-monitoring, autonomous-ai-research-lab, ai-compute-optimization-infra, residency-scheduling-agent, ai-agent-framework-hooks, llm-serving-infrastructure (+ agent-network-protocol post-merge).
Status: scheduled for 2026-06-01.
agent-class classifier is not on a cron โ most rows show "unknown"
Ben observation 2026-05-18: "Why do all agents not have the following info updated?!"
Example from a freshly-indexed card:
```
agent class
agent level: unknown
action authority: unknown
human oversight: unknown
task scope: unknown
node scope: product
persistence: persistent identity
owner type: commercial owner
registerability: claimable indexed row
```
The four unknown fields (agentLevel / actionAuthority / humanOversight / taskScope) are populated by scripts/classify-agent-levels.js. That script has never been wired to a systemd timer โ it only runs when manually invoked with npm run classify:agent-levels. Same failure mode as the opportunity scorer was earlier today: built as a script, never put on a cron.
The four populated fields (nodeScope / persistenceLevel / ownerType / registerability) come from scripts/backfill-identity-and-productisation.js, also manual-only.
Fix:
1. Add a systemd timer on prod that runs classify-agent-levels.js hourly (cheap, deterministic, no LLM).
2. Add a systemd timer for the identity-fields backfill too.
3. Better: call both inline from /api/agent/index right after row creation, so new agents are classified within seconds rather than waiting for the cron tick (mirrors the inline opportunity-scorer slice already drafted at lib/inline-score.ts).
Status: queued.
placeholder-domain block at /api/agent/index
Why it matters: probed 200 newest agents on 2026-05-18 โ 97% sourceUrls alive, BUT 2 of the 4 failures were LLM-hallucinated example.com URLs (https://research-agent.example.com, https://research-synthesis.example.com). The reserved IANA placeholder domains (example.com, example.net, example.org, placeholder.com, localhost, IP literals) should be blocked at the gate.
Sketch: add a PLACEHOLDER_HOSTS set to the existing quality gate in /api/agent/index/route.ts, reject if every sourceUrl hostname matches. Trivial. Also a one-shot to retire existing example.com rows.
Status: queued, ~30 min job.
source-url liveness recheck
Why it matters: the existing agentpoints-recheck.timer (daily 04:17 UTC) runs ENRICHMENT โ refreshes DirectoryProfile fields, re-reads source pages for new content. It does NOT HEAD-probe the Agent.sourceUrls[] list for liveness. A URL that goes 404 a year from now stays on the agent row indefinitely. Ben noticed this on 2026-05-18.
Sketch: new script scripts/probe-source-urls.js already drafted as a one-shot. Promote to a daily cron: HEAD each sourceUrl with a 6s timeout + browser UA, store Agent.sourceUrlStatus (alive/dead/checked-at), surface "broken source link" pill on cards with all-dead URLs. Run nightly at low priority (~$0 cost, just network + DB writes).
Status: queued, half-built (probe script exists).
pricing crawler (deeper extraction)
Why it matters: 56% of cards (893 of 1,594) sit at "Pricing not yet known" after the UI fix shipped on 2026-05-18. Enricher's first-pass extraction is missing pricing on a majority. Most "missing" cards aren't actually missing โ they're at /pricing or /plans on the source domain and the enricher didn't follow that link.
Sketch: when first-pass enrichment leaves pricingModel=null|unknown, run a focused follow-up: probe /pricing, /plans, /price, /pricing/, /plans/, /tariffs on the source domain, fetch the first that returns 200, feed to LLM with a strict "extract the pricing model + tier list" prompt. Adds ~1 HTTP fetch + 1 small LLM call per affected card.
Estimated lift: could reduce "Pricing not yet known" from 56% to maybe 25-35%.
Status: queued. Not started.
classifier throughput tuning
Why it matters: the 2026-05-18 funnel report showed candidates queue ~31h between insert and classifier verdict. Classifier is FIFO with capacity ~800/hour; spider was inserting much faster overnight. The classifier isn't broken, it's under-resourced.
Sketch: the classifier service runs every 15 min with batch=20 ร maxBatches=10 = 200 candidates per tick. Two knobs:
maxBatchesโ 50: 1,000 candidates per tick, 4,000/hour. Clears overnight backlogs in ~6h instead of 31h. ~5ร OpenRouter spend on the classifier (still cheap at ~$10/day).- Or: aggressive pre-classifier domain blocklist (tripadvisor.de, youtube, etc.) so junk doesn't even hit the LLM.
Status: queued. Ben directive: "do not tune classifier throughput yet" (during the opp-seeded debug). Lift now that opp-seeded is unblocked.
10-language global rollout
Why it matters: Full plan saved at project_agentpoints_multilingual_plan.md in claude memory. Top-10 markets (US/UK/DE/FR/ES/PT/JP/IN/KO/IT). Per ben: "First 1500 must be high quality" โ the language rollout is the natural next coverage push once the search-factory is stable.
Sketch: schema adds Agent.sourceLanguage + Agent.bioNative + DirectoryProfile.whatItDoesNative. overnight-loop.js rotates (country, language) pairs across batches. Sonnet generates queries in target language. Card UI gets EN โ <lang> toggle.
Sequencing: Germany pilot first for 24h to validate yield + quality, then full firehose. Cost: ~$1,300/month at full volume.
Status: plan saved, not started.
in-card "request pricing" CTA
Why it matters: complement to the operator claim-prompt โ let visitors flag "this card needs pricing" as a demand signal we can route to outreach.
Sketch: small link under the "Pricing not yet known" headline: โ Flag for outreach. Click sets Agent.needsPricingOutreach = true. Cron later notifies ben or DM's the owner.
Status: discussed 2026-05-18, queued.
p2 โ open
funnel-investigation follow-up: domain blocklist pre-classifier
The 2026-05-18 funnel report observed: "Drop low-signal candidates pre-classifier โ domain blocklist of known-junk hosts (tripadvisor/youtube/wikipedia) so the classifier doesn't waste its budget." Listed as option 3 in that report. Currently un-actioned.
opt out #1246, #1277, openai_operator_ai (pending ben approval)
Three indexed rows that the 2026-05-17 quality gate would now block but that landed before the gate shipped. Should be opted-out so they stop appearing in the directory. Per the 2026-05-13 ledger-rule incident: I won't touch these without explicit ben go-ahead.
run-alternative-to-x.js instrumentation
Only the UA fix landed on this script during the 2026-05-18 opp-seeded debug. The full per-result skip-reason instrumentation that went into run-opportunity-seeded.js was not back-ported. Worth doing before the daily 06:15 UTC alt-daily cron fires for real coverage.
bilingual cards UI toggle
Schema fields for bioNative + sourceLanguage are not yet on the Agent model. Part of the 10-language rollout but standalone-shippable once a non-English agent gets indexed.
"Most missing" dashboard on /agents/review
Today's /agents/review queues needsReview=true rows. Could augment with a sort: "rows with no pricing, no DirectoryProfile, oldest first" so review effort goes where the gaps are biggest.
p3 โ open
MCP server exposing the directory
The directory is an asset for consumer agents (Hermes, OpenClaw, etc.) to query. Eventually we want an MCP server they can connect to so the API is first-class for agent consumption. Defer until at least one consumer agent is using us heavily.
A2A-shaped query endpoint
Same theme as the MCP server: agents querying /api/agents?niche=...&agentLevel=L3&country=DE should get an A2A-spec response.
Wallet UI + P2P transfers
Per the long-term plan: centralised ledger + wallet first, external bridge later. Schema supports it; UI exposes only balances at present. Send-to-handle + receive flow not yet built.
Domain-control claim flow (well-known endpoint)
Schema field domainClaimToken exists. Endpoint /api/agent/claim-wellknown exists. UI flow + docs for the operator side haven't been built yet.
recently done (last 7 days)
- 2026-05-18 โ opportunity scorer was on no cron at all (last run 27h ago). Wired
pincrs-score-opportunities.timerto run hourly at :32 UTC on prod. Coverage 17.8% โ 23.0% from one run; will climb as the cron ticks. - 2026-05-18 โ homepage charts merged into single panel (search bar + growth chart + map thumbnail, side-by-side on desktop, stacked on mobile). Search reveals micro-niches the matches sit in.
c/metarelabeledplatform. Search button now always inline with input. - 2026-05-18 โ placeholder-URL bug: 10 curator-listed agents with
*.example.comsourceUrls found. Gate now blocks (a) any all-placeholder request and (b) any request where every sourceUrl fails a HEAD probe. Recycling extended beyond Genesis cohort to any opted-out row. 10 known-bad rows opted out โ next 10 genuine indexes will recycle their regNums in-place. - 2026-05-18 โ opportunity-seeded debug: fixed missing User-Agent + missing discoveryMethod in allowlist. 459-results-0-inserts โ 26/47 inserts on diagnostic run.
- 2026-05-18 โ pricing visibility fix (3-state badge, claim prompt, filter chips, enricher prompt patched, 834 filler-summary rows cleared).
- 2026-05-18 โ opp-seeded cron switched from daily 05:15 to hourly :15 with mode=new (drain unsearched as they appear), weekly Sunday 05:15 for resweep.
- 2026-05-18 โ opportunity-seeded + alternative-to-X search modes shipped (B + alt-to-X loops from the strategy discussion).
- 2026-05-17 โ 18 โ homeClaw โ niche rename across schema + 41 files + 510 refs (DB columns kept stable via Prisma @map).
- 2026-05-17 โ agentLevel classification (L0-L5) + actionAuthority + humanOversight + taskScope on Agent. Classifier shipped. Live on /graph quadrant + /agents/[handle] card + opportunity scorer.
- 2026-05-17 โ quality gate at /api/agent/index (debug-marker bios, article-title handles, sentence-shaped handles, pure-media sources).
- 2026-05-17 โ strip-bio-debug-prefix one-shot (307 + 4 rows cleaned of [search_factory_*]/query: prefixes).
- 2026-05-17 โ agent-card identity block + opportunities map productisation + niches ร opportunity scatter.
conventions
- Add a new item by editing
docs/queue.mdand committing. Markdown only. - Move from open โ done by editing in place, adding date + 1-line summary.
- After ~7 days in "done", remove (git history preserves it).
- Priority: p1 = next slice, p2 = soon, p3 = strategic / deferred.