Search engine rankings for Social Care: the 001 Taxi Problem

If you’re more than 20 years old you will remember the annual delivery of your local telephone directory; the thud as it lands heavily in your hallway, often with a crumpled cover, a testament to the efforts of the delivery boy to fit the tightly published pages through your letter box. For me, this directory was my first exposure to search engine rankings, with its wonderfully named 001 Aardvark Taxis vying angrily with 001 Ace taxis for first place in the listings.

Pigot’s directories, published in 1814, were the first widely available English reference source for everything from tradesman to public houses. After Bell’s invention of the telephone in 1876, directories became common, first to the secretaries of the nobility and then to the middle classes.

Coming First

The 001 Taxi problem is as alive today as it was in phone directories of my youth. Today it manifests itself in the ‘war’ of search engine rankings – a continuous cut and thrust between businesses seeking to steal a march on their competitors whilst the search engine developers try to outwit the tricks of web site developers. For some businesses, failing to appear on the first page of Google’s search results means anonymity and business failure; paying for adwords is expensive.

I became acutely aware of this problem in our recent development of Social Care information and advice portals. These portals, legal cornerstone of the Government’s 2014 Care Act, require local authorities to establish and maintain an information and advice service in their area. At OCC, we have sought to develop a smart ranking system that works on keyword relevance (i.e. the prominence of the word in the service profile). However, service providers may list keywords several times in their description to optimise their profile which we don’t want. We wish to rank services by relevance so if the keyword (or thesaurus equivalent) is found in the description once it should get the same relevance points as finding it 10 times. Google’s famous Page Rank algorithm is not available to us in the Social Care space, so we need to find another way to help our users find the highest quality information for their search.

To display our results we have introduced a secondary search ranking facet based on service profile quality score. The idea is that we establish a scoring mechanism for service profiles similar to the relevance score; points are awarded for logo, accreditation, quality of description, images, contact details, etc.

However, this still leaves a very serious problem. Serious for service users, providers and Local Authorities, namely that if you type in the same keywords you will get exactly the same search results in the same order every time. This is a reality – most people will use the same words to search for services: words like ‘Home Care’ or ‘Meals on Wheels’. So the same providers will always come first in your list; the same providers last. This is bad for creating a diverse and competitive market and bad for citizen choice. The reality is that well over 20 appropriate residential care providers may all have scored somewhere between 98% and 100% in our ranking algorithms. The small percentage differences are vital for the order of results but we surmise that they are trivial in terms of the actual suitability of the service for the citizen.


One solution – randomization. We could take results that have scored almost the same (and we can define what ‘almost’ means in percentage terms) and then randomize the results. All those providers that have scored ‘almost the same’ are presented in a different order each time you search – the actual order being determined by a randomization algorithm.

This simple technique helps to create a diverse market; shares business across a range of suitable providers and helps ensure a vibrant and competitive market. There is no incentive for Providers to give themselves silly names; no more 001 Aardvark Care Homes. However, we’re worried about the impact on usability – how many search engines do you use where the results come out different each time for the same search? If you send your search link to a friend and tell them to look at result #2, they will see a different service in that position.

If we’re going to use randomization to help create a vibrant Social Care market we’re going to have to make sure everybody understands what we’re doing. Thoughts on a spare page of an old Yellow Pages please.

Merry Christmas from the ContrOCC Development Team

ContrOCC Christmas Wordle

This picture was generated based on the most common words in the user guide for the upcoming ContrOCC version 8 roadmap release.

Client, Service, Care and Package are seen to be important as are Financial, Payment, and Charging. More prosaic common words are dictionary, date, default, report, see, and used.

Our thanks to the entertaining which made this fun and easy to do.

The rise of self-service social care

Imagine you’ve been asked to think up a really difficult technical challenge. Well how about delivering health and social care on line, using self-service portals, to frail and elderly citizens?

For good measure, imagine that those people need your services to be as simple and familiar as Amazon or Google and that the people funding you are Local Authorities, facing budget cuts in the order of 60%. Oh and you have to ensure accessibility – from PCs, tablets, mobile phones, and smart TVs and support off-line working in rural communities. It could be described as a perfect storm.

Care Act banner

To encapsulate the challenge, the Association of Directors of Adult Social Services, ADASS, has published a paper on “the development of online services for information and advice supporting the Care Act 2014”, which gives an excellent overview.

Self-service has to succeed

We need to succeed with this challenge if we are to enable individuals, and their carers or agents, to help themselves to plan for and obtain timely care, mainly through resources in the community and care suppliers. Those with high needs will be able to use tools to support a dialogue with the council around self-assessment and start the process towards council funding or applying for care accounts.

The reality is that only self-service will allow citizens to continue to receive quality support with all the well versed pressure on health and social care budgets – our aging society and the increase in administrative duties on Councils brought about by the Care Act, estimated at a 60% increase, on average, per Council.

The paper highlights that, where a person applies for council services or a care account, the information should transfer to the council’s back office system through an “open API“. This is vital, if we are to avoid the age old dilemma of people filling in information online but then have to tell their story over and again to different professionals. It also discusses the Government Digital Service principles behind good design of websites. For example, there has been a tendency to use pictures to make social care sites feel friendly but the paper points to modern research that shows this does not work.

The potential savings of self-service portals have been analysed by Socitm who have shown the relative costs of different forms of contact:

  • On-line information contacts cost £0.09
  • Telephone contacts cost £2.59
  • Face to face contacts cost £8.15

It’s a massive difference, and one that could mean millions of pounds of cost, or savings, depending on how councils choose to approach this challenge in the next few years.

How can self-service make a real difference, both for stretched Local Authorities and Citizens?

One example is triage using our Online Financial Assessment tools – with simplified needs and financial assessment questionnaires to help people see whether they are likely to be funding themselves or whether they might qualify for supported care.

Another example is for council IT systems such as ContrOCC to accept online self-referrals from citizens, completing as much workflow as possible before handing it over to the council.

The paper also makes reference to OCC’s work on micro commissioning or mini-tendering, where authorities are enhancing their directories so that they can send out a package of needs and ask suppliers to come back with priced offers to meet them.

The paper makes a number of references to our work at CarePlace and one to East Sussex 1Space. Not many other eMarketPlaces get a mention so we are really proud to see the collaborations we have with our customers clearly at the forefront of the challenge.

Oxford Computer Consultants are now listed on the G-Cloud CloudStore

G-Cloud Logo

We are delighted to have been successfully listed in the online G-Cloud Catalogue for our services and products. G-Cloud is a collaborative Government framework for use by UK public sector bodies, who can easily access pre-approved cloud computing services via the CloudStore.

OCC have been approved to supply the following Services:

We are experienced in providing services to more than 70 Local Authority sites.

Our Products are also available via G-Cloud:

ContrOCC – Social Care Contracts and Finance Software as a Service – A complete contract management and financial assessment system with a secure online portal. ContrOCC has been developed in collaboration with care managers and social workers.

eMarketPlace for citizens – find and procure services online – OCC MarketPlace provides a resource directory for Local Authorities which enables citizen’s to find and procure services online. The West London Alliance CarePlace system is a case study.

PSOCC – Client Case Management Software as a Service – OCC designed and developed PSOCC to enable support providers to manage caseloads and improve support delivery.

There is more about our services and the sectors we work with on our main website. Our products are described on our products website and via the CloudStore.

ContrOCC Hackday II

After the success of our first ContrOCC hackday, we’ve decided to hold one every four months, to give the team a day to work on things that they think would make ContrOCC a little nicer in some way, for users or developers.

For all the thinking behind our product hackdays, have a look at our summary of the first ContrOCC hackday.

The day’s projects

Alan upgraded as many of our Visual Studio solutions as possible to VS 2012.   2012 improvements include better support for working with JavaScript, out-of-the-box support for the NuGet package manager, the long-awaited “collapse all” feature in Solution Explorer, and (his favourite) much better support for dark backgrounds in the code editor.

Basel created a new method for managing foreign keys on database tables, allowing us to drop or re-add them with ease via a new stored procedure.

Chris G looked at generating C# wrappers for SQL stored procedures given a directory of SQL files.

Chris started off by looking at using Irony or ANTLR to generate Lexers and Parsers for the SQL but decided these were overkill for what he could achieve in one day. He then put together a rough-and-ready parser in C# to get the name of the procedure, and the name and data type of any parameters. This was then used to produce a file containing a C# class with properties for each parameter and a method for calling the stored procedure using the existing methods in ContrOCC.

Chris is now interested in looking at automation, as well as supporting macros and more complex SQL formatting.

Chris H developed a prototype of bookends for use in performance logging. These record the total duration of an action performed by a ContrOCC user, such as viewing a client. Bookends provide a more reliable measure of the performance actually experienced by ContrOCC users than the individual SQL execution times, and enable log analysis of C# performance problems.

Development of a production quality version of this functionality is highly desirable, although it poses significant technical challenges. In the meantime the prototype as it stands has already given us some interesting performance information.

Julian set out with the aim to reduce the the effort involved in building a new version of ContrOCC; in particular, the need to use SQL Server Management Studio to search the SQL code base for various possible faults. He identified RegEx as the most appropriate tool and added a couple of functions to ContrOCC’s CLR library and added a new check to our check-schema stored procedure. The benefits of this approach are that

  • The object definitions in the database are tested – not the files in source control, which is important given that some objects are generated programmatically.
  • It’s done by the automated testing, so faults will be picked up as and when they happen.
  • The person doing the build has less to do.

Julian now plans on looking at improving the performance of his additions and is looking for other potential uses.

Mark has been looking at converting the Provider Portal user interface tests from Selenium IDE to Selenium WebDriver. The aim is to create a suite of Visual Studio unit tests that can either be run from Visual Studio or from a script for automated testing.

Mark has succeeded in setting up three Visual Studio unit tests that run our simplest UI test in Internet Explorer, Firefox and Chrome. These tests will return errors that say precisely what check failed and on which page. The relevant Selenium DLLs are incorporated into the ProviderPortalUnitTests project and there are (currently) no special configuration settings required.

There were a few issues:

  1. There is an export option in the Selenium IDE that auto-generates C# code corresponding to an existing IDE test. Most of that was thrown away because it was full of unhelpful code and assertion failure text. Instead, Mark created a utilities class that wraps the Selenium commands and returns meaningful exceptions.
  2. Windows Firewall throws up a dialog whenever the Internet Explorer and Chrome tests run. This is because they require an executable server component that has to be in the test directory so that the client driver can find it. There is a workaround, which is to add the path of the server component to the PATH variable on the computer.
  3. The Internet Explorer test has a weird configuration requirement for IE – “Protected Mode” must have the same setting (either enabled or disabled) for all security zones.
  4. Tests would occasionally fail randomly because the test would try to look for an element before the page had finished loading (the “ClickAndWait” command doesn’t seem to exist in WebDriver). Managed to fix this by setting an intrinsic polling period when searching for page elements.

Whether Selenium WebDriver is the correct technology to use for UI testing is still open for discussion but it’s clear that automated testing can be improved and new tools are cropping up to help.

Matthew aimed to make the ContrOCC Data Maintenance tool simpler to use, especially when working with very large and complicated CSV files.

Key features to implement were:

  • Sorting and filtering of rows
  • Finding columns easily
  • Ability to duplicate rows
  • Managing and creating CSV files easily

As there’s now a lot more stuff on the screen I’ll use a diagram to illustrate the changes.

ContrOCC Data Maintenance tool

ContrOCC Data Maintenance tool

For the future Matthew is planning on adding a ‘History’ of the last 10 files that were opened, as sometimes it is necessary to switch between different files. He’d also like to add searching for files and columns based on partial names, such as typing ‘Setting’ in the file or column filter boxes would show results where ‘Setting’ appears in the name.

Mike looked into seeing how feasible it would be to make a significant volume of the ContrOCC documentation/information usefully searchable by developers. Mike wanted to make it as easy as possible to find all the relevant documentation he needed when working on ContrOCC. Mike looked at an indexing and searching feature using the Apache SOLR and related tools. The next step would be to go forward with an implementation to index the documentation in our source control system and ContrOCC wiki pages.

Steph aimed to improve the usability of our internal report preview tool. She wanted to add the ability to paste multiple lines of text from the clipboard into the report SQL text box as this is how it is presented on the ContrOCC troubleshooting menu, and to save a list of most recently run reports as developers often work on several at a time. Steph managed to get these features both working independently in a test program, but ran out of time before I could combine them into a single control and integrate them into the main project, which she’ll save for a quiet moment or the next hackday.

Tom investigated compared the impact of handling auditing by using SQL Server Service Broker to handling it during trigger execution. The aims were twofold. Firstly, to gain some experience in using the service broker, since it might prove useful to us as a tool in our performance arsenal. Secondly, on a hunch that although we don’t perceive auditing to be expensive, there may be a knock-on cost transaction durations and sizes caused by processing auditing information inline.

By the end of the day I had managed to compare three different database configurations whilst performing a complex procedure:

  1. Baseline time with no auditing: 11m 29s
  2. Time with auditing via triggers: 16m 24s (+42.8%)
  3. Time with auditing via service broker and a single log table: 16m 15s (+41.5%)

So there isn’t a clear winner; however there was only had time to gain a pretty limited understanding of the basic principles of the service broker and there may be better ways of using it. This suggests that this is an area that would require considerable investigation time if we were to better evaluate the options. For auditing, the argument is not at all clear that this would yield benefits.

Ulen decided to compare the use of the SNAPSHOT isolation level to NOLOCK. Most of the documentation focuses on the disadvantages of NOLOCK and there is very little that goes into any detail about SNAPSHOT – or most importantly what the risk and overheads are for changing from one to the other.

Ulen wants to take this forward and put in some more dedicated research, so that he can produce a technical paper on the subject for further discussion. Sadly he ran out of time as he was bogged down following an example he found online which quite simply didn’t work the way it was documented! Ulen suggests taking suggestions to move to an Optimistic locking policy with a pinch of salt – they could simply be fans of other database systems who don’t agree with the tried and tested Pessimistic Locking that Sql Server provides.

OCC Sales Success – 1st quarter 2013

Our 1st quarter of 2013 has been a resounding success. We’ve had 9 new sales of our products, thanks to our dedicated team of directors, implementation managers and help desk all pulling together.

With every new sale comes a new implementation, which we undertake in partnership with our client; migrating data, installing software and training our new users.

We’ve also recently won a major contract to deploy PSOCC, our provider system, to manage Day Centre services. For this contract, we’ve extended the features of PSOCC for staff to plan a centre’s activities, schedule programmes and record attendance, enabling managers to maximise the staff’s time and the centre’s use.

Our successful, flagship products:

ContrOCC – social care contract management and financial assessments
OCC MarketPlace – managing individual budgets, finding suitable services, and online purchasing
PSOCC – system for providers of services to Local Authorities

ContrOCC Developer’s Hackday

We recently held the first ContrOCC Developer’s Hackday, which was all about giving the team some time to work on things that would make the product a little nicer for them in some way. For example:

  • A development task or bug that’s getting on their nerves but which isn’t getting scheduled
  • Improving developer tools
  • Experimental development which might or might not work
  • A prototype solution or toy program to demonstrate an interesting idea
  • A spec or mockup for something more complex you’d like to work on
  • A collaborative project with other developers

As well as improving life working on ContrOCC, we hoped that the day would be a welcome break from our scheduled plan, and with everyone taking the day off together there would be the chance for a bit more interaction than usual with people taking an interest in what everyone was tinkering with.

We decided that the team would decide in advance what they wanted to work on, to help give as much time as possible on the day to implementing their ideas. The only ideas that had any sort of vetting were ones that proposed committing code to official repositories or tools.

The team’s technical leads were available all through the day for questions, discussions and advice, and the whole team had lunch together in our pool room to chat about what they were up to.

The day’s projects

Alan looked at improving the status summary page for ContrOCC’s automated tests, switching to an HTML grid view with on-hover result details.

Chris developed a prototype version of “Did You Know?” tips to be displayed when ContrOCC starts. We have a long list of functionality we’d love to draw users’ attention to, and this would be a great way to introduce users to features they may not have known about.

Chris' prototype of a "Did You Know?" tip.

Chris’ prototype of a “Did You Know?” tip.

Jo worked on improving ContrOCC’s help documentation; tackling some problem pages and researching how we might improve the help-generation tool we use in order to create help that is more tailored to a user’s specific needs.

Julian looked at how we could adapt our database performance monitoring tools to help us better record and analyse performance information. He identified the most useful data to monitor and created SQL scripts to allow us to quickly set up and run the tools, and analyse the results.

Mark researched improvements to ContrOCC’s web service technologies; looking at how feasible it would be to upgrade from Web Services Enhancements to Windows Communication Foundation.

Mike developed a tool to extract details from ContrOCC’s database schema and visualise them in a web browser. He used HyperTree from the JavaScript InfoVis Toolkit to provide an interactive view of ContrOCC’s database tables and relationships.

Mike's visualisation of the ContrOCC database.

Mike’s visualisation of the ContrOCC database.

Steph spent her day cleaning up compiler warnings from the ContrOCC C# projects, allowing her to enable the “treat warnings as errors” build setting so that we can ensure no new warnings sneak in.

Tom worked on using the Microsoft Entity Framework tools to reverse engineer a layer of ContrOCC object model C# classes that maps to the database schema. Whilst the relative immaturity of the Entity Framework tools alongside the complexity of the schema meant that generating a UI from the model layer was not possible for the system as a whole, Tom did identify some sub-sets that would be good candidates. Tom also noted that probably the best use for Entity Framework would be in replacing Test Perform Actions – with C# wrappers providing intellisense.

Tom's ContrOCC Entity Framework.

Tom’s ContrOCC Entity Framework.

Ulen looked into improving the automation of ContrOCC’s component tests, which currently involve a fair amount of repetitive effort. He got a prototype up and running and plans to continue work on it as part of his training time.

We think the day was a real success and aim to hold them regularly.

OCC’s Conference Season

OCC has been extremely busy during the conference season promoting our contract management and financial assessment management product, ContrOCC.

Nick Warner and Damian Payne were at the Association of Directors of Adult Social Services (ADASS) Information Management Conference held at the Hotel Russell, Bloomsbury, in October.

Later the same month, Damian Payne, Chris Smith and Keith Musson represented OCC at the National Association of Financial Assessment Officers (NAFAO) meeting at the Macdonald Burlington Hotel, Birmingham, where Damian demonstrated the new ContrOCC Self-directed Online Financial Assessment module (SOFA).

Also in October, OCC attended the National Children and Adult Services Conference (NCASC) 2012 at the Devonshire Park Centre in Eastbourne as LiquidLogic’s partner in integrated case management and finance systems for children’s and adults’ social care. It was an opportunity for OCC to meet up with old friends and make some new ones, and chat with any number of interesting people about the challenges of social care finance.

Here are some pictures of the team hard at work at these events.

For information on ContrOCC or any of our products please visit our Local Government site.

ContrOCC User Group Meetings – May 2012

We were delighted to welcome representatives from some 25 Local Authorities to Oxford this May for two more successful and enjoyable User Groups for ContrOCC , our complete contract management and financial assessment solution for social services.

The meetings, one for the Children’s system and one for the Adults’, took place just down the road from our offices at Trinity College. Trinity has some of the most beautiful gardens and buildings in Oxford, and it provided us with a stunning backdrop and equally stunning weather – you could almost believe summer was here at last.


Inside, it was two busy days presenting recent product enhancements and discussing upcoming functional and legislative changes.

As always, we encouraged our users to drive the agenda, and they took it to some expected and less expected places. This year’s hot topics turned out to be reporting, implementation, online assessments, and, not for the first time, personalisation.

Attendees emphasized how much they valued the opportunity to learn from each others’ experience, and to facilitate this we have set up a ContrOCC Social forum. This will allow our users to share their thoughts with each other and with us between User Groups.


New look PSOCC being rolled out to service providers

PSOCC V2.2  is now rolling out to OCC’s PSOCC users.

The new look PSOCC improves the way support providers can securely share information and workloads.

New reports let users more clearly see the support that’s needed and the outcomes achieved.

The improved screen layouts provide the adaptability needed by new commissioners whilst retaining the integrated SP reporting still required by some LAs.

PSOCC is one product in OCC’s range of software solutions designed for the Support Providers, enabling them to utilise their information to improve management, satisfy audit inspections and support their applications for new contracts and reducing the reporting overheads required of SP services.

For more information on PSOCC and OCC’s other product visit us at