Showing posts with label Composer. Show all posts
Showing posts with label Composer. Show all posts

Tuesday, April 7, 2015

Revisiting How the Nonprofit Planner Fits Into My Theme

As I get deep in an actual web application, like the Nonprofit Planner and Grant Generator, it is easy to lose track of what my overall goal is with this blog and my book "The Shape of Knowledge".


My main message is, and has been, that there are basic knowledge patterns that capture important types of reasoning. The pattern I am elaborating on here is a Composer, which captures content once and then configures and reconfigures it into various documents to meet a particular need.

The value of identifying these patterns is that a talented developer, like my partner Steve, can write a powerful program that consumes predefined knowledge artifacts created by domain experts and then generates a web app automatically based on that knowledge. I call this type of program an application generator, or an 'apperator', for short.

At the same time, the identification of knowledge patterns empowers us, the knowledge authors who create the knowledge artifacts, because we can use these 'apperator' programs to build our own custom solutions without writing code.

In this particular case, I built a template using KnowtShare (our online collaboration tool), and made it available to charities for developing and documenting their business plans. The shape of that template, and therefore all plans created using it, is a hierarchical tree model. I call this shape a 'triangle' because it grows from a single root to the many 'leaves' of the tree. This tree/triangle is the knowledge artifact that stores the raw material for the Grant Composer. Each charity will create and maintain its own business plan.



There is a second artifact required, and it is built and maintained by me, as a community resource. That is a table -- a 'square' -- containing the information requirements for particular foundations.

The 'apperator' Steve has written is a Composer that knows how to consume these two types of artifacts: a hierarchical KnowtShare file filled with written information items and a .csv file that contains a matrix of communication targets (foundations) and their preferred order for those information items. Context questions are used to identify which branches of the tree and which rows of the table to use when creating a solution at run-time.

I, as the knowledge author, decided to use business plan information to populate a grant application for foundations, so the actual app that is created is a Grant Application Generator. But the same pattern could be used to collect an individual's CV and generate a customized resume for a particular company -- that would be a Resume Generator. Or a student's transcript and essay questions to generate a customized college application -- that would be a College Application Generator. This makes sense: these examples are very similar to the Grant Generator.

What about something further afield? There's a whole industry evolving around using legal boilerplate and context questions to generate legal documents. The Composer pattern could be used to achieve the same results, and with far less programming.

My last post was dedicated to describing how the very same business planning information used in grant applications can be used to generate other reports and marketing materials. All of these are examples of the Composer Pattern and can be created by the same aperator with only minor tweaks.

The Composer is just one pattern. I have written about the Recommender pattern and the Scoring pattern as well, and I will be describing others going forward.

The challenge, and the opportunity, come from thinking about problem solving at a higher level of abstraction than we normally do.

Most applications are built to solve a particular problem. The IT team interviews their customers to determine the functional specifications for an application they want built. Then the IT people go off and build it, checking back in periodically with the customers to make sure they're still on track.

Typically there is a deadline looming, and everyone is focused on the problem at hand. No one is interested in investing time (and money) in designing a meta solution that will make the next problem easier to solve. In fact, if programming is paid for on an hourly basis, there is a disincentive to look for the patterns that will make application development more efficient. But as knowledge authors, and as problem solvers in general, there are many benefits to identifying and harnessing new patterns.

Knowledge patterns only become visible when you are exposed to many different but similar problems, and when you look for them. It also helps to have a vocabulary and a mental framework that make it easier to discuss the patterns you sense are emerging. My goal is to contribute to the creation of those foundational tools, and to create real world examples that will stimulate discussion.

Tuesday, March 3, 2015

Other Nonprofit Composer Opportunities

The first Composer we are building for the NPO (Nonprofit) Network, which is what I am now calling the website I want to build, is a Grant Application Generator. My last posts have been dedicated to chronicling the process I went through to design this Grant Composer. But the Strategic Planning information that we collect with the NPO Planner has value far beyond grant applications.

The NPO Business Plan has strategic information, such as the organization's purpose, mission statement and strategy. It has high level financial data. It also has program information, such as program descriptions, volunteer information and even stories that can be used to 'sell' the program to potential donors and partners. These types of information can serve as high quality raw material for many different communication pieces.


The role of a Composer is to configure information, stored in what can be thought of as an 'information catalog', into a form that meets a particular set of needs. The Grant Application Generator configures business plan information into a grant application that meets the submission requirements of a particular foundation. The same raw material could be configured to create reports for Board members, handouts for volunteers, brochures for potential donors, even public websites.

The current business plan model contains only text and numbers, but it will be expanded to include images. This extension is important, because visuals are essential in certain media, such as brochures and websites.

Professional templates will be developed for different communication vehicles, with much more extensive formatting than the Grant Generator, which is designed to replicate a completed questionnaire. Often the content of the Grant Generator is cut-and-pasted into an online form, so the main goal of its formatting is simplicity and clarity, not beauty. The formatting of Composers for printed documents, especially marketing documents, will strive for professionalism and attractiveness.

Once templates are created, we will create context dialogues that ask for important parameters, such as which program should be featured in the communication piece. The Composer will know, based on the template, whether the long or short form of the answer is most appropriate.

Ultimately, the Composer will manage the selection and placement of text and images into the appropriate template, based on the information collected in the context dialogue.

The creation of additional Composers will extend the value of the Business Plan content, and save even more time for chronically time-poor nonprofits. It will make available a growing portfolio of communication documents that nonprofits can use to get the word out about the services they provide. The availability of these documents will help in the recruitment of volunteers and donors, and improve the understanding of stakeholders like the Board of Directors and community partners.

Composers provide document automation, and like all automation tools, they free-up people to focus on the tasks that only people can do. In this case, that task is the crafting of the message. The mechanics of document assembly will be left to the computer.

Tuesday, February 10, 2015

One More Input to the Nonprofit Planning System

I said in the prior post that two knowledge artifacts are required to run the Grant Generator: the Business Plan Tree, which provides the content, and the Foundation Sequencing Table, which provides the assembly instructions. There is one other input, a community asset that I build and maintain along with the Sequencing Table, which I call the Nonprofit Element Attribute table.

In the process of building the Nonprofit Planner and Grant Generator, there were certain design and formatting decisions that were left to me as the knowledge author. One was the rules for when to use the green 'completeness' highlighting in the business plan, and the other was how to format the output in the grant application.

First, I'll explain the completeness rules. Remember, in KnowtPlan, when an item is completed it is outlined in green in the note view and highlighted in green in the outline view.


The rule for when to apply the highlighting to the 'leaves' of the tree is simple: when both the short and long answer are filled in, add the green outline. So the completeness rule for 'Organization's Mission Statement' is 'self'; it is highlighted as soon as its 'self' is complete.

The rules for how to roll the highlighting up to higher levels in the tree are somewhat more complicated. That is because some of the higher level notes require their own answers and some are just headers added for organization purposes.

An example of a note that is just a header is 'SWOT Analysis'. It has no content; if you clicked on it, you would not get a popup window asking for a long and short answer. So its completeness rule is 'children'; it is highlighted as soon as all of its children are highlighted. In the screenshot above, SWOT is not highlighted because two of its attached notes have not been filled in yet.

On the other hand, 'Organization's Purpose' is a note that acts as a header but also requires its own content. The charity is expected to fill in the organization's purpose, which should be short and compelling - different from a mission statement, which can be rather wordy. So the completeness rule for 'Organization's Purpose' is 'both': it is considered complete when all of its children are completed AND its own content is filled in.

So one piece of information I have to provide is the completeness rule for every item in the plan. I do this by adding an attribute called 'completeness' and setting its value to 'self', 'children' or 'both'. A second attribute I need to provide for each item is how it should be formatted in the grant application that is generated. This is similar to assigning a paragraph style in Microsoft Word.


Even though we ask for a 'long' and 'short' answer for each question, it is clear from working with the actual content that some answers tend to be much longer than others. For example, contact info tends to be very short. Descriptions of the Board members, on the other hand, tend to be much longer.

So we created two different paragraph styles: 'inline' puts the question header on the same line as the response pulled from the business plan; 'paragraph' puts the header on a separate line. There are also headers, the ones that have no content of their own, that never show up in the generated grant application. Their style is set to 'none'. This became a second attribute.

I'm sure there will be other attributes that will surface as we continue to develop the Nonprofit system. To make it easy to expand and maintain this sort of information, we capture it in a table that is easy for me to change, and doesn't require changes in computer code. The current version of the Nonprofit Element Attribute Table looks like this:



Tuesday, January 27, 2015

The Grant Application Generator

While the process of creating a 'composer' that generates grant applications highlighted the need for charities to do better planning, I have never lost sight of my original intention. Yes, the Nonprofit Planner has value on its own, but the magic of the tool is that it collects important content in a highly reusable form. The first composer we have built to utilize this content is the Grant Generator, and there will be other composers down the road that can use the planning content as well.

In my book, and in prior posts about the Recommender, I talked about knowledge patterns. I have defined a knowledge pattern as a consistent set of knowledge artifacts that can be used over and over again to solve a certain type of problem. The knowledge pattern for a Recommender looks like this:


I've written a series of posts about applying this pattern to build a Whiskey Recommender.

The pattern for a Composer is remarkably similar to that of a Recommender. The pattern for a generic Composer looks like this:


How this general pattern translates into specifics for the Grant Composer is shown here:


Two knowledge artifacts are required for a Composer: a document content tree, which contains the raw material for the document to be composed, and a table, which contains the assembly isntructions. 

In earlier posts, I described the Foundation Sequencing Table, which holds the assembly information necessary to generate a grant application. This table will be a community asset that I will build and maintain. There will be only one version of this table because the information requirements for a particular foundation are the same for all charities that apply for grants.

The content to be assembled, however, is unique to each charity; each will have its own business plan, documented using our planning tool. This plan is an asset that will be built and maintained by the charity.

These two knowtifacts, then, are inputs to the composer application. Like all of our applications, the first step in using the tool is to collect the context for the current situation. In general, we run an application to solve a particular problem in the current moment, and the context is the way we describe our current needs. 

The Grant Application Generator needs to collect two types of context information.


The first type is information that helps the application 'prune' down the input knowledge artifacts to the relevant columns, tree branches and fields. Questions like 'which foundation', 'which program' and 'long or short answers' fall into this category.

The second type is specific information that refers to this particular grant request only, and therefore cannot come from the business plan. Information in this category includes the request amount and date. This information must be collected at run-time so it can be filled in at the appropriate locations in the generated document.

Once the context is collected and 'OK' is clicked, the Grant Generator creates a document that meets the specifications: just the information the target foundation wants to see, and in the order they want to see it. (I've grayed out this charity's info, to protect their privacy.)


In my next post I'll discuss some of the details about how this report is formatted, and how charities can use it.

Tuesday, November 4, 2014

Lessons from the Field: My Initial Experience with the Grant Proposal Content Table

One month ago I began using Microsoft Excel to capture the answers of several small charities in the Content Table that provides the 'raw material' for the Grant Proposal Generator. This Content Table was described in my October 7th post.

As is always the case, the real-life application of tools and ideas surfaces many opportunities for refinement. That is, after all, why we do testing! In the last month I became more convinced than ever of the need for such a tool, and the value it can provide charities. But I learned a couple of important things - one about the need to be filled, and another about execution - that will impact our approach.

First, the need. From the beginning, I approached this as an opportunity to help charities generate grant proposals quickly and easily. We would do this by capturing their answers in a format that could be automatically configured to meet a foundation's requirements. What I didn't anticipate is that the charities would also need help developing those answers. In fact, by removing the impediments to proposal construction, we shone a light more brightly on the quality of the answers that were being assembled.

In other words, by focusing our efforts on capturing the one, best answer to a set of comprehensive, rigorous questions it became clear that those answers often did not exist. Or many versions of the answers existed, in many different documents. What became clear to me is that the first need the charity had was support for the business planning process. Without that, our automation efforts would churn out a high volume of low quality grant proposals.

The second thing I learned is that Excel was not the right tool for this job, primarily because a table is not the best shape for the knowledge we are collecting. The content required is a business plan, and the business plan is best described as a hierarchical model, not a table; it is a triangle, not a square. Here are some of the signs that told me a change in approach was necessary.

First, I love Excel, but it is designed to work with numbers not large blocks of text. Trying to type long descriptions into spreadsheet cells was pure misery! That's okay; I had a more fundamental reason that Excel was not the right tool for the job.

Just as a reminder, this is what the structure of the Content Table looks like:


The table has about 150 rows/questions and two columns for General Operating Support (long and short form), and two columns for each program described in the plan. So, if a charity has two programs they will have a total of six columns.

I said up front that the answers to some of the questions will be the same for GOS and all programs - contact information falls into this category. The mission statement of the organization is another example of an answer that doesn't vary. Multiple columns were required because many other important questions will have different answers for different programs: questions regarding populations served, communications strategy, and volunteer requirements, for example.

It's not until you are actually copying and pasting the same answers over and over that you stop and say 'wait! there must be a better way'. And there is.

The copying and pasting was a sign to me that I was using the wrong shape to capture the necessary knowledge. This was not a list of questions (a 'line') with multiple variations (a matrix or 'square'). It was a hierarchical business plan - a tree or 'triangle'. Some of that information I was copying and pasting many times was high level information that only needed to exist once for the whole organization, and sometimes it was information from a different branch of the tree and didn't need to be duplicated for each 'program' branch of the tree.

I knew I needed to rethink the structure of the content knowtifact. I had picked Excel because it was convenient and familiar, but our own KnowtShare application, which makes it easy to construct hierarchical models stored in JSON (a web-oriented data interchange format) was a better choice. So I went back to the drawing board to reinvent the content knowtifact for the tool we are now calling the Nonprofit Planner. My next blog posts will be about that reinvention process.

Tuesday, October 21, 2014

The Sequencing Table for the Grant Proposal Generator

The Content Table described in my last entry is the 'parts catalog' in the document configurator I want to build. The Sequencing Table will act as the assembly instructions.

The format of the Sequencing Table is similar to that of the content table, because they share a key field: the grant application questions.


Every row in the Content Table must have a corresponding row in the Sequencing Table for that content to be included in the grant proposal that is generated. There are a few headers added for organization purposes, like the "General Questions" text shown here, but they do not show up in the generated proposals.

A number in the column simply means that a given item is in that position in the proposal for that foundation. A blank means the information item is not required. In this way, the column of numbers shows both the subset of information required and the order it should be placed in to meet that foundation's needs.

This column of information needs to be filled out for each foundation that appears in the Grant Proposal Generator. My strategy for capturing this information is to prioritize foundations based on the needs of the charities that participate in our pilot program. I am working closely with the pilot program charities to help them find like-minded foundations that will have a higher probability of granting their requests. I will use the timelines generated from these prospecting lists to prioritize the foundations and schedule their addition to the system.

My goal is, eventually, to have foundations add themselves to the system by providing an intuitive, easy-to-use tool that helps them select the questions they want and arrange them in their preferred order. They will also be able to use the tool to modify their 'questionnaire' at any time. This will be the most efficient way to develop and maintain the Sequencing table, and will guarantee the Grant Proposal Generator is up-to-date with foundations' current requirements.

My next step is to work with my pilot charities to fill out the Content Table.

Tuesday, October 7, 2014

Creating the Content Table for the Grant Proposal Generator

My first challenge was to identify the comprehensive set of information items that would cover all the questions asked by foundations in their grant application forms. I started with the most comprehensive single form I could find: the one used by the Catalogue of Philanthropy, a Washington D.C. organization, to vet charities in the D.C. region for inclusion in their publication.

I decided based on my initial assessment that a table was the right shape for this information, and that I would use Excel to create my table.


I used the questions as the row labels, and created columns for the various types of proposals a charity would typically generate.

When a charity makes a grant request they must declare how the money will be used. Is it for general operating support? Or is is for a specific program or project? If it is for a specific program, which one? Once the intended use is declared, all of the following questions must be answered with that end use in mind. Some of the answers, like contact information, will be the same for both general support and specific programs, but many will be very different. To accommodate this variation, I setup separate columns to represent the various versions of the proposals. A charity will fill out a project-specific column for each project that requires funding.

I also setup separate columns for long and short form answers. This is necessary because many online application forms limit the number of words for each response. The approach I envisioned here is that the long form would be written first - it's easier to be wordy - and then a short, pithy version crafted next.

I started with the Catalogue for Philanthropy questions, which are in white. The next application form I reviewed was the Washington Regional Association of Grantmakers "Common Application", and the incremental questions from that were color-coded in yellow. I proceeded in this way, selecting application forms from large foundations, adding any new questions I found and color-coding them to show the source. As I had hoped, after only a handful of forms, the number of new questions dwindled to one or two per foundation. This consistency is important, because it confirms that an automated approach is truly possible! After reviewing five sources, the total number of information items was 130, with about 50 related to financial numbers.

At the same time I was creating the Content Table I was also working on the Sequencing Table, the other knowtifact required for the Grant Composer to work. I'll describe the Sequencing Table in my next post.

Tuesday, September 9, 2014

Knowtifacts Required for a Composer Application

As I said in my last post, a Composer is basically a document configurator. Two required inputs for any configurator are a parts catalog and instructions for how to select and assemble the parts to meet the current need. To build a Grant Composer, I needed to design those two knowtifacts  -- first, generic versions capable of generating any type of document and second, specific versions suitable for generating grant proposals.

My high level goal for The Shape of Knowledge -- the book, this blog and the Apprentice Systems website -- is to create an environment where people with knowledge can generate useful applications that embody that knowledge without writing computer code. To achieve this, people must be able to document their knowledge in easy-to-use tools like Microsoft Excel. A spreadsheet is perfect for capturing 'square' knowledge like tables. We created our own tool, KnowtShare, for documenting hierarchical triangle-shaped knowledge like decision trees. Between KnowtShare and Excel (Excel can also capture lines/lists and cubes/3D tables) we've been able to document many forms of important knowledge. The knowledge necessary to create a Composer is two tables, so only Excel will be required.

Then our job at Apprentice Systems is to create the Application Generators - - "apperators" - that can consume this documented knowledge and generate simple but useful applications. This method only works because underpinning the whole process is a highly reusable, generally applicable knowledge pattern that provides discipline and acts as a link between the documented knowledge and the app generator. Yes, two tables are all that's required, but the two tables must meet a consistent set of requirements for the Composer Apperator to work. My task is to design the two tables and identify those requirements.

The first table is the Content Table, and it will act as the 'parts catalog' for my configurator. It will be the comprehensive set of questions and answers that the Composer will draw from to generate a grant proposal. There will be multiple columns in this table, representing the various versions of the content.

The second table is the Sequencing Table, and it will act as the instructions for how to select and assemble items from the Content Table. There will also be multiple columns in this table, providing different sequencing instructions for different potential target audiences.

"To meet the current need" -- establishing the context for a particular document -- will determine which columns to use from each of the two tables. When running the Composer the user will select the version of the content and the target audience for that particular document, and the Composer will generate an HTML document that meets those specifications.

This is the general game plan. The next posts will show how this actually works for grant proposal generation.

Tuesday, September 2, 2014

The Composer: a Document Configurator

I said in my last post that one of the challenges a nonprofit faces is that every foundation has their own unique grant application. That's not exactly true.

There's at least one group, the Washington Regional Association of Grantmakers (WRAG), that has attempted to create a common application for their members. It is not unlike universities, who have a 'common app' that many colleges use for vetting students. But if you've applied to colleges you know that 1) many schools don't accept the common app and 2) those who do often have a supplement that asks the additional questions each university still wants answered.

This is because different institutions have different wants and needs. I don't blame them for wanting answers to all their questions; they have the right to know what they want to know before admitting a student to their school. Foundations definitely have the right to know what they want to know before giving another organization their money! In the case of WRAG, out of 100+ members only 18 accept the common grant application.

If you look more closely at the grant application process, you will see that while each application is unique, the questions asked are not. After all, there are only so many items of information you can request from a nonprofit organization. Maybe you can ask a prospective student a wild and innovative essay question to surface his or her true character, but most of the answers a foundation is seeking could be pulled from the nonprofit's business plan, if only they had one.

I felt instinctively that if I could develop a comprehensive set of questions, what would distinguish any particular application would be the subset of information being requested and the order in which the questions were asked. In other words, what I was trying to solve was a classic configuration problem.

Apprentice Systems has solved many configuration problems for our clients. Configuration is a design process where solutions are created by selecting from a set of predefined parts and assembling the parts to meet the needs of a particular situation. We've built systems to automate product configuration (part assembly), process configuration (task assembly) and decision configuration (criteria assembly). What was needed here was a special case of product configuration: document generation. We know how to solve that problem by writing custom code. Could I simplify it into a knowledge pattern that would put automated grant writing within reach of nonprofits everywhere?

After six weeks of research, I feel we are well on our way to making this goal a reality. The knowledge pattern that makes it possible I've dubbed "The Composer". The knowtifacts necessary to generate a Composer are two squares: a Content Table and a Sequencing Table. My next posts will describe my design and creation of these knowtifacts, and the challenges and opportunities for the philanthropic community that have surfaced along the way.

Tuesday, August 26, 2014

Finding a New Pattern: The Composer

I've written a series of blog posts about building a Recommender app by creating the required knowtifacts and dropping them into the Recommender Apperator to generate the app. My example was a Whiskey Recommender, and it was a more complex version of the Recommender pattern I introduced in my book The Shape of Knowledge. Earlier, simpler Recommenders covered in the book were the Beach Town Recommender and the Knowledge Artifact Recommender.

The Recommender knowledge pattern is one I created based on some of the work we've done at Apprentice Systems, building intelligent systems for clients. It is a simple pattern that contains both a triangle/tree (the Context Decision Tree) and a square/table (the Options Table). An optional component is a folder full of images depicting the various options in the table.

Once I defined the Recommender pattern I looked for simple examples I could use to build demo applications. In other words, the Recommender was a pattern looking for problems to solve. Now I am going to switch gears to a new pattern, one I discovered only recently, in the process of solving an important real-world problem. I believe this series of posts will make even clearer the potential of the methods I am laying out in The Shape of Knowledge. I am not espousing these ideas because they are nice to know. I am doing this because I want to make a positive difference in the world.

It was in the spirit of making a positive difference that I visited the local food bank two months ago, to see how I might volunteer. I went ready to pack boxes of food and make food deliveries, but after a brief interview with the volunteer coordinator, she decided I could make the biggest impact by helping them write grants.

Grant writing is actually the process of writing grant proposals to foundations, asking them to grant money to support nonprofits in their efforts. Charities rely on grants for both general support and project-specific support, and many nonprofits could not exist without these funds. Writing grants is a time-consuming and onerous task, and many organizations end up hiring a 'grant writer' to help them in this effort.

There is an industry of individuals and organizations that thrive on the fact that nonprofits have neither the time nor the skills to jump through the hoops of grant writing. Every foundation has their own process, which often includes filling out a custom application -- sometimes in hard copy, often online. The one-off nature of these applications means every grant proposal is usually a cut and paste exercise in Microsoft Word, using past proposals as the raw materials for new proposals. This process can be haphazard and inefficient.

It's also hard to find foundations that are likely to support the request of the charity, based on mission and geographic fit, so database companies have sprung up to meet this need -- for a stiff monthly subscription fee. My personal experience with the quality of the leads coming out of these services would indicate this is not a good investment.

I don't begrudge anyone making a living, but personally I have a problem with so much of a charity's funds being diverted into the process of writing grants. I would like to see the food bank's money going to feed hungry people! I think foundations that support the food bank would want this as well.

I also think that funds should be directed to the nonprofits with the best programs, not the best grant writers. With that principle in mind, I decided that philanthropy is a sector that could benefit from a bit of technology disruption. A high potential piece of that disruption is a pattern I identified by working with the grant writing process -- I call it the Composer.