Scenario: Your team has been hired as a group of technical experts by “FindWork”. Your client –
FindWork – is based in Toronto, Canada. Your team job is to design and implement FindWork’s
database and a corresponding frontend application prototype.
The application is to be a job marketplace. FindWork aims to build a network of skilled
employees and independent contractors that can be resourced to employment opportunities
via their marketplace. Their intended marketplace is to cater for various opportunities across
major cities in North America.
FindWork intends to operate in the following cities:
FindWork has a grand vision, but little technical expertise and needs your help for its database
implementation. FindWork trusts in your team’s abilities and is sure that you will set up a
working prototype for their intended marketplace.
Based on your meetings with FindWork, you have made the following notes:
The CEO has elaborated on the recruitment industry, explaining the challenges in accessing new
employment opportunities. The CEO describes their vision to simplify access to opportunities by
providing a digital online platform that hosts a diverse range of part-time, full-time, casual,
permanent, short term and long-term employment opportunities. His goal is to reduce
unemployment rates in North America by helping individuals utilize their skillsets in an enjoyable
and rewarding manner. On the application, employers will offer opportunities to individual
“Finders” (employees, contractors). A marketplace such as FindWork is necessary to create a
repository of employment opportunities of sufficient size (a critical mass) that can match
employers and finders. The CEO points to estimate that the number of unemployed individuals in
North America are upwards of 571 million and is continuing to rise. FindWork intends to
specialize in “remote opportunities”, in which the finders can access opportunities outside of their
local city and work in a remote and flexible manner online (as opposed to traditional job
marketplaces that connects individuals to location-based jobs).
The FindWork system is to be an online job marketplace that matches employers and finders
from across the continent. The system should allow employers to post jobs and finders to apply
for these jobs (based on what they can and would like to do). Jobs can range from a minimum of
2 weeks for casual/part-time positions to permanent for full time positions. FindWork will benefit
from any transaction that is arranged by charging a fixed fee for the numbers of ads as per the
following model:
The FindWork system is expected to have several user types. These include:
a. Finders who use the system to search for and apply for jobs,
b. Employers who can post jobs and employ individuals,
c. FindWork customer support staff who provide support and can read data about jobs,
5 | P a g e
finders and employers; and
d. Database and site administrators who are able to not only see all such data but
should have rights to update, create and delete data.
These different user types are to be accounted for by the system. FindWork is worried that users
may see data that they are not supposed to see and hence asks you to implement appropriate
permission and security mechanisms.
While the system is centrally organized around the database, FindWork emphasizes that the
users of the system are not database experts and cannot be expected to manually write SQL
scripts. The users need to be able to use the database system through an intuitive and welldesigned frontend application. The application and the database together form the system that
implements FindWork’s key requirements and provide the intended functionalities.
FindWork have articulated their central needs as follows (below). They have also indicated that
they are open to your suggestions to implement different or additional functionalities (if a clear
technical or business rationale is articulated in your team’s final report).
• Finders should be able to create a profile page that includes their basic information (first
name, last name, gender, industry alliance etc.), work experience, credentials (such as
university degrees and professional qualifications), preferences for remote or local job
opportunities and text fields for self-description and career objectives. Finders should also be
able to store their personal contact details and details about their referees (not to be visible to
other users; only available to employers when Finders apply for a job so employers can
contact them or contact their referees as needed). The overall number of jobs and the
average rating (by employers) for their past jobs should appear in a finders’ profile page.
Moreover, the last five jobs should appear with comments and ratings.
• Finders’ “landing page” (after login) should be an overview of current applications (jobs the
finder has applied for) with accepted/rejected/pending statuses, current offers (jobs the finder
has been successfully offered) and top 5 recently posted jobs – with links to the full description
of the jobs. Finders should be able to perform keyword-based and type-based searches for
jobs. For finders that may have priorities around job locations, FindWork considers it would be
nice to be able to filter the jobs shown on the landing page by city preferences set in the
user’s profile (this can be “All” or a specific list of cities).
• Employers should be able to create a profile page as well, similar to the Finders’ page, but
with information about the organization offering the job. Additionally, they should be able to
store bank account details (to be used for auto-payments for use of the platform – not to be
visible to other users!). The overall number of posted jobs and the average rating by others
who have worked in the organization (on their experience working with the employer) should
appear on the employer’s profiles.
• Employers’ “landing page” (after login) is a view in which they can see (or easily go to) their
current job postings (jobs currently advertised), applications for jobs (applications submitted
by finders to current job postings – with an indication of the number of days passed since the
finder applied) as well as any outstanding job offers (job offers awaiting a decision from the
Finder). If a Finder has applied for an employer’s job posting, that employer should be able to
see the Finder’s personal contact details and details about their referees while the application
status is “pending”. Employers should be able to create new job postings (if they have ad
tokens – see purchasing/payment process below for more information). These job postings
can then be seen by finders and other employers. Each job posting should clearly indicate if
the job is a local or remote opportunity and if local, which locations it is based out of.
Employers can “accept” or “reject” a finder for a job from the list of applicants and once a
decision is made on a job, the job posting status should be updated to “closed”.
• Finders and employers can rate each other and provide feedback. Finders should be able to
leave comments and reviews on job postings and employers should be able to leave
comments and reviews on Finders’ profile pages. Each party can raise a dispute with
FindWork about feedback comments. FindWork admins are able to review feedback and
delete it.
• FindWork support staff should be able to see all entries in the database, including contact
information and financial information, but should not be able to edit such information.
FindWork administrators, however, should be able to both see and edit information (including
creating/updating/removing comments, users, etc.).
• A job page should include its description and details. At the minimum, this should include title,
description, location/remote status, application deadline and job salary range (entered by the
employer). An additional feature that would be nice to have would be to show the number of
applications submitted for the job, Once the job is published, finders are able to comment
on/ask questions about jobs and apply for the job. The requester can see applications by
finders and accept one of these applications. As soon as the job is accepted, the job status
should be updated and displayed on the page.
• Both employers and finders should be able to access reports showing all job postings. This
report should be sorted by recently posted jobs by default. However, the report should provide
functions to search and sort for jobs by multiple criteria.
The Purchasing/Payment of ads is organized as follows:
• Employers can pre-purchase ad tokens using set packages (see above). Every time an ad is
posted, the ad token count should be reduced by 1. Once they have utilized all their ad
tokens, employers should be restricted from posting additional ads.
• Employers should also be provided with an option to automatically top up their account with
additional tokens (based on the package they’ve chosen) if their ad token count reaches a
certain number defined by the user.
• Payments should be deducted from the employers’ bank account before adding ad tokens to
their “FindWork” account.
In addition, FindWork considers that employers may want to store job postings “in draft” and
resume editing later. They may also wish to re-activate or re-post past jobs if the job position
becomes available within the organization again – this should make the job available to the public
and “open” for accepting applications. FindWork articulate this as a “nice to have” (not a “must
have”) feature.
FindWork suggests that direct messaging between platform members would be useful. That is,
FindWork would like users to have access to some form of internal messaging system in addition
to email. While email can be used, an internal messaging system would simplify and document
communication between employers and finders (related to a particular job) and would be the
method for employers/finders to contact FindWork support. This messaging platform would also
provide employers with a mechanism to contact Finders that don’t explicitly apply for their jobs.
Again, FindWork says this is a “nice to have” feature.
The system should allow FindWork administrators to have access to internal system user
accounts. They should also be able to manage all Employers, Finders, and FindWork staff
accounts. For instance, FindWork should be able to perform tasks such as disabling of accounts
that violate terms of service or to reset account passwords. FindWork suggests that a dedicated
system administration page or module may be needed.
FindWork is concerned with the range of internal and external users of the systems. Sensitive
information (such as personal contact and payment information) is available in the database
system. FindWork would like to protect the confidentiality and integrity of all data handled by the
database. For this, FindWork expects that you implement security and privacy measures. For
example, secure login/signup should be provided. Login can be secured via various measures,
such as requiring (strong) passwords, automatically logging out of the system (after a certain
amount of time such as one hour), locking accounts after three unsuccessful login attempts or
storing passwords in encrypted (not plain text) form in the database. Data available to users after
successful login should correspond to the roles and rights they have on the database system. For
example, an employer should be able to see/change their own payment information but not that
of others. Security measures can be at the application layer (frontend) or the database layer
(backend). FindWork expects that you implement an appropriate minimum set of security
measures and provide justification for these measures in your report.
FindWork would like to have an audit trail (e.g., the changes made to the password and who
made it) and a security log (e.g., who logged on at what time). This has the purpose of being able
to trace sensitive user actions. This would be a useful but not critical feature for the prototype.
Finally, FindWork are interested in big data and analytics. While there is no expectation for any
implementation in the system prototype, they ask you to conduct research, evaluate the potential
and develop a strategic plan for the use of big data (this can be based on both internal and
external data) at FindWork. Essentially, they are interested in understanding the potential of big
data for their business and which approach they may take in the future to realize this potential.
They have not further specified their requirements and are open for any recommendations by
your team.
Requirements: FindWork expects two key deliverables from your team, a report and an actual
implementation. First, you are to design and implement the data model in Oracle and design and
implement a working prototype of the system using Oracle APEX (or another application that
works with the Oracle database). Second, you are to deliver a comprehensive final report
discussing your solution.
FindWork has indicated that it will consider revised or additional features/functionalities, provided
that your team provides a convincing implementation and articulates the technical or business
rationale in the report. They ask you to clearly state assumptions and provide justifications.