🎯 Now / Next
oll.in is THE flagship (committed). The agentic Swiss job-application/career agent for everyday job seekers — the one product that lights up all three spines + the agent seam (proven live). Monetized via a value ladder: CHF 29 Bewerbungsfoto on-ramp → CHF 99 pass → CHF 19/mo Career Radar (first recurring MRR). foto-service UN-PARKED as the on-ramp to the first stranger franc.. 🏁 DECISION (Sam, committed): oll.in is THE flagship — the agentic job-application + career agent for EVERYDAY job seekers (nurse/teacher/tradesperson/admin), the people who today DIY with ChatGPT + pay CHF 40/mo LinkedIn Premium. It's the only product that lights up the whole platform (Core + Model + Memory + the agent seam, all proven live). Sell it via a value ladder with a cheap on-ramp: CHF 29 Bewerbungsfoto → CHF 99 application pass → CHF 19/mo Career Radar (the first recurring revenue in the constellation). foto-service is UN-PARKED — the CHF 29 headshot is the nearest path to the first stranger franc. Crazy-good landing built (landing/ollin-pro.html, everyday-user, agent-at-work mockup, honest illustrative case studies), grounded in a competitor/market research brief + a faceless.so teardown.
⛳ Next: The roadmap to make the flagship real (in order): (1) UN-PARK FOTO = the first franc — code: fresh Core guest-checkout pair, pin the Flux-LoRA model ids (reuse trendfy's live ai-models pipeline), wire the CHF 29 checkout on the landing, foto deploy config; Sam console: Replicate token, Stripe CHF 29 price + live webhook, Coolify app + a domain (shot.oll.am or bewerbungsfoto.ch); then prove a real card → real headshot → delivered. (2) Build the agent's job-SCOUT half — legal job APIs (Adzuna/Arbeitnow/Jooble); the drafting half is already live via oll-mcp. (3) Run the distribution playbook — comparison pages (vs LinkedIn Premium / vs ChatGPT / AI Bewerbungsfoto vs the CHF 300 studio), free tools, the self-select live demo, post in Swiss channels.
✅ Shipped — what we've done
- 🏁 oll.in committed as THE flagship (Sam) — everyday-person job agent; value ladder CHF 29 foto on-ramp → CHF 99 pass → CHF 19/mo Career Radar; foto UN-PARKED as the first-franc on-ramp
- 🟢 Crazy-good oll.in landing built (landing/ollin-pro.html) — everyday-user positioning, agent-at-work mockup, honest illustrative case studies (nurse/teacher/plumber); grounded in a competitor+market research brief + faceless.so teardown
- 🟢 Agent layer LIVE — OpenCLAW → oll-mcp seam (7 tools) → live write.oll.am (real Groq) + memory.oll.am (real cited retrieval), proven end-to-end in the OpenCLAW chat
- 🟢 oll-mcp memory tools — retrieval-first `ollam_memory_search` (+ ingest) added; real cited chunks, zero generation, 39 tests (feat/oll-mcp-thin)
- 🟢 Postiz distribution layer DEPLOY-READY (PR #83) — the factory megaphone: compose + runbook + OpenCLAW→Postiz wiring, verified local boot, not deployed
- 🟢 Platform 2.0 consolidated — architecture page #platform-2 with 4 C4 diagrams + agent layer marked LIVE; Strategy updated (category-positioning, oll.in flagship, focus-not-sprawl)
- 🟢 CiteBible money path VERIFIED LIVE (browser e2e) — free cited retrieval + magic-link sign-in 200; the 'unknown product' block is gone, Pro sign-in works end-to-end
- 🟢 Platform 2.0 — the Memory spine (oll-memory) LIVE at memory.oll.am; Core + Model + Memory = three frozen spines, the platform now knows the user
- 🟢 CiteBible LIVE at citebible.oll.am/carry — the first memory-spine PRODUCT: type what you're carrying → cited scripture → write-from (public bible workspace)
- 🟢 ollwrite LIVE — 3-pane memory sidecar (Your Knowledge · Manuscript · Chat), corpus-grounded cited writing on the write + memory spines
- 🟢 CiteBible v1 — FULLY BUILT + LIVE (free) at citebible.oll.am/carry: FREE, no-login retrieval of grounded, verse-level, cited scripture (WEB). Product #3, all 9 overnight tasks done. Chain: frontend → oll-memory → oll-ollama nomic + Neon oll_memory (32,284 verse nodes) → oll-model step-back rewrite. Retrieval tuned genuinely pastoral (deployed 9ed1d40: prefer verse-level, vector floor drops keyword noise, chapters enriched with best_verse — anxiety→Proverbs 12:25/Matthew 6, grief→2 Corinthians 1:4/laments, hopeless→Psalm 42/Romans 15:13). Root / →/carry 308. Pro-generation (write FROM the verses, fail-closed on oll_pro) built + wired — awaiting Core ignition (PRODUCT_VERIFY_BASE_CITEBIBLE), does not charge yet; no stranger has paid
- 🟢 CiteBible SEO front door — the honest free surface: title/desc/OG/JSON-LD/robots/sitemap on /carry + 26 programmatic 'Scripture for {situation}' pages at /for/{slug} + a /for hub (grounded cited verses, per-page JSON-LD, 28-URL sitemap). Built on the frontend feat branch — publishes to the public domain on merge
- 🟢 services/write renamed → services/oll-write (canonical); write.oll.am deployed & rewriting (PR #69)
- 🟢 CI/CD deploy scoped to per-service paths — docs no longer redeploys core/model (PR #70 → stage)
- 🟢 specview 8 text-ops migrated to write.oll.am incl. brainstorm; 880 tests green (PR #130, open)
- 🟢 write.oll.am API hardened — explicit model-error causes (429/timeout/unreachable/…) + default model 8b-instant (PR #71 → stage)
- 🟢 humaniz.me is FRONTEND-ONLY — backend deleted, runs on write.oll.am + core.oll.am (PR #18 merged)
- 🟢 ollwrite real app restyled to the Manuscript design + focus mode (dev-verified, wired to write-service)
- 🟢 write-service streaming + brainstorm — the 13th & 12th endpoints: POST /rewrite/stream (SSE, chunked today, forward-compatible to token streaming) + POST /brainstorm (specview's last local op); 119 tests, real Groq SSE frames verified: PR #67 → stage
- 🟢 ollwrite full v1 op menu — one calm ✨ dropdown grouped Edit (Improve·Rewrite…·Fix grammar·Change tone) / Length (Shorten·Expand) / Transform (Bullets·Simplify·TL;DR), each preview or inline word-diff → Accept/Reject/Retry, verified e2e vs real Groq
- 🟢 ollwrite productionized — a coherent, deployable product: Core magic-link auth (login→oll_token cookie→middleware-gated /editor, JWT forwarded to write-service), rebranded landing→editor flow, Groq/Claude model toggle, standalone Next.js Dockerfile + Coolify README (npm run build green, Playwright-verified). NOT deployed
- 🟢 write-service = an 11-endpoint text-ops engine (improve·clarify·spec·draft·rewrite·expand·compress·simplify·tldr·bullets +health) — Core-JWT gated → frozen oll-model (Groq), ~99 tests, dev-tested vs real Groq: PR #65 + #66 → stage
- 🟢 humaniz on write-service — deleted its per-product prompt/model backend; rewrite route is a thin passthrough, proven e2e (ZERO direct model calls): PR #17 (needs-review)
- 🟢 specview on write-service — 7/8 verbs migrated (14 skill files deleted), real-Groq e2e, 889 tests: PR #129 (needs-review)
- 🟢 ollwrite functional PoC — Plate.js editor on write-service with the flagship per-paragraph word-level diff, browser-verified vs real Groq (llama-3.3-70b): oll-am-ollwrite-product-design.html
- 🟢 Security hardening plan — prod design + P1–P3 checklist (rotate secrets · network isolation · internal-not-public · per-service tokens · rate-limits): oll-am-security-hardening.html
- 🟢 specview → gateway — its model calls already route through oll-model (chain provider seam, 43 tests, merged to specview master); convergence step done
- 🟢 Positioning copy de-staled — landing/vs pages match the 3-placement inference model + honest pay-once (metered vs unmetered)
- 🟢 Hosted Ollama — LIVE & proven via the gateway: oll-model → oll-ollama → self-hosted Ollama (llama3.2:1b, ~4s, provider=ollama), on our VPS with no per-call bill; humaniz.me 'Local (Ollama)' picker wired
- 🟢 humaniz money path — CLOSED & Stripe-verified: webhook enabled + delivering (pending_webhooks=0), keyless #9 merged, /upgrade 200
- 🟢 ollwrite m1 backend — clarify/spec/draft prompt-modes on the write-service (54 tests, real-Groq e2e, PR #57 green → stage; not deployed)
- 🟢 Core — auth · billing · email in one frozen ~300-line service, LIVE at core.oll.am
- 🟢 oll-model gateway — one provider switch = any model, LIVE & frozen at model.oll.am
- 🟢 Hosted Ollama — self-hosted inference now part of our own backend (not just cloud)
- 🟢 Landing oll.am — LIVE with two pay-once Stripe links (CHF 1 waitlist · CHF 9 Pro)
- 🟢 humaniz + specview — both repointed to the gateway, running keyless on Groq
- 🟢 foto-service — real LoRA headshot pipeline built (product #2, the next dollar)
- 🟢 CI/CD dark factory — CI-gated auto-merge to stage · one-button health-gated deploy · docs straight to main
- 🟢 Database-per-service on Neon — Core owns oll_core; every service its own private DB
- 🟢 Build-in-public site — platform diagrams + 20+ ADRs, design-gate-enforced coherence, live timeline
- 🟢 TrustMRR — listed & verified: $11 all-time · $9 MRR live from Stripe
- 🕵️ Job Scout M1 LIVE (2026-07-11): OpenCLAW main-agent loop on semantic memory — 14-tool seam on :5097 (7 job verbs, PR #95), oll-memory rebuilt w/ real nomic embeddings + metadata ingest, 8 postings + CV + 3 standing queries migrated, daily 06:30 cron armed. Operator (Claw) reviewed the plan, verified E2E, caught 3 real bugs (fused-score display, cron delivery footgun, floor drift)
- 🗂️ ollscout Dossier GUI LIVE (2026-07-11 eve, localhost:5311, commit bab46e5): real case sheets from the structured verdict contract (8/20 jobs already structured via Claw's live backfill) — exhibits w/ posting↔CV quotes+cites, sub-score bars, verdict stamp, closest-miss on watched, honest abstention + legacy fallback sheets, RULE YOURSELF (APPLY/PASS/LATER) writing back to the vector store server-side, j/k, /corpus
- 🤝 Joint improvement sprint w/ the operator (2026-07-13): split locked + 4/6 items LIVE same day — dedup hardening (seam, 92 tests, deployed), ghost-guard before alerts, company dossier on ≥70s, lifecycle nudges (all operator-patched into the live cron, byte-verified); board on oll-am-jobscout-review.html §7
- ✍️ Grounded tailoring LIVE (2026-07-13): ollam_cover_letter + ollam_tailor_cv on the seam (113 tests, GROUNDED-IN footers, honest refusal on abstained) + Dossier GUI draft buttons w/ persisted drafts — proven with a real letter on the DeepJudge 83 case; grounding slip (framework not in CV) caught + rule-tightened both sides. Sprint: 5/6 live same day
- 🛡️ THE REVIEW STACK (2026-07-13): 3 independent reviewers (adversarial agents · the operator · external QA), 3 distinct bug classes, ALL fixed same-day — 5 HIGHs incl. LAN-invocable GUI actions + the credential-wiping watchdog heal; seam → 135 tests, 17 tools, contract v4 w/ read path; 8-item GUI polish; operator repaired a live data regression it found itself. Docs: review §9 + design-study §6 (GUI documented, v2 backlog ranked)
- 🌙 Dossier v2 EXECUTED into the app (night 2026-07-13/14, ollscout e2ff7f0): tick band (honest empty state until the scout logs), THE LEDGER from real closest_miss verdicts (5 watched rows + MET·16-cases lead), lifecycle chips w/ advanceCase, corpus source-approval, ≥70 letterhead gate, rail filter/density, draft VERSIONING (regenerate archives priors). Seam contract v5 (174 tests, 19 tools: tick register, source tri-state+source_rule, closest_miss render, offer). Operator emitting closest_miss on its own initiative
- 🏆 Night payoff: AlpineAI 65→80 watched→ALERTED (Telegram) — a real match suppressed a day by the ~120-char snippet clip that silently starved the judge of documented evidence; found because the operator REFUSED twice (couldn't verify → wouldn't act); fixed with ollam_cv_read (21 tools, 180 tests); LGT clip artifact also fixed 60→63; other gaps honestly confirmed real
- 📐 Two-column Dossier LIVE in the app (2026-07-13, ollscout 70fda7c+4ba41e6): coding-panel layout — exhibits expanded left, sticky decision panel right (sub-scores·stamp·ruling·closest-miss·verbs·drafts·letterhead·lifecycle·in-panel LEDGER), drafts collapsed, rail independently scrolling; the 5.8-screen case now 1.89 screens (3.2x). Semantic NL search live (96ms). Mockup + app in sync per Sam's amendments
- 🔍 Launch-quality round COMPLETE (2026-07-13 eve): 24 features browser-verified against real data (58 cases) → the matrix IS the feature doc; cron prompts rebuilt v6/v4 under four-eyes (injection guard, anchor bands + worked example, cv_read rule, abstention fix, 35% compression); prompt contract p1 identical seam↔GUI; floor baked 0.64; ef_search 80; gateway token rotated; the verified ten polished (semantic honesty floor, failed-drafts-look-failed, real signer, pending states…). Zero new features. Docs: review §10
- 🎯 The Abraxas eval (2026-07-13 night): Sam's best catch became the retrieval eval — root cause of the miss: ENGLISH-ONLY interests in a German-speaking market (measured: German queries hit #3-#9, ostjob.ch carried it 4x); search-eval.py harness committed; German interests + 2 sources stored PENDING for Sam; German+English amendment live in the cron. CORPUS RE-GROUNDED from Sam's own AIOps2026 CV (K8s/GitOps/Grafana/audit-trail now evidenced; acl threading fixed a brief blind window, 185 tests). Abraxas judged 71/applied w/ honest gaps (ITIL, multi-cloud) — calibration reference. Verbatim-posting section on the case sheet. Exemplar letter FOUND (Motivationsschreiben) → draft-quality round unblocked
- 🌙 Night 2 COMPLETE (2026-07-14, deploy-eve): eval suite live (6 corpus invariants + 3 calibration checks, watchdog-wired, first run caught 16 real violations → remediation queued w/ operator) · re-judge sweep landed (DeepJudge 74 + SIX 70 ALERTED on Sam's phone; AXA 88 pending re-source) · status/tier seam guard (187 tests) · 7 PRs closed, #96 created+resolved, #94/#95/#96 all green+mergeable · production Dockerfile container-verified · console-only deploy runbook live · 100 orphan pngs purged · 12-row browser regression → 3 findings fixed same night (full CV sections on /corpus, boundary entity-decode, verbatim-German Abraxas)
🔀 Open PRs
| PR | What | State |
|---|---|---|
| humaniz #9 | humaniz backend delegates the model call to oll-model (keyless, 67 tests) | open · VERIFIED + CI fixed · merge is a LIVE DEPLOY → gated on Sam deploying the gateway first |
| oll-am #37 | one-command dev-test harness proving the oll-model chain | open · the e2e proof + tool |
| oll-am #30 | Core /status self-heals a stale Stripe customer (test→live) | open · additive · 58 billing tests |
| oll-am #21 | Core guest-checkout (headshot, product #2) | open · parked (P2) |
| oll-am #82 | one keyless dev docker-compose (Core→SQLite, model→mock) | open · CI GREEN + adversarially cleared · MERGEABLE — awaiting Sam's go |
| oll-am #83 | Postiz distribution layer — the factory megaphone (deploy-ready, not deployed) | open · verified local boot · awaiting Sam review + deploy |
🖥 Running now
| Service | URL | State |
|---|---|---|
| Core (LIVE) | core.oll.am | healthy |
| oll-model (LIVE) | model.oll.am | healthy |
| oll-memory (LIVE) | memory.oll.am | healthy |
| oll-write (LIVE) | write.oll.am | healthy |
| CiteBible (LIVE) | LIVE citebible.oll.am/carry · memory-spine product — scripture for the sentence you carry → cited passages → write-from | |
| ollwrite (LIVE) | LIVE 3-pane memory sidecar — Your Knowledge · Manuscript · Chat; corpus-grounded, cited writing on write.oll.am + memory.oll.am | |
| humaniz | humaniz.me | healthy |
| Landing | LIVE oll.am · two pay-once Stripe links (CHF 1 waitlist + CHF 9 Pro) | |
| Database | Neon — database-per-service: Core owns oll_core; each stateful service its own DB; stateless gateways (oll-model) none | |
⏳ In flight
- Dev-test stacks LEFT RUNNING for manual testing: the oll-model chain (ollam-devtest-* : write :5002 · gateway :5103 · stub model/core) and the keyless humaniz GUI (humaniz-gui-* : :8099 → login via live Core → Editor → Rewrite). Stubs are test-only, documented in oll-am-cicd-design.html. Teardown commands in the digest.
- DOCS land DIRECTLY on main (no branching) — local site/build-log.html + live site = the one view. :47 cron auto-pushes hourly.
- Night-mode heartbeat scheduled; continues on each completion.
🌿 Branches
| Repo · branch | HEAD commit |
|---|---|
oll-am · main | 6e5380e s ate: live refresh 11:35:55 |
specview · feat/purge-dead-code | 9b1329b c ore: purge dead code after the write.oll.am text-op migration |