mikeymicrophone / commissulator

Commissulator is a set of tools that help Real Estate Agents working with Citi Pads in Manhattan streamline their paperwork.
Other
3 stars 4 forks source link

Add an interface for a client to inform us about their social media profiles during their registration. #6

Open mikeymicrophone opened 5 years ago

mikeymicrophone commented 5 years ago

Commissulator helps us manage paperwork for each client that we show apartments to. A year or two down the road, many of those clients will come back to us when they are looking for their next lease or their first condo. One of our techniques for lengthening and strengthening those relationships is to engage with our clients via social media.

We will therefore be collecting identifying information during our registration process. Registration is performed via a web form that we fill out using an iPad. For certain profiles (Twitter, Instagram, Medium, Reddit) , a moniker or handle is the best thing to collect. For others (LinkedIn, YouTube) it will probably have to be a URL. In some cases (Facebook, Pinterest) it could be either one of those, or both.

This interface should encourage and enable the client to add as many accounts as they wish to their registration. It will likely be one of the last steps in their registration, after they've submitted the details of their apartment search, and are waiting for us to print out the resulting documents. However, we could also hit them up early in the process, and see how many of their links we can get.

mikeymicrophone commented 5 years ago

For instance, one possible interface would be that we prompt them for their Instagram username right after collecting their name and email, and then after they submit the form, we'd show something like "We love your Instagram. Now show us your other stuff." And prompt for Facebook, Pinterest, YouTube, Reddit, Twitter and so on.

mikeymicrophone commented 5 years ago

The back end for storing this data and associating it with our registered clients is already prepared. The form in use has an established technique in use that would make it possible to submit an arbitrary number of social accounts along with the registration data. It would also be totally plausible to submit multiple accounts from an individual service. For instance, a client could give us their personal Twitter, their professional Twitter, and their company's Twitter.

mikeymicrophone commented 5 years ago

This is how the registration card currently looks when the client gets the iPad. img_9fca378fec3c-1

mikeymicrophone commented 5 years ago

Adjustments to that design will be accepted if you chose to make it nicer. However, the main focus of this task is to enable the client to add multiple social accounts. As written above, it's possible that the ideal UX for generating multiple submissions would be to prompt them after they finish submission of this form. In fact, we can continue prompting them over and over if that's the best way to get a response in this circumstance. We could prioritize by first getting Instagram, then asking for Twitter, then Facebook, the LinkedIn, etc, if that was ideal. Or perhaps we first ask for one, then the next three, then the next 10. We're willing and able to try a clever strategy and see how the results come out.

mikeymicrophone commented 5 years ago

Here are the templates that are rendering that form. https://github.com/mikeymicrophone/commissulator/blob/master/app/views/home/registration.html.erb https://github.com/mikeymicrophone/commissulator/blob/master/app/views/home/_registrant.html.erb

Here is the controller that saves all their data. https://github.com/mikeymicrophone/commissulator/blob/master/app/controllers/home_controller.rb#L15-L55

Here is the model that the social accounts will be persisted in. https://github.com/mikeymicrophone/commissulator/blob/master/app/models/social_account.rb https://github.com/mikeymicrophone/commissulator/blob/master/db/schema.rb#L397-L407

mikeymicrophone commented 5 years ago

There is a system vaguely similar to this phased addition premise that's already implemented. When the form appears, there is space for two registrants. If they select 'Three Bedroom' or 'Four Bedroom', the number of registrant spaces shown and the number needed are sent to registrant_add and handled by this template. https://github.com/mikeymicrophone/commissulator/blob/master/app/views/home/registrant_add.js.erb If they update the number of occupants that will be living in the apartment, we can also render additional registrant partials at that point. https://github.com/mikeymicrophone/commissulator/blob/master/app/assets/javascripts/registrations.coffee#L13-L34

The upshot is that the form elements are rendered with an index that the controller can use to differentiate them from one another.

It would also be rather feasible to submit them asynchronously one after the other, rather than sending them all in at once with these indices. However, they'd have to be associated with the correct client, so the registration form would have to be refactored to ensure that the client id was already established (e.g. that would have to be asynchronous as well). In the case of social accounts being collected after the form is submitted, this wouldn't be an issue (although we'd have to distinguish between the clients in situations where the registration captured multiple registrants, as in the case of a 3-bedroom where all three people are registering).

Another approach I'm open to considering is using GraphQL to deliver the data to the server (rather than crafting the HTML elements to be differentiated by numbered indices). It would be nice to have the objects all treated as nested attributes, rather than explicitly handled by code that's expecting a certain group of strong parameters.

gitcoinbot commented 5 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 0.1 ETH (20.45 USD @ $204.49/ETH) attached to it.

gitcoinbot commented 5 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 3 months, 2 weeks ago. Please review their action plans below:

1) jaikanthjay46 has started work.

Find how others have implemented it, asking for an exhaustive list of data will make the user furious,

Probably find a profile and then the linked profiles through auto fill them if possible

Lookup relevant API’s for that and also ability to add manually profiles

Learn more on the Gitcoin Issue Details page.

mikeymicrophone commented 5 years ago

I'm potentially moving the assets from sprockets to webpacker so let me know if you've entered the styling phase. It sounds like you were starting with some good research topics.