npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

poserver

v1.1.31

Published

Server for JD Bot

Downloads

60

Readme

tjd-poserver

Server for Protective Order Bot

This is a bot server using the Microsoft Bot Server Framework for NodeJs. It is a bot that will

  1. See if it recognizes the user. If so, it will load a userProfile object from a MongoDB instance. If it does not recognize the user as a returning user, it will prompt the user for some basic profile data and save the user's profile.

  2. Ask the user what the user needs, e.g. Family Violence Protective Order, QDRO, Original Answer.

Value-Add

The societal value proposition for this bot vs. a fill-in-the-blank PDF is that it asks the user for details about what's going on and then, based on experience, guides the user to the proper legal action (or inaction as the facts and law may be). For example, rather than ask "Do you want sole managing conservatorship or joint managing conservatorship?" it asks the user about parenting duties, experience in co-parenting, availability of both parents, etc. and then makes a recommendation. If we're going to replace the lawyers with bots, the bots have to be smarter than a fill-in-the-blank form.

Rather than ask the user to create a proposal for dividing marital assets, it produces a better proposal than most attorneys are capable of and does it in about 300 milliseonds.

The commercial value proposition is that it will channel otherwise non-fee-generating, self-represented litigants to the attorneys who want to subscribe to review more complex documents. The clients will pay a lot less than they would have with full service representation. The attorneys will make a lot less per client, but will have a lot more clients.

This same model, implemented by others and operating within a more complicated regulatory context, will have a similar effect on doctors for whom their practice mostly consists of office visits. E.G. my cariologist could be replaced by a bot and a vending machine that scans insurance cards with only about a weekend's worth of work by a distracted programmer.

Implementation

It implements a library of dialogs that the user traverses under the guidance of a state machine. It uses Google's geolocation rest service to validate addresses. It uses recognition rules to determine the type of court and court number from a combination of county and cause-number inputs. The recognition rules provide for the translation of the court number from a coded value (e.g. "Z" in Dallas County) to an actual court number (Z = "256th" in Dallas County). If there are no recognition rules for the particular county+cause combination or if the user insists on typing in an unrecognizable cause number where we do have recognition rules, then the user is prompted for the type of court and the court designation or number.

Contextualized Information Gathering

One of the principals behind the bot's design is that people may not want to disclose a ton of personal information right away. For that reason, it gets started with the barest essential information then asks for more as it needs more. This gives the user an understanding of why the user is being asked certain questions. As the bot knows more about the user, it asks fewer and fewer questions.

Remember

This is not just a channel into the human sales force or an order page. It is designed to completely satisfy the legal needs of about 20% of all litigants. With the implementation of the attorney review channel, this bot will serve the full legal needs of 25% to 50% of all litigants and free up a huge number of attorneys to go do something useful besides fill out forms.

External Services Used

  1. Google.com to validate street addresses and lookup counties.
  2. Stripe.com to handle credit card payments.
  3. Authy.com for SMS-based 2FA.
  4. Mongodb for document storage.
  5. Microsoft Botbuilder API to handle the interaction between the client application and my server code.
  6. Microsoft LUIS applications to handle conversational "menu" and navigation intents (e.g. "go back").