Start with something real.
A lesson, a source passage, a question, or a task. Give the work a context before asking a model to help.
A project in continuous learning
A personal platform for learning, research,
and putting ideas to work.
Four ways to work with information.
Explore a small example of each.
Guides become questions. Questions produce feedback. Saved attempts turn a moment of confusion into something you can revisit.
Implemented in LSAT preparation, Spanish, and university coursework.
Explore the engineering ↗Every reviewed claim has a source.
This claim has no source.
What necessarily follows?
News Unfiltered connects collection, editorial preparation, and publication. Attribution stays part of the reading experience.
A public edition, served separately from the private workspace.
Read News Unfiltered ↗Source-linked summaries and a clear path back to the reporting.
Start with the source material.
A research graph should lead somewhere. Follow a claim through its evidence to the source, then back to human review.
Entities, relationships, excerpts, and review states share an evidence model.
Explore the evidence model ↗Supporting and opposing evidence can attach to a claim. The graph preserves that relationship for review.
Projects provide context. Agents define a role. Tasks pass through a queue, run where the tools live, and leave a record behind.
Execution has its own lifecycle, separate from the browser watching it.
Explore the execution model ↗Context → role → execution → record
Demonstrations use sample content to explain implemented workflows. They do not start live jobs or publish material.
The value is in what happens between receiving information and knowing what to do with it.
A lesson, a source passage, a question, or a task. Give the work a context before asking a model to help.
Organize concepts, sources, and claims into a form that can be explored and questioned.
A practice answer or a reviewed claim should reveal what needs another look, with enough context to return to it.
Save the attempt, the evidence, or the outcome. Each pass becomes a better starting point for the next.
The current tools grow from personal study and research. The larger ambition is to make those patterns useful in more learning environments.

Clear explanations, room to try, and feedback that helps a learner ask the next question.
Scroll to watch the forms gather,
drift, and take shape again.
Product design, data modeling, asynchronous execution, and deployment meet in one evolving system. Open a chapter for the details.
Brain began as a self-hosted orchestrator: a way to give an AI agent a task in an existing project, see its output, and retain a record of the result. That structure created a useful foundation for other kinds of work.
Study tools needed materials, attempts, and feedback. Research needed sources, relationships, and notes. A newspaper needed collection, editorial preparation, and a separate public edition. These became parts of the same environment, with domain-specific workflows and shared application infrastructure.
The project now carries the public name well.education. Its central idea is practical: bring information, the tools for working with it, and a record of what happened into a place that can keep improving.
A useful system helps you see both the result and the work that produced it.
The learning workspace combines authored guides, question banks, practice sessions, and review. It includes LSAT preparation, Spanish, and university coursework, with different grading and feedback rules for different kinds of material.
Learn mode offers immediate feedback during practice. Recorded attempts preserve the learner’s choices and make later review possible. LSAT attempts can capture eliminated choices, flagged questions, timing, and distractor-trap classifications. Spanish exercises distinguish accepted answers from accent errors and open responses.
Assessment state matters. In the LSAT workflow, an attempt taken with feedback revealed cannot establish a best score. In the communication-course workflow, question payloads omit answer keys and feedback commits the first selection. These choices keep instructional help and assessment records meaningfully separate.
The communication-course tool can build quizzes from weak concepts or selected trap tags, prioritizing missed questions while spreading concept coverage. Instructor-facing analytics group attempts by learner, concept, set, and distractor. These are explicit selection and aggregation rules, so the basis of a targeted quiz can be understood.
Interactive lessons include worked examples, phrase-role annotation, comprehension checks, and immediate or deferred feedback. A reusable visual renderer supports argument maps, chains, comparisons, tables, and trees. Specifications are validated before rendering, including required fields and answer configurations.
Reusable content models, grading state, feedback timing, and persistent review history connect the teaching experience to the underlying data.
News Unfiltered is the platform’s public editorial project. It brings source-linked reporting into a newspaper-style reading experience, with a workflow for gathering material, preparing summaries, and publishing an edition.
The editorial design distinguishes the reporting in a source from the interpretation built around it. AI assists preparation, while attribution, factual phrasing, and uncertainty remain part of the review. Each published summary links back to the reporting used.
Public publication is a separate surface from the private research workspace. That separation lets the project present a finished artifact without opening the underlying personal work environment.
Read News Unfiltered ↗ Read the editorial approach ↗The Neural workspace models research as entities, relationships, sources, excerpts, and claims. Evidence can support or oppose a claim, and review states give the resulting material a place in a continuing process.
Saved graphs offer an overview; entity profiles and evidence records let the reader move into specifics. Notes and human review changes keep the map connected to the judgment behind it.
The extraction path checks quoted text against its source passage. Quotations that cannot be found are discarded; matched wording is retained with its source context. This is a concrete validation step that makes generated research easier to inspect.
Evidence modeling and source matching provide an auditable basis for exploration. A supported quotation still needs interpretation and judgment.
The original orchestration model has three parts. A project identifies the working context. An agent defines a reusable role and execution configuration. A task contains the requested work and produces a sequence of events and an outcome.
A separate worker can claim queued jobs, renew its lease, execute in the project’s environment, and stream events back to the server. This lets the web control plane stay on an always-on host while work executes where the necessary files and tools are available.
For local model runs, the background task is separate from the stream watcher. A viewer can reconnect and replay events without owning the task’s lifetime. Worker leases also provide a basis for bounded retries or recorded failure when execution stops responding.
Those details are part of making AI a usable application component: instructions enter a defined context, execution produces observable state, and a result becomes a record that can be reviewed.
The core is a Python/FastAPI application with a custom HTML, CSS, and JavaScript interface. Domain-specific modules support research, local AI, news, and other workflows. The system combines relational state with file-based course content and browser-local lesson progress.
| Layer | Implementation and purpose |
|---|---|
| Web interface | Custom JavaScript and CSS, with a shared visual language and D3-based graph views. |
| Application services | Python and FastAPI for authenticated APIs, domain workflows, and streaming responses. |
| Persistence | SQLite for orchestration and research state; JSON and JSONL for course content and attempts; browser storage for lesson progress. |
| Execution | A queue-aware worker, headless agent execution, local model integrations, and tool dispatch. |
| Desktop | A Swift macOS shell starts a bundled Python service on loopback and loads the interface in WebKit. |
| Mobile | An iOS WebKit shell loads the configured server. Its delivery path differs from the bundled desktop runtime. |
| Deployment | A self-hosted web service behind an HTTPS reverse proxy, with a separate local execution path. |
This is an evolving application. Some workflows remain course-specific and some logic is concentrated in the central backend and frontend. The next architectural work is about making those proven patterns easier to reuse as the project grows.
Lesson progress uses fingerprints for individual lessons and migrates older browser stores. A content update can invalidate the affected lesson’s progress without discarding unrelated work. Course manifests can resolve question IDs against a shared bank so the same authored question can participate in different sets.
Streaming output is valuable, but the open browser should not be the thing keeping a job alive. Separate task ownership, replayable events, worker leases, and recorded outcomes give execution a lifecycle beyond an individual connection.
Role-based API rules govern access to the private workspace. Public pages and published artifacts have their own surfaces. Public-web retrieval includes destination checks, and regression tests exercise rejected destinations and connection behavior.
Thin Jost typography, a restrained white palette, translucent surfaces, and independently flowing, full-spectrum heatmaps give the different workflows a shared identity. The public presentation retains that language while giving the project more space to explain itself.
The wordmark moves from well.education to well.educated as the reader scrolls down, then returns on an upward scroll. It is a small expression of the larger idea: what you take in should change what you can do.
Thomas Holbird directs the project’s product design, implementation, and operation, using AI-assisted engineering throughout development. The work involves defining the behavior, connecting the parts, reviewing the result, and returning to the failures and rough edges that real use reveals.
The codebase demonstrates work across interface design, Python services, data modeling, asynchronous execution, local model integration, native app packaging, deployment, and regression testing. Its most useful story is the relationship between those disciplines: a feature has to fit the interface, the data, the execution environment, and the way someone will actually use it.
Current expansion work explores more reusable course infrastructure and experimental teaching workflows. These are directions for development, distinct from the implemented systems described above.
This is an independent, actively evolving software project. The examples describe implementation and design decisions. They do not claim measured learning gains, customer scale, or completed research benchmarks.

An independent project, shaped by real use and AI-assisted engineering. A continuing education in how good software comes together.
Discuss the project ↗Back to the overview