Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
FROM python:3.10-slim

WORKDIR /app

# 2026-09-09 (Glama.ai MCP server listing requirement, per the
# awesome-mcp-servers PR feedback): Glama builds and runs this Dockerfile
# directly to verify the MCP server actually starts and responds to
# introspection requests, rather than only checking the live production
# URL. Kept intentionally minimal/production-only -- no ffmpeg/fonts (the
# Video Engine's own is_available() check already degrades gracefully
# without them, same as on Railway if that apt layer were ever missing)
# and no requirements-dev.txt (test-only deps, irrelevant to booting the
# app).
#
# build-essential is included defensively in case QuantLib (a compiled
# C++ library with Python bindings) doesn't ship a prebuilt wheel for
# whatever platform Glama builds on -- without it, that one line in
# requirements.txt could fail to install and take the whole build down.
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# Same placeholder pattern already proven in .github/workflows/ci.yml:
# services/news_service.py's NewsService.__init__ only checks that
# NEWS_API_KEY is *present* at import time -- it never calls the real
# NewsAPI just to let backend.main import successfully. Real deployments
# (Railway) set a genuine key via their own env vars; this container only
# needs to boot and answer MCP introspection, not serve real news data.
ENV NEWS_API_KEY=docker-build-placeholder-not-a-real-key
ENV PORT=8000

EXPOSE 8000

CMD ["sh", "-c", "PYTHONPATH=/app uvicorn backend.main:app --host 0.0.0.0 --port ${PORT}"]
72 changes: 72 additions & 0 deletions directory-submissions-tracker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# XFINLAB — Directory / Marketplace Submission Tracker

Last updated: 2026-09-05

## ✅ Live / Published

| Platform | Status | Listing URL | Notes |
|---|---|---|---|
| RapidAPI | Live, Public | rapidapi.com/studio (XFINLAB Intelligence API project) | Pro tier $29/mo, PayPal payout linked. Check: subscriber count, any reviews needing reply. |
| Postman API Network | Live, Public workspace | Postman — "XFINLAB Intelligence" workspace | OpenAPI imported, all endpoints visible. Check: any forks/usage. |
| Smithery.ai (MCP) | Published | smithery.ai — abcoaj888/xfinlab-intelligence | Scan SUCCESS, 5 tools found, header auth confirmed working. Check: install/call count. |
| LaunchNest | Live, badge published | launchnest.io/p/xfinlab-intelligence-api | Verification badge added to intelligence-api.html. Check: upvotes/comments. |
| NxGn Tools | Live | nxgntools.com/tools/xfinlab-intelligence-api | Confirmed via "Tool Queued for Launch" email. Check: listing went fully live. |
| AlternativeTo.net | Pending review (submission queue) | alternativeto.net/software/xfinlab-intelligence-api | Submitted 2026-09-04. Alternatives added: Robur Terminal + others. Queue can take a while — check "My submissions" for status. |
| SaaSHub.com | **Approved** (2026-09-09 email) | saashub.com (search "XFINLAB") | Live. Email offered optional free "Verify now" (ownership verification, gets a verified badge) and a paid "Premium Listing" upsell — skip the premium one, verify is optional/AJ's call. |
| SaasHunt.ai | Submitted, pending review | saashunt.ai (search "XFINLAB Intelligence API") | India-focused audience. Reviewed within 3-5 business days per their site. |
| KittyLaunch | Draft saved, badge verified live | kittylaunch.com/p/xfinlab-intelligence-api | Free launch tier. Badge confirmed live on intelligence-api.html — verify + publish from dashboard. |
| LaunchIgniter | In progress (Free tier) | launchigniter.com | Free tier chosen (not the $12/$15 paid options) — requires badge + review queue. |
| PeerPush | Submitted | peerpush.com | Free listing. API docs URL linked (openapi.json). Optimized for AI search (ChatGPT/Perplexity/Claude discovery). |

## ⏳ Stuck / needs another attempt

| Platform | Status | URL | Notes |
|---|---|---|---|
| DevHub.best | Badge confirmed live, verify flaky | devhub.best/projects/xfinlab-intelligence-api | Badge is genuinely live on intelligence-api.html (confirmed via direct fetch, both www and non-www). Their own "Verify Backlink" step keeps failing and the submission form loses progress on refresh — this is DevHub's bug, not ours. Retry in a day or two. Declined their "Amplify Your Launch" upsell (10-platform bundle) and "DR Booster" paid service, and skipped "Boost Domain Rating" (looks like a paid link-scheme service, not a real directory). |

## ⏳ Not yet submitted (deprioritized, still worth doing)

Optional/low-priority extras seen in DevHub's "Amplify Your Launch" panel — all free, all modest DR (32-40), low urgency: Smol Hunt, TinyHunt, Smol LaunchPad, Smol Saas, Smol List, Find Tool For, ShipThing. Fine to do opportunistically, not worth blocking on.

## ⚠️ Reddit account-wide content filter (2026-09-05 — important, changes the plan)

Checked the account's own post history (u/labuobuo profile → Posts tab) and found **all 4 posts made this week are showing "Reddit's content filter has removed this post"** — not just r/datasets and r/webdev, but also both older r/SideProject posts that were assumed live. This is NOT a per-subreddit mod issue (flair, karma-per-sub) — it's Reddit's site-wide anti-spam system flagging the account itself, almost certainly because a brand-new account posted the same GitHub/website links across 4 different subreddits within a few days, which is a classic promotional-spam signature.

Revised plan:
1. **Pause posting anything with links for a few days** — let the account's spam-flag heat cool down.
2. Spend this window doing **pure, link-free comments** on other people's threads (see the r/algotrading + r/datasets suggested threads above) to build a genuine activity history.
3. When resuming posts later, **spread them out over time** (not multiple subs in one week) and vary the content/links used — repeating the same URL across many subs in a short window is what likely triggered this.
4. Re-check the Posts tab periodically — if a post's filter banner disappears and it starts showing real comment counts, that one's been cleared.

## Reddit posts

| Subreddit | Status | Notes |
|---|---|---|
| r/SideProject | Posted 2026-09-04 | AMA-style post about the build. Reply to comments for 2-3 hours after posting. |
| r/webdev | Posted 2026-09-05 (Showoff Saturday), auto-removed by content filter | Same account-wide Reddit content-filter issue as r/datasets/r/SideProject below, not a per-subreddit rule violation. r/webdev restricts self-promo to the weekly "Showoff Saturday" megathread anyway — do not post standalone. Next real Showoff Saturday: 2026-09-12 (2026-09-06 was a Sunday, not a Saturday — earlier note here had the date wrong). Plan: same as r/algotrading/r/datasets — build genuine comment history first, then retry on 2026-09-12. |
| r/algotrading | Blocked — account doesn't meet activity requirements | Reddit rejected the post: account needs more karma/activity history before it can post here. Plan: leave genuine (non-promotional) comments on other threads for 1-2 weeks first — see suggested threads below — then retry the draft in reddit-post-drafts.md. |
| r/datasets | Blocked — same account-activity issue | Post itself went up (flaired [self-promotion]/resource, got 1 upvote + 1 comment) but was auto-removed by Reddit's content filter. Tried modmail via old-style compose link (`reddit.com/message/compose?to=/r/datasets`) — got "You can't message that user", same root cause as r/algotrading (account too new/low karma, blocks modmail too, not just posting). Plan: same as r/algotrading — build genuine comment history first, then retry both the post and modmail. |

Suggested threads to leave genuine comments on (no product mention) to build account standing — doing these across subs is fine since it's overall account karma/age that's gating, not just per-subreddit:
- r/algotrading — u/laurenthu — "Reconciling a signal pipeline against the broker: delay, data basis, and intra-bar noise"
- r/algotrading — u/Own-Lingonberry-549 — "What are the biggest engineering challenges when building production-grade algorithmic trading systems?"
- r/algotrading — u/Haunting-Rooster5354 — "Does yfinance update foreign stocks data?"
- r/datasets — u/GenchiJapan — "Japan's tourist rules as a dataset" (posted 2026-09-05) — genuine comment opportunity: ask/comment on the licensing (CC BY 4.0) or how they verify per-row "verified date" freshness, since that's directly relevant to XFINLAB's own null-vs-stale data philosophy without mentioning XFINLAB at all.

## Cold-email pitches — triaged, skip

- **1000tools/1000 SaaS** — paid tiers have real user complaints (2026-05): paid-to-skip-queue submissions ghosted, no support, payment disputes. Free tier might be fine but proceed cautiously.
- **Boost Domain Rating** — "guaranteed DR improvement" framing is a link-scheme red flag. Skip.
- **InsightScout** — cold sales pitch selling their own monitoring SaaS to us, not a directory. Skip.
- **OutBid (SaaSHunt.best)** — pay-to-rank leaderboard scheme. Skip.
- **LinkSalad** (2026-09-07 email) — explicitly markets itself on "high-DR do-follow links" / "SEO friendly exposure" / "gain trusted domain ratings" and is a **paid** submission — same link-scheme red flag as Boost Domain Rating above (a real product directory sells discovery, not backlink authority as the pitch). Skip.
- **TinyHunt** (2026-09-07 email) — free, otherwise fine per the "Smol Hunt/etc." batch note above, but AJ's call (2026-09-07): skip both this and LinkSalad for now — account is still heads-down on the Reddit content-filter/karma-building situation, not adding any more external submissions/link exposure in the meantime.
- **jerrylam224 email** — unclear/unrelated content, not reviewed, AJ said skip.

## Follow-up items

- Reply drafted for Presendapp on dev.to (design-philosophy discussion thread) — AJ to post himself.
- Timothy Bramlett reply (status page question) — sent, closed.
- PH forum follow-up post — posted, not independently re-verified.
- RapidAPI Pro plan's "Requests" object quota still shows 500,000/month (same as Basic/free cap) instead of the intended 10,000 — optional fix, AJ's discretion.
- Open PR to check: none currently open — all recent badge PRs (LaunchNest, DevHub, KittyLaunch) merged into main.