Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LicenseFit

Multi-state CE and PDH compliance, computed. Live: https://android-tipster.github.io/licensefit/

Every continuing-education tracker on the market logs your hours. LicenseFit evaluates them: it takes one pile of activities and asks each licence's rulebook, separately, which of those hours that board will actually accept.

That is the job professionals with reciprocity currently do by hand. In their own words:

"You'll need multiple templates if you have reciprocity anywhere, due to the different credit requirements and staggered reporting periods. It can get complicated." (architect)

"I used an Excel sheet for years to keep track of licence number, renewal dates, PDH requirements. After a while though, this became so unwieldy because of all the overlapping dates and PDH requirements." (professional engineer, 20+ states)

"The tricky part isn't so much the hours, it's the timing of when you take the courses so they fit in the timeframe they need to be in." (architect)

"None of your CEUs count during this first partial year. They act like it's a gift that you don't have to worry about those yet. But they also won't accept them." (speech-language pathologist)

What it actually computes

For every licence, against its own rulebook, for the reporting period you are in:

  • Window eligibility. Hours earned before the licence was issued, or outside the reporting period, are refused with the reason named.
  • Initial partial period. Some boards reject everything in the stub period before your first full cycle. Turn that on and the engine tells you an hour is worth nothing before you pay for it.
  • Subject floors. A minimum inside the total, not an addition to it. Carryover can satisfy the total but never a subject floor, which a plain hours count gets wrong.
  • Delivery-format caps. "At most 12 self-study hours." Caps fill chronologically, so a later course is cut to the remaining headroom and credited pro rata across its subjects, with the parts summing to exactly the credited total.
  • Approved-provider rules. An activity only counts if it carries the token that board demands.
  • Carryover. Clamped on the way in and on the way out, with surplus above the ceiling reported as wasted rather than silently dropped.
  • Prior-period lookback. A period that closed short does not stop mattering because the calendar rolled over. Boards audit the period you already finished.

Then, across the whole portfolio:

  • Dead hours. Hours you sat through that no licence in your portfolio accepted.
  • The coverage matrix. Which hours landed where, and why the rest did not.
  • What to book next. The single course profile that closes the most gaps at once, ranked so that subject minimums (which nothing else can substitute for) come before general hours.

Rulebooks are data, not code

State boards change their requirements on their own schedule and no vendor keeps 50 jurisdictions across 20 professions current. So the engine is the product and the rulebook is yours to edit, with the board's own wording pasted into the notes field.

The bundled rulebooks are patterns, named for their shape, every one marked verified: false. They exist so you can see how each rule type is expressed and fork the closest one. Check your board's current published rule before you trust a number.

Privacy

100% client-side. No account, no server, no analytics, no network calls of any kind. Licence numbers and completion records never leave the machine. The built page is a single self-contained HTML file that works offline over file://.

Free and Pro

Free Pro, $29 once
Licences 2 unlimited
Full evaluation, every verdict and reason yes yes
Dead-hours headline yes yes
"What to book next" planner locked count yes
Coverage matrix no yes
CSV import and export no yes
Printable compliance report no yes
Backup file no yes

Keys validate offline with a checksum. There is no licence server to go down and nothing to renew.

Develop

node test/test.mjs   # 169 assertions
node build.mjs       # writes the self-contained docs/index.html

src/ is zero-dependency ES modules shared between Node and the browser. build.mjs flattens them into one script and fails loudly on a top-level name collision.

Scope

LicenseFit is arithmetic, not legal or licensing advice. It computes what the rulebook you entered implies about the activities you entered. Your board's current published requirement is the only authority.

MIT licensed.

About

Multi-state CE and PDH compliance, computed. Every tracker logs your hours; this one works out which of them each state board will actually accept.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages