read.markets/app/services
Giorgio Gilestro 8e7ea673ce analyze: bump max_tokens 2000 → 4000 for portfolio analysis
Logs (analyze.lang_resolved → portfolio_analysis.reviewer_rejected
chain on 2026-05-29) showed the lang directive was working — the
model was producing Italian — but the reviewer was rejecting every
response as truncated mid-word ("supera i mass", "INRG +8"). The
analyze endpoint then returns 502 and the frontend keeps showing
whatever stale English row was last cached in localStorage, so from
the user's POV the analysis "is still in English".

Same shape as the strategic-log translation cap we fixed earlier:
the prompt targets ~350 English words, IT runs ~25-35% longer in
tokens, and DeepSeek-V4-flash bills internal reasoning against the
same budget. At 2000 we ran out of room mid-sentence. 4000 is well
above the longest realistic Italian output; cost is bounded by
tokens actually emitted, not the cap.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 16:04:40 +02:00
..
__init__.py initial commit — cassandra v0.1 2026-05-15 21:56:10 +01:00
access.py docs: drop Phase D.x markers now that the referral loop is closed 2026-05-26 23:09:39 +02:00
auth_service.py phase G: data minimisation + passwordless auth + DeepSeek-first LLM 2026-05-18 14:16:57 +01:00
cadence.py news: weekend ingestion cadence 6h → 2h 2026-05-23 21:06:17 +02:00
csv_import.py cleanup: drop stale tombstones and dead config fields 2026-05-27 19:25:33 +02:00
digest_email.py email: split digest renderer to digest_email.py 2026-05-27 21:33:06 +02:00
email_service.py email: split digest renderer to digest_email.py 2026-05-27 21:33:06 +02:00
feeds_bootstrap.py initial commit — cassandra v0.1 2026-05-15 21:56:10 +01:00
fx.py phase G: data minimisation + passwordless auth + DeepSeek-first LLM 2026-05-18 14:16:57 +01:00
glossary.py css: split cassandra.css into per-section files 2026-05-28 12:31:29 +02:00
i18n.py i18n: prepend a strong language directive for portfolio + chat 2026-05-29 15:21:00 +02:00
instrument_map.py phase B (1/4): CSV parser + InstrumentMap (T212 shortcode → Yahoo ticker) 2026-05-16 10:53:08 +01:00
llm_csv_parser.py models: align translation column naming + add token counts 2026-05-27 21:18:29 +02:00
llm_prompts.py ai: structured-output + reviewer agent for indicator summaries 2026-05-29 13:10:52 +02:00
market.py add ECB Data Portal source; group-aware stale thresholds 2026-05-15 23:13:58 +01:00
markets.py add Eurostat + UK ONS sources; valuation/bubble/economy/bonds groups; aggregate read; market-open header 2026-05-15 23:07:42 +01:00
news.py initial commit — cassandra v0.1 2026-05-15 21:56:10 +01:00
news_tagging.py news: auto-tag headlines + market-aware cadence + filter UI 2026-05-21 23:25:03 +01:00
openrouter.py ai: route reviewer through OpenRouter + Claude Haiku 4.5 2026-05-29 13:21:26 +02:00
otp_service.py phase G: data minimisation + passwordless auth + DeepSeek-first LLM 2026-05-18 14:16:57 +01:00
output_review.py review: gate strategic-log, portfolio, chat, and digest on reviewer 2026-05-29 14:40:04 +02:00
portfolio_analysis.py analyze: bump max_tokens 2000 → 4000 for portfolio analysis 2026-05-29 16:04:40 +02:00
portfolio_sync.py sync: detect orphaned blobs (pepper rotation) + fix AESGCM arg order 2026-05-25 12:49:11 +02:00
referral_service.py referrals: close D.3 — both parties get 45 days credit on conversion 2026-05-26 23:05:29 +02:00
ticker_universe.py phase G: data minimisation + passwordless auth + DeepSeek-first LLM 2026-05-18 14:16:57 +01:00
trading212.py initial commit — cassandra v0.1 2026-05-15 21:56:10 +01:00
translation.py i18n: stop truncating IT translations + localise the chat sidebar 2026-05-29 11:44:41 +02:00