Michelle Blomberg

Cultivate

Student Success Tools · Case study

A personal learning environment: one offline-capable hub where a faculty member keeps a professional growth plan, resources, deadlines, and a classified AI-in-education news feed, so attention goes to learning rather than to managing where the learning lives.

Version
1.0
Status
Personal build, used by its author
Owner
Michelle Blomberg
Updated
October 2026

If you are opening Cultivate on your own device, expect some links to look broken. That is by design, not a defect. It was built for one iPad, where the documents and videos are saved locally and the logged-in resources open normally. A visitor who is not signed in, or who is on a different device, will hit dead ends that work perfectly on the intended iPad.

1. Summary

Cultivate is a personal learning environment: one offline-capable hub where a faculty member keeps a professional growth plan, resources, deadlines, and a classified AI-in-education news feed, so attention goes to the learning rather than to managing where the learning lives. It is a single-user tool, in daily use, that collects nothing and runs entirely on the user’s own device.

2. Goal

Cultivate exists to hold one faculty member’s learning together in a single place. The problem it solves is not technical, it is cognitive. When resources live in bookmarks across three browsers, notes sit in another app, and deadlines sit in a calendar nobody opens, the effort of managing that scatter consumes the attention meant for the learning itself. Consolidating them into one hub lowers that extraneous load, in the sense Sweller’s cognitive load theory intends, so the next right action is visible without hunting for it.

It is a personal learning environment in the truest sense: a hub the learner curates and owns, not a closed institutional platform that owns the learner’s work. The one part that is connectivist is the news feed, a live network of sources kept current because AI in education moves too fast to hold in your head. The rest is intentionally simple. Cultivate organizes professional growth, it does not deliver or measure learning, and it does not connect people, so it is a personal learning environment, not a learning network.

3. Users and context

One faculty member, its author: a Digital Media Arts instructor building AI literacy deep enough to teach it, supporting a campus community of practice, and developing student-facing tools. It is designed around real working conditions, read between classes and offline while traveling, on an iPad and a laptop, where long lists and context switching carry a real cost. Being single-user is the point, not a limitation. That constraint is why it can stay this simple, and why it belongs to one learner by definition. Other educators are welcome to fork the architecture for their own goals; it is not a shared product and is not meant to become one.

4. How it works

Six linked HTML pages share one design system, one header, and one navigation pattern, with no backend, no login, and no build step. Each page loads on its own.

PageWhat it does, and why
Resources hubThe entry point: classified news feed, resource cards, a progress bar, and a link into the growth plan. It answers “what should I look at today” without a search.
Growth planA priority roadmap with real target dates, checkboxes, and deadline badges. Making the next step and its deadline visible is the intervention; hidden deadlines are the ones that slip.
Activity logFed automatically as tasks are checked off, with category badges and CSV export. It quietly produces the record a faculty evaluation plan needs and that almost nobody keeps by hand.
UX toolkitA reference of design tools, vocabulary, and practice projects, the working library behind the teaching.
Conference pageA single working proposal: abstract, learning outcomes, and a preparation list, with the deadline surfaced.
Context blockA one-tap copy block that restores project context in a new AI session, so the tool and the AI stay in sync without re-explaining.

The news feed

A curated pool of RSS sources is fetched each time the page is opened, nothing runs on a schedule, and each item is routed to the right tab by a keyword classifier, then cached locally for 24 hours so it stays readable with no connection. Because RSS endpoints block cross-origin requests, fetches fall through three public proxies in sequence; if a source fails on all three it is skipped silently and the feed degrades rather than breaking. This is the one fragile part, the public proxies are outside anyone’s control, and it is the weak point of the tool. Offline reliability is a design goal on purpose: the tool was built to work on an iPad in the air and in rooms with no reliable wifi.

No AI model runs inside Cultivate. AI helped build it, and the feed is routed by a plain keyword classifier, not a model, which keeps it fast, free, and fully offline. That is the intended posture across this portfolio: AI as scaffolding, not as the thing running underneath.

Requirements and acceptance criteria

Each requirement is one behavior. The checks beside it are what a builder or tester confirms before that requirement is called done. Status reflects what this document records as built.

#AreaRequirementDone whenStatus
R1Resources hubThe product must open on a resources hub that shows the classified news feed, resource cards, a progress bar, and a link into the growth plan.
  • Opening the hub displays the news feed, the resource cards and the progress bar on one page with no search needed.
  • Selecting the growth plan link opens the growth plan page.
  • The hub loads when its address is opened directly, without first visiting another page.
Built
R2Growth planThe product must show the growth plan as a priority roadmap in which each item has a target date, a checkbox and a deadline badge.
  • Every roadmap item displays a target date, a checkbox and a deadline badge.
  • Items appear in priority order as defined in the plan content.
  • The deadline badge on an item reflects that item’s target date when the page is opened on a later day.
Built
R3Growth planThe product must keep checkbox states and notes in the browser’s localStorage on the user’s own device.
  • A checkbox that is checked remains checked after the page is closed and reopened in the same browser.
  • A note that is entered is still present after the page is closed and reopened in the same browser.
  • The checkbox states and notes are visible as entries in the browser’s localStorage for the site.
Built
R4Activity logThe product must add an entry to the activity log automatically when the user checks off a task, with a category badge on the entry.
  • Checking off a task in the growth plan creates a new activity log entry with no further action by the user.
  • The new entry displays a category badge.
  • The entry is still in the activity log after the page is closed and reopened in the same browser.
Built
R5Activity logThe user must be able to export the activity log as a CSV file.
  • Selecting the export control downloads a file in CSV format.
  • The file contains one row for each entry shown in the activity log.
  • The file opens in a spreadsheet application with each field in its own column.
Built
R6UX toolkitThe product must provide a UX toolkit page that presents a reference of design tools, vocabulary and practice projects.
  • The page shows three groups of content: design tools, vocabulary and practice projects.
  • The page loads when its address is opened directly.
  • The page uses the same header and navigation as the other pages.
Built
R7Conference pageThe product must provide a conference page that holds one working proposal with its abstract, learning outcomes and preparation list, and shows the proposal deadline.
  • The page displays an abstract, a set of learning outcomes and a preparation list for a single proposal.
  • The proposal deadline is visible on the page without scrolling through the proposal text to find it.
  • The page loads when its address is opened directly.
Built
R8Context blockThe user must be able to copy the project context block to the clipboard with one tap.
  • One tap on the copy control places the full text of the context block on the clipboard.
  • Pasting into another application reproduces the context block text exactly.
  • The copy works on the intended iPad and on a laptop browser.
Built
R9The news feedThe product must fetch its curated pool of RSS sources each time the page is opened, with no schedule or background job.
  • With a connection, opening the page triggers a fetch for the RSS sources, visible in the browser network inspector.
  • Reopening the page triggers the fetch again.
  • No fetch occurs while the page is closed, and the build contains no scheduled task, server job or background worker that fetches feeds.
Built
R10The news feedThe product must route each fetched item to a feed tab using a keyword classifier and no AI model.
  • An item whose text contains a keyword assigned to a tab appears under that tab.
  • The same item is routed to the same tab on every fetch.
  • The browser network inspector shows no request to an AI model service while the feed is fetched and classified.
Built
R11The news feedThe product must send each RSS fetch through three public cross-origin proxies in sequence and skip a source silently when all three fail.
  • When the first proxy is blocked, the same source is requested through the second proxy, and then through the third if the second is blocked.
  • When all three proxies are blocked for one source, the items from the other sources still display.
  • A skipped source produces no error message, alert or broken layout on the page.
Built
R12The news feedThe product must cache the fetched feed locally for 24 hours so that it stays readable with no connection.
  • After one successful fetch, opening the page with the device offline displays the previously fetched items under their tabs.
  • The cached items are present in the browser’s local storage for the site.
  • Opening the page offline shows no error in place of the feed while the cache is less than 24 hours old.
Built
R13Data, privacy, and governanceThe product must run with no account, no analytics and no transmission of user data.
  • Every page is usable with no sign-in or account prompt from the product itself.
  • The source contains no analytics or tracking script.
  • With the network inspector open, checking a task, writing a note and exporting the log send no request that contains user data.
Built
R14Build and portabilityThe product must be delivered as six linked static HTML pages that share one design system, one header and one navigation pattern, with no backend and no build step.
  • The published files run from static hosting with no server code and no compile or bundling step.
  • The header and navigation are identical on all pages, and each navigation link opens its page.
  • Each page loads and displays correctly when opened directly by its own address.
Built
R15Build and portabilityThe product must remain usable offline on the intended iPad, including its locally saved documents and videos.
  • With the iPad offline, each page opens and the growth plan, activity log and context block work.
  • With the iPad offline, links to documents and videos saved on that iPad open.
  • On a different device, the same links to locally saved or signed-in resources fail without stopping the rest of the page from working.
Built

5. Data, privacy, and governance

Cultivate collects nothing. Checkboxes, notes, and the activity log live in the browser’s localStorage on the user’s own device; there is no account, no analytics, and no transmission of user data anywhere. No student data ever enters it, so there is no FERPA exposure. Notes, checkboxes and the activity log are stored only in this browser, so the user is responsible for keeping them.

6. Build and portability

Six linked HTML pages share one design system, one header, and one navigation pattern, with no backend, no login, and no build step, so the whole thing hosts as static files and each page loads on its own. Checkboxes, notes, and the activity log persist in the browser’s localStorage on the user’s own device. The news feed fetches a curated pool of RSS sources on each refresh, routes them with a plain keyword classifier, and caches them locally for 24 hours so the tool stays readable with no connection; because RSS endpoints block cross-origin requests, fetches fall through three public proxies in sequence and degrade silently if a source fails. No AI model runs inside Cultivate: AI helped build it, but nothing calls a model at runtime, which keeps it fast, free, and fully offline. The architecture is forkable, another educator can copy the structure for their own goals, and there is no key or account to carry across.

Dependencies

What has to be in place, and who provides it.

NeededProvided byNeeded for
Three public cross-origin proxiesThird-party proxy operators, outside the control of the product ownerR9 and R11
The curated pool of RSS sourcesThe publishers of each feed, with the list curated by the product ownerR9 and R10
Documents and videos saved locally on the intended iPad, and signed-in sessions for the linked resourcesThe user, on the intended iPadR1 and R15
Browser localStorage that has not been clearedThe user’s browser on the user’s own deviceR3, R4, R5 and R12
Static file hostingThe hosting providerR14

7. Pilot and testing

Cultivate is not piloted, and it is not meant to be. It is a single-user personal tool in daily use, and its test is whether it holds up in real working conditions: read between classes and offline while traveling, on the intended iPad where the local documents and logged-in resources open normally. Validation is qualitative and continuous, does the next right action stay visible without hunting, and does the feed stay readable with no wifi, rather than a cohort study.

8. Definition of success

Cultivate succeeds when the next right action and its deadline are visible without hunting, when the feed and saved materials stay readable offline, and when the activity log quietly accumulates the record a faculty evaluation needs without the user maintaining it by hand. Because it is uninstrumented and single-user by design, success is simply that it stays in daily use and lowers the overhead of managing where the learning lives, not a number.

9. Rollout

There is no rollout. Cultivate is a personal learning environment and belongs to one learner by definition, so it is not headed for a cohort or a district deployment. Other educators are welcome to fork the architecture for their own goals. Explicitly out of scope: turning it into a shared or departmental platform, which would mean accounts, a backend, and a data agreement, and would convert a tool that collects nothing into one that collects something.

Out of scope

10. Open questions and risks

Questions to settle before the next build

  1. When the page is opened offline and the cached feed is more than 24 hours old, should the product show the old items, show nothing, or show a notice, and does a successful fetch on page open always replace the cache?
  2. Where are the list of RSS sources, the names of the feed tabs and the keywords for each tab defined, and where should an item go when it matches no tab or more than one?
  3. Which three public proxies are used, in what order, and what counts as a failure that moves the fetch to the next proxy?
  4. Is the laptop expected to show the same checkboxes, notes and activity log as the iPad, given that all state is kept in localStorage on a single device?
  5. What do the progress bar and the deadline badges calculate, and which fields and columns does an activity log entry and its CSV export contain?

11. Roadmap

If Cultivate grows it will be small, optional tinkering, never a platform: a quick add-a-resource input, and an export of all local state so a cleared browser cannot erase the notes and the log. Anything larger, accounts, a backend, or sharing, would cross the no-data line the tool exists to hold, so it stays off the map on purpose.