02:47 · Skrzyszów, PL
aboutcontactenpl

EduChat

Polish students between 10 and 18 have three options outside the classroom: a paid private tutor at 80–150 PLN/hour, a generic chatbot that doesn't know what's on Tuesday's 8th-grade exit exam, or nothing. None of them tracks what the student already knows. None of them speaks the same data to the teacher, the parent, and the principal in the same product. The four roles that decide whether a kid actually learns are sold four different products.

Single-application, four-role architecture (student / teacher / parent / principal), one data layer with role-based access. Flask 3 + MySQL, no ORM — direct SQL on the bet that a small team is faster diagnosing a query than learning an ORM's edge cases. Hybrid auth so the Flutter iOS app and the web client share endpoints. Every subject has a JSON prompt configuration keyed to the Polish national curriculum, with separate files for the extended matura track across 13 subjects. Cost engineering became its own subsystem — six layers (model tiering, cross-student content cache, batch generation, prompt caching, plan-based limits, lazy node generation) — to drive AI cost to ≤$0.06 per 20-node course at the school tier. Without it, the unit economics didn't work.

About five thousand kilometers driven across Poland between September 2024 and February 2026, meeting over a hundred principals, heads of education, and mayors. Two hundred hours teaching Wodzisław Śląski fifth-graders, part volunteer, part paid — the product feedback came from the same room as the product. The Uniwersytet Śląski partnership opened on the same stage where the Silesian head of education was handing me a Prime Minister's scholarship; I told her I ran an education company; we met later. The Polish K-12 market doesn't take nineteen-year-olds seriously by default. The year between the workshops and the partnerships is what made nineteen-year-olds plausible to it.

Python 3Flask 3.1Flask-SocketIOMySQLAnthropic SDKOpenAIStripetpayFluttergunicorn
Dialogue — the same matura problem, two systems.
GENERIC LLMgeneral model · matura as noisestateless · no context · standard
EDUCHATpolish K-12 · national curriculumadaptive engine · 6-layer cost engineering · student memory
STUDENT.how do I solve x² − 4x − 21 = 0?
LLM.Use the quadratic formula. Δ = b² − 4ac = 16 + 84 = 100. √Δ = 10. So x = (4 ± 10) / 2 → x = 7 or x = −3.
STUDENT.ok thanks
STUDENT.how do I solve x² − 4x − 21 = 0?
EDUCHAT.take it easy. first — what is delta?
STUDENT.delta is b² − 4ac
EDUCHAT.yes. compute Δ for these numbers.
STUDENT.Δ = 16 + 84 = 100
EDUCHAT.good. so what is √Δ?
STUDENT.10
EDUCHAT.and now? the formula for x.
STUDENT.x = (4 ± 10) / 2 → 7 and −3
EDUCHAT.yes.
TIME0:08·COST$0.0008

answered. student wasn't asked to think.

TIME4:12·COST$0.003 · 6-layer cost engineering

asked back. student got there alone.

The EduSciezka adaptive engine — Bayesian mastery update per topic, an Ebbinghaus forgetting-curve readiness predictor, and a six-rule path recalculation engine that watches each student's signals and, when a test is on the calendar, inserts reinforcement before the curve takes over. Plus the lesson-account mechanism: accounts that exist for a single class period, so a teacher running EduChat live in lesson doesn't have to provision permanent students.

— 02 / 06 · 2025 — present

AIDA

WITH DAWID RUTKOWSKI · IREK DAWIDOWICZ

A foresight tool for Polish MFA analysts — thousands of pages of sources (RSS, GDELT, Polish-language NLP) distilled into four traceable scenarios with chain-of-thought citations for ~$0.10 per run. Every conclusion clicks back to the document it came from. Built for the analyst who can't say 'AI said so' to a director.

AIDA — analysis dashboard with weight sliders and live SSE log
2025.12AIDA — analyst dashboard during a live run
Milestones
  • 2025.12won HackNation · MSZ Scenariusze Jutra
  • 2025.12live on Hugging Face Spaces · day-one
  • 2026.03private cabinet · Radosław Sikorski + 3 ministry officials
  • 2026v2 in development for ministry deployment

A Polish MFA analyst preparing a position paper has hours, not days. Source material runs to thousands of pages — government statements, think-tank reports, GDELT-indexed news in 65 languages, market data. Standard tools either summarise without showing their work or hand back something the analyst can't defend in front of a director. 'AI said so' is not an answer to 'where did this conclusion come from?' The MSZ hackathon brief made the constraints explicit: explainability and resistance to data poisoning, both non-negotiable.

Five-phase pipeline — discovery → scraping → extraction → aggregation → synthesis — with the LLM touched once, at the end, against an ~8K-character payload of pre-weighted facts. Discovery layers RSS over a curated 85-source whitelist on top of GDELT keyword queries across 113 domains. Extraction is local: spaCy + regex + FAISS over multilingual-e5-large embeddings. Hierarchical bottom-up summarisation keeps the LLM payload constant whether the corpus is fifty million words or five billion. ~$0.10 per analysis, regardless of input size. Every scenario is a chain of FAKT → MECHANIZM → SKUTEK → WNIOSEK steps with numbered citations back to source. The chain exists in the data, not in the model — explainability is a structure, not a UI feature. Anti-poisoning runs four layers: triangulation (≥3 independent sources from ≥2 categories), anomaly detection, consistency checks, dynamic source-trust scoring with state-controlled domains penalised. What this gives an analyst: any conclusion clicks back to the documents it came from.

The hackathon weekend: twenty-four hours straight, except a 1:30 a.m. run around Bydgoszcz with Dawid and a 7:30 a.m. break in a massage chair. Final pitch in front of an MSZ panel, fifty-five hours into the streak; some of what I said made sense, some of it didn't. Won. Deputy PM Radosław Sikorski handed the award. Five-hour drive home, sixty-seven hours awake. Five hours of sleep, then 8 a.m. EduChat lessons in Wodzisław Śląski with fifth-graders — forming complete sentences took noticeable effort; the kids were patient. Three months later, the protocol the ministry reserves for foreign ministers and heads of state: a private cabinet next to Sikorski's office, three high-ranking officials, a continuation conversation. v2 is what's being built now.

Python 3.11FlaskAnthropic ClaudespaCyFAISSmultilingual-e5-largetrafilaturaFPDF2TailwindAlpine.jsDocker / HF Spaces
EXHIBITAIDA strategic-foresight output02.04.2026 · 12:50
AIDAForesight Analysis System
RESTRICTED

POLAND

Geopolitical Foresight Analysis

Comprehensive scenario analysis for the Republic of Poland

Generated: 02.04.2026, 12:50

Classification: RESTRICTED For official use only

Analysis Summary

0Sources
0URLs
0Documents
0Facts

Total processing time: 1416.6 seconds

2. Strategic Scenarios

2.1 Short-term Horizon (3 Months)

FORECAST

Prolonged Strait of Hormuz blockade — escalating energy and fertiliser costs, with limited direct supply impact

Confidence: 0% Horizon: 3 months

Over the next three months, the most likely scenario is one in which the Persian Gulf conflict is not resolved and the Strait of Hormuz remains partially or fully blocked to tanker traffic. The probability of a ceasefire without prior unblocking of the Strait is estimated at 15–20%, as the parties to the conflict are using the blockade as their primary negotiating leverage.

CHAIN OF REASONING (Chain of Thought)

Reasoning path from historical facts to scenario prediction:

FACTSource data
MECHANISMCausal process
EFFECTResult
1Mechanism of indirect impact on gas prices in Poland
  1. FACT

    +: The EU imports only 6% of its oil from the Middle East, but 80% of Qatari LNG goes to Asia; QatarEnergy has suspended exports.

  2. MECHANISM

    Asian consumers (China, Japan, South Korea) will compete for Norwegian and American LNG supplies that currently flow to Europe, raising prices on the global spot market.

  3. EFFECT

    Gas prices in Poland will rise 25–40% over 8–12 weeks despite no direct dependency on Gulf supplies, hitting households and energy-intensive industries (metallurgy, chemicals).

2Fertiliser crisis and food security
  1. FACT

    ++: Tanker traffic through Hormuz fell 90%, blocking 30% of global fertiliser trade; demand will rise in the planting season and production costs may double.

  2. MECHANISM

    Poland's agricultural sector — dependent on nitrogen fertilisers (urea, ammonia) — will see cost increases of 30–50% in Q2–Q3 2025, which will translate into food prices.

  3. EFFECT

    Food inflation in Poland may reach 8–12% YoY in Q3 2025, hitting household budgets and increasing social pressure on the government.

3Helium and the technology sector
  1. FACT

    : Helium prices have doubled, and Taiwan sources 70% of its helium from the Gulf.

  2. MECHANISM

    The helium shortage will impact chip production (helium cools electromagnets in lithography), causing 4–8 week delays in semiconductor supply to Europe.

  3. EFFECT

    Poland's IT/BPO, gaming, and automotive (electronic components) sectors will experience supply-chain disruptions, potentially delaying digitisation projects and EV production.

Excerpted from a 36-page report. Hover any [n] to surface its source.547 sources · 4611 facts · run-time 1416.6 s
— 03 / 06 · 2024 — present

Blo

WITH DAWID RUTKOWSKIblo.finance

A Flutter app for EU savers — plan and compare term deposits across all 27 countries, with real-return math that pairs each nominal rate with its country's inflation. No bank-account integration; no PSD2 surface; ships now. Built around the 2026–2027 regulatory window: EUDI Wallet, PSD3, and FIDA collapse the cost of real cross-border integration. The planning-layer takes the trust position before the integration layer matters.

Blo — Country Comparison tab sorted by real return
2025.11Blo · Country Comparison sorted by real return
Milestones
  • 2024.11.01concept · day 1 · Econverse V4, Prague
  • 2024won the Prague stage · Marek Ditz signs on as mentor
  • 2025.11.25Flutter rewrite · 16k LOC across two days
  • 2026MVP · awaiting EUDI / PSD-3 / FIDA

EU treaty law promises a single market for capital, but in practice savings rates remain trapped behind national banking apps and national-language interfaces. A Polish saver who notices that a Spanish or Luxembourgish bank pays meaningfully more on a fixed deposit hits a wall: the bank's signup is in Spanish or French, comparison sites (Raisin, deposit-solutions, the national portals) terminate at a referral link, and any portfolio view has to be reconstructed by hand in a spreadsheet across multiple currencies and inflation regimes. Nobody is doing the planning layer — the part where a user models a portfolio across countries, with inflation and FX baked in, before committing to opening anything.

Two product calls separate Blo from everything else in the space. First: simulate first, commit later. The MVP doesn't connect to any real bank. Users hand-enter accounts as 'Planned,' 'Active,' or 'Matured.' Removing the integration layer collapses the regulatory surface and lets the actual product (cross-border comparison + portfolio math + maturity calendar) ship in days rather than months. Second: real-return-first analytics. Every nominal rate is paired with the country's inflation, so a 5.75% PLN deposit and a 2.98% EUR deposit are compared on the axis that matters. Stack: Flutter 3.10, Provider for state, sqflite for local SQLite, ECB Data Portal API for live key rates, six ChangeNotifier providers above a DAO/SQLite layer. Local-first, no backend. The compound-interest projection runs on-device in `UserAccount` so portfolio totals, projected values, and per-account interest derive from one source of truth.

Day 1 of Blo was the same day the Harvard admissions decision arrived (rejection). The concept came together at Econverse V4 in Prague, where Marek Ditz signed on as mentor and stayed. We won the Prague stage, then the Lodz finals; the first version on the App Store was Swift, written by Dawid; I rewrote the whole stack in Flutter — sixteen thousand lines across two days, November 24–25, 2025. The planning layer is shipped. The integration layer waits on EUDI Wallet (mandated 2026), PSD3 (2026–2027), and FIDA (2027) — the regulatory window that collapses the cost of real cross-border bank integration. The bet is the calendar, not the pivot.

Flutter 3.10DartProvidersqflitego_routerfl_chartflutter_secure_storageECB Data Portal API
— 04 / 06 · 2025 — present (pre-launch)

ManagAI

CTO · WITH CEZARY PASZUKexecutiveintelligence.pl

An AI advisor for Polish managers — 145 specialized tools across 12 management domains, structured-output forms for the artifact a manager actually needs (script, RACI, mediation playbook, KP-correct incident note), and labor-law accuracy on Kodeks Pracy article numbers. Twenty-five years of one consultant's playbook compiled into the chat surface.

ManagAI — chat interface with structured Quickshot panel
2026.04ManagAI · chat surface with the Quickshot panel
Index · the numbers
0
specialized tools, structured outputs
0
management domains covered
0 mo
commit-to-shipped
0
engineer · single git committer

Polish managers facing daily problems — a difficult conversation about lateness, a suspected mobbing case, a budget cut to communicate, a hybrid team losing cohesion — have three options today, all bad: generic AI that hallucinates Kodeks Pracy article numbers; HR consultants at 800–2,000 PLN per session, days to schedule; or 90 minutes of PDF-from-Google methodology hunting. None of them produce a printable script with structured output. The harder problem under the surface: a manager who is overwhelmed doesn't know they need the Eisenhower Matrix; generic chat answers the question that was asked, not the one that should have been.

Single Flask app. Each of 145 tools is a Python class with a server-side ui_schema across 35 reusable components rendered identically on web and Flutter. The agentic loop streams Claude Sonnet 4.5, intercepts tool_use events, executes server-side, sends tool_result back, re-streams in a single user turn. Tool routing at scale: hybrid retrieval — cosine + BM25 over the tool descriptions themselves, with negative-signal blocks ('DO NOT USE WHEN…') stripped before vectorisation, since cosine has no concept of negation. Then a Claude Haiku re-rank top-10 → top-3, dynamic injection into the conversation's tool set with LRU eviction at 15. Token cost per turn dropped from ~25k (naive 'send all tools') to 700–2,800 — a 10–22× reduction at ~50–150ms added latency. Module 17, 'Prawne ABC menedżera', is the moat: generic Claude hallucinates KP article numbers; ManagAI doesn't.

Cezary had twenty-five years of management consulting and a thesis. I had the stack and the conviction the thesis was buildable. Three months and ten days from first commit to 145 tools. Single contributor in the git log; mobile (Flutter) and web shipped in parallel. The legal-tone calibration is the model learning by contrast — the system prompt holds both wrong versions, labeled, alongside the correct one. The wrong versions cost two iterations to find: a STOP-emergency mode managers rejected as alarming, and a therapy-speak version they rejected as performance. Reading actual transcripts out loud is what surfaced both.

Python 3.11FlaskAnthropic ClaudeChromaDBrank-bm25OpenAI embeddingsFlutterTailwind CSS
Library — 13 domains, 145 structured outputs000/145
IGM28Intergenerational management
TCM28Team communication
TIM14Time management
FIN11Financial management
HYB11Hybrid management
CFL9Conflict resolution
DEC8Decision-making
ORG8Organisational structure
CHG7Change management
TEG6Team engagement
MET6Meta-tools (routing and UX)
LEG5Manager's legal first aid
TDV4Team development
hover any tile to see its tool.
— 05 / 06 · 2024 — present

Assistron

WITH JAKUB URBAŃCZYKassistron.pl

A software house in Wodzisław Śląski — AI integrations, ERP systems, voice assistants, and e-commerce automation. Bootstrapped from outside the Warsaw / Kraków corridor; legal-entity, code-warranty, VAT-invoice B2B.

Assistron — realizacje page
2026.04Assistron · /realizacje overview
Index · the numbers
0%
% reduced ERP order time
0s
second voice-bot response
0+
technologies in active use

Polish SMBs need software they actually own — bespoke ERPs, mobile apps, AI integrations — but SAP and Comarch are expensive and wrong-sized for the specific operational realities of, say, a paint shop or a service business. The Polish enterprise-IT default is corporate consultancy with three layers between the buyer and whoever is writing code.

Two of the most useful client builds — an automotive-industry ERP with bidirectional WooCommerce sync (orders, products, customers, stock — replacing manual Excel transcription with a mobile app for production-floor workers) and an AI voice assistant on FreePBX/Asterisk with sub-2-second streaming response and per-caller memory keyed to phone number, capable of inbound and outbound calls. EduChat is one of Assistron's products; covered above.

Origin: Econverse 2023 in Wrocław. Five-person student team, project called ZwrotMatch, won the eliminations, lost the finals. The team of five didn't survive the competition; Kuba and I kept the working relationship. Voicebots were one of the unbuilt ideas from the brainstorm; we started building them after. That's the seed. The rest: a software house run from Wodzisław Śląski, ~50k population, a region better known for coal mining than for AI agencies. VAT-invoice, code-warranty contracts mean carrying every piece of the compliance overhead a Polish sp. z o.o. requires.

Next.jsReact NativePythonFastAPIPostgreSQLOpenAIAnthropicFreePBXAsteriskWooCommerceAWS
Timeline — sub-2s live responsecall duration0:42
INBOUND CALLER+48 22 · inbound call0:00 → 0:08

good morning, I'm calling about a warranty claim from my March order.

RESPONSE GAP0:08 → 0:09.8
1.8s
ASSISTRONstreaming · per-caller memory · sub-2s0:09.8 → 0:42

good morning, Mr. Marek — I can see your prior ticket. please share the order number.

streaming · phone-keyed memory · response in 1.8 s.

— 06 / 06 · 2025

Ocena Pracy Nauczyciela

A spin-off of EduChat. Annual teacher-evaluation paperwork drafted in ten minutes per teacher instead of multi-hour write-ups. Teacher names never reach the database. The AI writes documentation; the principal still does the evaluating.

Ocena Pracy Nauczyciela — conversation on left, live scoring panel on right
2025.12Conversation · live scoring panel
Index · the numbers
0 min
minutes per evaluation
0
criteria, MEN 2025 regulation
0
teacher names sent to LLM
0 wks
weeks scaffold to live

Polish school principals are required by the Karta Nauczyciela and a MEN regulation to produce a written evaluation for every teacher. The grading itself is fast — a principal already knows their staff. The slow part is the paperwork: twelve numbered criteria, each needing formal multi-sentence justification, the right grade band selected (`wyróżniająca` / `bardzo dobra` / `dobra` / `negatywna`), supporting opinions attached. Twenty-plus hours per cycle, per principal — a week behind a desk. On top of that, MEN published a new regulation in 2025 that took effect on November 27th — the structure changed from eleven criteria to twelve, the points scale changed, existing templates and habits don't carry over.

Two product calls the existing tooling didn't make. First: don't ask the LLM to evaluate the teacher. Ask it to write the paperwork. The principal supplies observations and a target grade; the model's job is formal Polish prose against the criterion structure, not judgment. The system prompt tells the model that most teachers are competent and to default to 'bardzo dobra' (75–85%) unless the principal volunteers a problem. Second: keep teacher names out of the database entirely. Names live in browser localStorage keyed by UUID; the server stores only the UUID, the score JSON, and the documentation text. The LLM call sees observations, never an identified person — a concrete RODO answer instead of a privacy-policy paragraph. Stack: Flask 3, MySQL in prod / SQLite in dev, OpenAI GPT-4o with Anthropic fallback, WeasyPrint for PDF, Alpine.js on the conversation page.

A complete product, shipped by one engineer in three weeks against a non-negotiable November 27, 2025 regulatory deadline that the existing templates didn't carry across. Distributed free to several principals through their first cycle.

PythonFlask 3OpenAI GPT-4oAnthropic ClaudeWeasyPrintTailwind CSSAlpine.jslocalStorage
Diagram — three zones, one boundary
browseruser device · localStorage
serverOPN backend · SQLite
llmlanguage model · stateless
Anna Kowalska
T-7b3f2a91
supports students with special needs
Piotr Nowak
T-a1c5d2e8
consistent attendance, regular preparation
Marta Wiśniewska
T-4f9e1c33
thorough teaching-materials documentation
Tomasz Kowalczyk
T-d8e2b54a
encourages classroom discussion
Katarzyna Wójcik
T-c1f7e3a8
consistent parent collaboration

20 hours → 2 hours per evaluation.

Names never reach the LLM. Architecture, not promise.

A generative-AI product whose system prompt actively dampens the model's tendency to reason. The model is forbidden from forming opinions about the teacher; it's constrained to a single deliverable — formal Polish bureaucratic prose, minimum three sentences per criterion, padded with educational jargon when the principal's input is thin. The judgment stays human; the LLM writes the cover.

End of the work

That's the work.

More is coming.

There's more on the desk. Atlas is the globe — every flight, every city. Stages is the three I didn't see coming. And more I haven't pointed at yet.