{"url":"https://ticulate.com/nick/ink","live":true,"project":{"slug":"ink","owner":"Nick","ownerHandle":"nick","name":"Ink","summary":"An AI sentiment-trading agent built in public: it reads live news and social chatter, decides, and publishes every decision at get.ink.","status":"ontrack","visibility":"public","next":"Build the memory loop: when a trade closes, Ink writes the outcome and lesson, distills lessons nightly, and feeds them into future decisions.","started":null,"target":null,"updated":"14 Aug","updatedAt":"2026-08-14T17:29:20.076Z","done":17,"total":17,"health":null,"logo":null,"links":[],"purpose":{"why":"Get an AI agent trading on the owner's behalf from live information — news and social sentiment — rather than technical indicators or backtests. The build is public: every decision, trade and lesson is published as it happens, so the project doubles as a verifiable experiment.","who":"Nick (mcinnisdev), the owner and sole operator, and the public audience following the build at letidle.com.","success":"Idle trades a paper account well enough, for long enough, to be trusted with a small live account through Schwab — with the whole record public."}},"features":[{"id":"news-ingestion","name":"Real-time news ingestion","area":"Ingestion","state":"live","version":null,"shipped":"10 Aug","summary":"Alpaca/Benzinga WebSocket, reconnect with backoff, content-hash dedupe, unscored-backlog catch-up on boot.","detail":null,"review":{"status":"none"},"links":[]},{"id":"marketing-site","name":"Marketing site and design system","area":"Site","state":"live","version":null,"shipped":"09 Aug","summary":"Phosphor-green CRT design system, SEO metadata, favicon, og-image; static pages, no build step.","detail":null,"review":{"status":"none"},"links":[]},{"id":"ops-live-page","name":"Ops live mirror page","area":"Site","state":"live","version":null,"shipped":"10 Aug","summary":"Public read-only mirror of the trading desk: scored feed, signals, decisions with rationales, sim account, freshness stamp.","detail":null,"review":{"status":"none"},"links":[]},{"id":"roadmap-buildlog","name":"Roadmap and build log pages","area":"Site","state":"live","version":null,"shipped":"10 Aug","summary":"Six-milestone roadmap with honest statuses; build log maintained as things ship, shared data file feeds homepage and full page.","detail":null,"review":{"status":"none"},"links":[]},{"id":"stocktwits-ingestion","name":"Stocktwits ingestion","area":"Ingestion","state":"live","version":null,"shipped":"10 Aug","summary":"Round-robin per-symbol polling of the free public endpoint; isolated failure domain — breakage degrades a badge, nothing else.","detail":null,"review":{"status":"none"},"links":[]},{"id":"sentiment-scoring","name":"Sentiment scoring","area":"Intelligence","state":"live","version":null,"shipped":"10 Aug","summary":"Haiku 4.5 scores micro-batches with structured output (score, confidence, tickers, rationale); pre-filters drop off-universe items before tokens are spent; per-call cost accounting.","detail":null,"review":{"status":"none"},"links":[]},{"id":"signal-aggregation","name":"Signal aggregation","area":"Intelligence","state":"live","version":null,"shipped":"10 Aug","summary":"Per-symbol rolling score, confidence- and source-weighted with exponential recency decay; threshold crossings persist for the agent.","detail":null,"review":{"status":"none"},"links":[]},{"id":"decision-agent","name":"Decision agent","area":"Intelligence","state":"live","version":null,"shipped":"10 Aug","summary":"Opus 5 on the SDK tool runner with a frozen cached system prompt; every order requires a thesis and calibrated confidence; explicit pass tool; scheduler gates on cooldown, materiality, market hours and budget.","detail":null,"review":{"status":"none"},"links":[]},{"id":"risk-manager","name":"Risk manager","area":"Safety","state":"live","version":null,"shipped":"10 Aug","summary":"12 ordered deterministic rules between the model and any broker; first failure rejects with the rule name; 12/12 self-test passing.","detail":null,"review":{"status":"none"},"links":[]},{"id":"kill-switch","name":"Kill switch","area":"Safety","state":"live","version":null,"shipped":"10 Aug","summary":"Cancel-all plus flatten; halt flag persists across restarts; triggered from dashboard, CLI, or the daily-loss rule; resume is CLI-only.","detail":null,"review":{"status":"none"},"links":[]},{"id":"budget-guard","name":"LLM budget guard","area":"Safety","state":"live","version":null,"shipped":"10 Aug","summary":"Every call cost-logged; per-purpose soft caps and a 10 dollar/day hard cap checked before every call.","detail":null,"review":{"status":"none"},"links":[]},{"id":"publisher","name":"Git-push publisher","area":"Publishing","state":"live","version":null,"shipped":"10 Aug","summary":"Sanitized allowlist snapshot committed to the site repo every 10 minutes with hash-skip; every snapshot is a verifiable git commit.","detail":null,"review":{"status":"none"},"links":[]},{"id":"equity-snapshots","name":"Equity snapshot collection","area":"Publishing","state":"live","version":null,"shipped":"10 Aug","summary":"Account equity, cash and deployed captured every 10 minutes; raw series for the future public track record.","detail":null,"review":{"status":"none"},"links":[]},{"id":"ops-dashboard","name":"Local ops dashboard","area":"Ops","state":"live","version":null,"shipped":"09 Aug","summary":"SSE live view: scored feed, signals board, decisions panel with manual run, spend meter, feed badges, kill switch.","detail":null,"review":{"status":"none"},"links":[]},{"id":"scheduled-runner","name":"Scheduled-task runner","area":"Ops","state":"live","version":null,"shipped":"10 Aug","summary":"Windows scheduled task runs node directly at logon, auto-restarts up to 3 times, logs to file; double-click launcher for a visible console.","detail":null,"review":{"status":"none"},"links":[]},{"id":"broker-adapters","name":"Broker adapters","area":"Execution","state":"live","version":null,"shipped":"13 Aug","summary":"One broker interface, swappable implementations. Paper trading on Alpaca is now the active mode; the dry-run simulator remains available for testing and Schwab slots in later for live money.","detail":null,"review":{"status":"none"},"links":[]},{"id":"running-totals","name":"Running totals","area":"Publishing","state":"live","version":null,"shipped":"13 Aug","summary":"The dashboard and public live page now carry all-time figures — AI spend, decisions, trades, and profit and loss from the account's starting point — alongside the daily numbers.","detail":null,"review":{"status":"none"},"links":[]}],"roadmap":{"doing":[{"note":"Close entries with outcomes and lessons, distilled nightly, fed into future decisions.","when":"this week","title":"Journal memory loop"}],"planned":[{"note":"Equity curve, journal and strategy stats grow into the live page; the raw series has been collecting since 10 Aug.","title":"Public track record"},{"note":"Did triggered signals predict short-term moves? Required before trusting the strategy.","title":"Signal quality report"},{"note":"Log rotation and stale-feed alerts.","title":"Ops hardening"}],"considering":[{"note":"Blocked on API approval; only after a trusted paper run.","title":"Live trading through Schwab"},{"note":"Deferred; the ingestion is built and disabled.","title":"Reddit as a third feed"}]},"updates":[{"timestamp":"14 Aug","at":"2026-08-14T17:29:20.041Z","statusChange":null,"title":"Ink is now Idle","body":"A slight rebrand: the project moves from get.ink to letidle.com, and the octopus is now called Idle. Same agent, same rules, same record — earlier entries keep the old name because that is what it was called when they happened.","tags":[],"links":[]},{"timestamp":"13 Aug","at":"2026-08-13T13:29:21.212Z","statusChange":"ontrack","title":"Paper trading enabled after 2 clean dry-run sessions. The agent's one simulated trade was well-evidenced and its 15 passes were justified; the record now accumulates on a real paper account.","body":null,"tags":[],"links":[]},{"timestamp":"13 Aug","at":"2026-08-13T13:29:19.383Z","statusChange":null,"title":"Paper trading is on","body":"Ink now places real orders on a simulated-money brokerage account: same signals, same risk rules, but real fills and real market friction from here. The live page gains running totals — all-time AI spend, decisions, trades, and profit and loss measured from the account's starting point — so the record is cumulative, not just today's.","tags":[],"links":[]},{"timestamp":"12 Aug","at":"2026-08-12T12:00:00.000Z","statusChange":null,"title":"Ink chose its first trade","body":"After passing on social hype 7 times in one session, the agent bought a small starter position in Shopify when 2 major banks raised their price targets within minutes of each other — fresh, concrete, corroborated evidence, with a written thesis and an exit plan. The trade was simulated (dry-run mode) and was up 11.65 dollars when the dry-run book was retired a day later. One trade proves nothing statistically; the selection bar it cleared is the point.","tags":[],"links":[]},{"timestamp":"11 Aug","at":"2026-08-11T23:20:15.562Z","statusChange":"ontrack","title":"Dry run complete through a full unattended session with sound decisions and stable publishing. Next gate is the owner's review, then Alpaca paper trading.","body":null,"tags":[],"links":[]},{"timestamp":"11 Aug","at":"2026-08-11T23:20:15.082Z","statusChange":null,"title":"First full unattended market session","body":"11 Aug: 8,394 items ingested, 5,818 scored, 3.14 dollars of AI spend, snapshots published every 10 minutes without a miss. 9 decisions to date, all passes with specific rationales; 0 trades; sim account flat at 100,000 dollars. Next gate: owner review, then paper trading.","tags":["setup"],"links":[]},{"timestamp":"11 Aug","at":"2026-08-11T23:20:14.262Z","statusChange":null,"title":"Ink made its first decision","body":"With four live signals on the desk, the agent passed: recycled social hype, no fresh symbol-specific catalyst worth risking capital. Exactly the selectivity the system prompt asked for, at 4 cents a run.","tags":["setup"],"links":[]}],"feedback":[]}