🦜

Pickatale Platform — Build Tracker

Build Phase
Phase 2
Intelligence Loop
Version
v6
Updated 2026-03-26
Services Running
16 / 22
4 broken domains
Status
⚡ Building
Orchestrator missing
📱 Reader App — app.readingtester.com ✅ Live 2026-04-01
📖
Core Reader — Native HTML Page-by-Page
app.readingtester.com — React 19 + Vite client (port 5193) + Express/tRPC/Drizzle server (port 3125). MySQL reader_app DB. Abandoned epub.js in favour of native HTML renderer using cheerio-based word-span injection. EPUB → pages API with image rewriting. Alice in Wonderland (402 pages) live. Demo: demo@pickatale.com / pickatale2026.
✅ Live
☝️
Finger-Follow Reading (Montessori)
FingerFollowOverlay.tsx — child drags finger over text, words highlight yellow (#FCC128) as finger passes, faded trail behind. Pointer events on word spans with elementFromPoint detection. iOS audio gate unlocked via pointer-down gesture. 120ms debounce on TTS prevents cancel/speak churn.
✅ Live
🧸
Vertical Reading Mode (full screen, text-only)
Hand button (☝) → full-screen text-only overlay. Entire book concatenated as one continuous scroll — no dead zones, no pointer event drops on image/padding gaps (root cause of finger-follow dropping after 3–4 words in page view). Cream background, 24px serif, line-height 2.2. TTS pre-loads all words in background.
✅ Live
Reading Support Panel (Accessibility)
Aa button in vertical mode opens panel with: Font (Classic serif / Lexend / OpenDyslexic), Bionic Reading (bold fixation prefix per word, CSS toggle — no re-render), Wide Spacing (WCAG 0.12em letter + 0.16em word), Colour Overlay (yellow/blue/green/pink/grey — Meares-Irlen syndrome support), Reading Ruler (focus band follows finger). All instant CSS toggles.
✅ Live
🔈
TTS — Needs Azure Neural TTS key
TTS cache system built: first call ~1.37s, cache hit 16ms. In-flight deduplication, retry logic, disk-persistent Docker volume. Currently Qwen3-TTS via Replicate — poor quality, occasionally speaks Chinese. Migration to Azure Neural TTS (storybook narrator voices, enterprise SLA, 100ms, $4/1M chars) is coded and ready. Waiting on Sig to sign up at portal.azure.com and enable Speech Services (free tier = 500K chars/mo).
⚡ Waiting Azure key
📲
Landscape Mode — Full Illustration with Text Overlay
Agreed design: portrait = vertical text-only reading mode, landscape = full-bleed illustration with semi-transparent text overlay at bottom (picture-book experience). Orientation detection + two distinct rendering modes. Not yet built.
⚡ Next to build
🏅
Miles + Tokens (Gamification)
100 words = 1 mile, 10 miles = 1 token. Tokens unlock more books (not prizes). DB columns exist, telemetry hooks in place. UI rewards screen not yet built. No leaderboards. No token loss.
⚡ UI not built

✅ Running & Healthy
🧠
Curriculum Mapper (CM)
cm.readingtester.com — 3,777 curriculum objectives extracted & enriched (Turkey 3,692 + England 85). tRPC API only — no REST endpoint for the Orchestrator to consume. This is a gap to fix.
✅ Live
📚
Teacher Materials (TM)
tm.readingtester.com — AI-powered teacher material generator. Fully operational.
✅ Live
🎙
Fluency Assessment
fluency.readingtester.com — Oral reading fluency with Whisper + GPT scoring. 5 students, 52 passages, 4 scored submissions. Siloed: does NOT push results to Learner Profile or Telemetry yet.
✅ Live
🧑
Learner Profile Service
learner.readingtester.com — Central source of truth for all learner data. 2 test profiles (both "Sofia"). Schema complete. API ready. Waiting on real learner data.
✅ Live
📡
Telemetry + LRS + Analytics
telemetry / lrs / analytics.readingtester.com — 15 telemetry events, 4 xAPI statements, 6 analytics daily stats. All test data. Real events need reader tools wired in.
✅ Live
📖
Content + Onboard + Recommendation
content / onboard / recommendation.readingtester.com — 25 books catalogued, recommendation engine working (returns 8 books for test learner). Onboard flow built but no real sessions yet.
✅ Live
🧑‍🏫
Teacher Portal + Parent Portal
teacher / parents.readingtester.com — Both portals running. Teacher portal: 1 teacher, 0 students. Parent portal: no digests generated yet. Waiting on real data.
✅ Live
⚙️
Adaptive Content Engine + API Gateway + Compliance
adapt / api / compliance.readingtester.com — All healthy. Adaptive content: GPT levelling works, translation key missing. API gateway proxies all services. Compliance audit logger active.
✅ Live

⚡ Partial — Built But Not Complete
🤖
Learner Bot
learner-bot.readingtester.com — Code is complete. Service running on port 3120. RAG memory store, curriculum tracking, GPT-4o report generation all coded. BUT: 0 memories, never generated a real report, no real learner has ever used it. Shell only.
⚡ Shell only
🔗
Service Integration (Wiring)
Fluency, Voice, CM, TM, Decodables, Talk, EPUB — none of these call the Learner Profile API or emit telemetry events. Every service is a silo. The intelligence layer exists but nothing feeds into it.
⚡ Siloed

❌ Broken — Caddy Points to Dead Ports
📕
Decodables (decodable.readingtester.com)
Caddy routes to port 5173. Nothing is running there. The Flask backend (server.py) and React app (pickatale-app/dist/) exist on disk but are not started. Returns 502 Bad Gateway.
❌ 502
🎤
Voice Assessment (voice.readingtester.com)
Caddy routes to port 5174. Nothing running. Voice system (Whisper + wav2vec2) exists at /home/ubuntu/Voice/ but is not started. Returns 502.
❌ 502
📓
EPUB Reader (epub.readingtester.com)
Caddy routes to port 5179 (client) and 3103 (server). Neither is running. Returns 502.
❌ 502
💬
Talk AI / ESL (talk.readingtester.com)
Caddy routes to port 5181 (client) and 3104 (server). Neither running. Returns 502.
❌ 502

🚨 Missing — Not Built Yet (Priority Order)
🧠
1. AI Learning Orchestrator — THE missing brain
Connects everything: CM objectives → gap detection → Decodables/Create story → Adaptive Content Engine (level + narrate) → Assessment Bot → mastery evaluation → teacher reasoning report. Without this, every service is an island. This IS the platform.
❌ Not built
🔁
2. Reinforcement Engine
Reads learner telemetry (word taps, MAZE errors, comprehension scores) → ranks vocabulary + curriculum gaps → triggers targeted story generation or selection. Built inside Orchestrator.
❌ Not built
3. Curriculum REST API on CM
CM uses tRPC only. The Orchestrator needs to query curriculum objectives by territory/year/subject over REST. Need a public /api/v1/objectives endpoint added to CM.
❌ Needed
📧
4. COPPA Email Verification
Parental consent token is generated but email delivery not implemented — logs to console only. Legal requirement before real children use the platform. Needs SendGrid key from Sig.
⚡ Blocked (key)
📖
5. Pickatale Create API (illustrated books)
Full illustrated book generation needs Borja’s API access. Decodables covers phonics stories for now. Not blocking Orchestrator build.
⚡ Waiting Borja

Build Roadmap
Phase 1 — Infrastructure ✓ Done (2026-03-25 → 2026-04-01)
16 intelligence/platform services running. Reader app live 2026-04-01: finger-follow, vertical reading mode, accessibility panel (Lexend, OpenDyslexic, bionic reading, colour overlay, reading ruler), TTS cache system. Competitor analysis page live.
✓ Complete 16 services + Reader ✓ app.readingtester.com
2
Phase 2 — Intelligence Loop ← We are here (INCOMPLETE)
Build: AI Learning Orchestrator + Reinforcement Engine + CM REST API. This is what makes the platform intelligent. ~3–5 days of build time.
❌ Orchestrator ❌ Reinforcement ~3–5 days
3
Phase 3 — Fix Broken + Wire Everything + Reader Landscape Mode
Start broken services (Decodables, Voice, EPUB, Talk). Wire Fluency, Voice, CM to Learner Profile + Telemetry. COPPA email. Reader landscape mode (full-bleed illustration + text overlay). Azure TTS swap (pending key). First real children on platform.
Fix 4 broken domains Wire siloed services COPPA email Reader landscape mode ⚡ Azure TTS (waiting key)
4
Phase 4 — Full Illustrated Books + Real Data
Borja’s Pickatale Create API connected. Full personalized illustrated stories. Learner Bot running real nightly cycles with real children. Platform at full capability.
Borja API Illustrated books Real learner cycles