{ "generated_at": "2026-07-10T09:30:01Z", "public_note": "Aggregated portfolio statistics only. No personal data, prompts, answers, costs, IDs, birth data, or message text.", "project": { "name": "MapToSelf", "description": "A multilingual Telegram bot that generates astrology-based self-reflection reports from natal chart data.", "stack": [ "Python", "python-telegram-bot", "GPT API", "SQLite", "Swiss Ephemeris", "Streamlit", "Hetzner Cloud" ], "languages": [ "Russian", "French", "English" ] }, "metrics": { "users_total": 27, "new_7d": 0, "new_30d": 0, "profiles_complete": 27, "with_chart": 27, "reports_total": 79, "reports_7d": 0, "gpt_calls": 120, "gpt_calls_7d": 0, "child_charts": 4 }, "series": { "users_by_day": [ { "day": "2026-06-11", "users": 0 }, { "day": "2026-06-12", "users": 0 }, { "day": "2026-06-13", "users": 0 }, { "day": "2026-06-14", "users": 0 }, { "day": "2026-06-15", "users": 0 }, { "day": "2026-06-16", "users": 0 }, { "day": "2026-06-17", "users": 0 }, { "day": "2026-06-18", "users": 0 }, { "day": "2026-06-19", "users": 0 }, { "day": "2026-06-20", "users": 0 }, { "day": "2026-06-21", "users": 0 }, { "day": "2026-06-22", "users": 0 }, { "day": "2026-06-23", "users": 0 }, { "day": "2026-06-24", "users": 0 }, { "day": "2026-06-25", "users": 0 }, { "day": "2026-06-26", "users": 0 }, { "day": "2026-06-27", "users": 0 }, { "day": "2026-06-28", "users": 0 }, { "day": "2026-06-29", "users": 0 }, { "day": "2026-06-30", "users": 0 }, { "day": "2026-07-01", "users": 0 }, { "day": "2026-07-02", "users": 0 }, { "day": "2026-07-03", "users": 0 }, { "day": "2026-07-04", "users": 0 }, { "day": "2026-07-05", "users": 0 }, { "day": "2026-07-06", "users": 0 }, { "day": "2026-07-07", "users": 0 }, { "day": "2026-07-08", "users": 0 }, { "day": "2026-07-09", "users": 0 }, { "day": "2026-07-10", "users": 0 } ], "reports_by_day": [ { "day": "2026-06-11", "reports": 0 }, { "day": "2026-06-12", "reports": 0 }, { "day": "2026-06-13", "reports": 0 }, { "day": "2026-06-14", "reports": 0 }, { "day": "2026-06-15", "reports": 0 }, { "day": "2026-06-16", "reports": 0 }, { "day": "2026-06-17", "reports": 0 }, { "day": "2026-06-18", "reports": 0 }, { "day": "2026-06-19", "reports": 0 }, { "day": "2026-06-20", "reports": 0 }, { "day": "2026-06-21", "reports": 0 }, { "day": "2026-06-22", "reports": 0 }, { "day": "2026-06-23", "reports": 3 }, { "day": "2026-06-24", "reports": 0 }, { "day": "2026-06-25", "reports": 0 }, { "day": "2026-06-26", "reports": 0 }, { "day": "2026-06-27", "reports": 0 }, { "day": "2026-06-28", "reports": 0 }, { "day": "2026-06-29", "reports": 0 }, { "day": "2026-06-30", "reports": 0 }, { "day": "2026-07-01", "reports": 0 }, { "day": "2026-07-02", "reports": 0 }, { "day": "2026-07-03", "reports": 0 }, { "day": "2026-07-04", "reports": 0 }, { "day": "2026-07-05", "reports": 0 }, { "day": "2026-07-06", "reports": 0 }, { "day": "2026-07-07", "reports": 0 }, { "day": "2026-07-08", "reports": 0 }, { "day": "2026-07-09", "reports": 0 }, { "day": "2026-07-10", "reports": 0 } ], "users_by_language": [ { "language": "Russian", "users": 19 }, { "language": "French", "users": 7 }, { "language": "English", "users": 1 } ], "reports_by_type": [ { "report_type": "Natal chart", "language": "Russian", "reports": 18 }, { "report_type": "Life purpose", "language": "Russian", "reports": 9 }, { "report_type": "Natal chart", "language": "French", "reports": 6 }, { "report_type": "Career", "language": "Russian", "reports": 5 }, { "report_type": "Finances", "language": "Russian", "reports": 5 }, { "report_type": "karma", "language": "Russian", "reports": 5 }, { "report_type": "Child chart", "language": "Russian", "reports": 4 }, { "report_type": "Health", "language": "Russian", "reports": 4 }, { "report_type": "Compatibility", "language": "Russian", "reports": 4 }, { "report_type": "Career", "language": "French", "reports": 3 }, { "report_type": "karma", "language": "French", "reports": 3 }, { "report_type": "Life purpose", "language": "French", "reports": 3 }, { "report_type": "Compatibility", "language": "French", "reports": 2 }, { "report_type": "Child: talents", "language": "Russian", "reports": 1 }, { "report_type": "Finances", "language": "French", "reports": 1 }, { "report_type": "Forecast", "language": "Russian", "reports": 1 }, { "report_type": "Health", "language": "French", "reports": 1 }, { "report_type": "karma", "language": "English", "reports": 1 }, { "report_type": "Natal chart", "language": "English", "reports": 1 }, { "report_type": "Life purpose", "language": "English", "reports": 1 }, { "report_type": "Relationships", "language": "French", "reports": 1 } ], "gpt_by_language": [ { "language": "Russian", "calls": 67, "tokens": 427160 }, { "language": "French", "calls": 50, "tokens": 364590 }, { "language": "English", "calls": 3, "tokens": 15831 } ], "gpt_by_request_language": [ { "request_type": "section", "language": "Russian", "calls": 36 }, { "request_type": "dialog", "language": "French", "calls": 23 }, { "request_type": "natal_chart", "language": "Russian", "calls": 19 }, { "request_type": "section", "language": "French", "calls": 17 }, { "request_type": "natal_chart", "language": "French", "calls": 7 }, { "request_type": "child_chart", "language": "Russian", "calls": 4 }, { "request_type": "forecast", "language": "Russian", "calls": 4 }, { "request_type": "synastry", "language": "French", "calls": 3 }, { "request_type": "synastry", "language": "Russian", "calls": 3 }, { "request_type": "section", "language": "English", "calls": 2 }, { "request_type": "child_talents", "language": "Russian", "calls": 1 }, { "request_type": "natal_chart", "language": "English", "calls": 1 } ] } }